diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 4fa5ae6a6..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: πŸ› Bug Report -description: Report a bug or unexpected behavior -title: "[Bug]: " -labels: ["bug"] -body: - - type: markdown - attributes: - value: | - Thanks for reporting a bug! Please fill out the information below. - - - type: textarea - id: expected - attributes: - label: Expected Behavior - description: What did you expect to happen? - placeholder: I expected... - validations: - required: true - - - type: textarea - id: actual - attributes: - label: Actual Behavior - description: What actually happened? - placeholder: Instead, what happened was... - validations: - required: true - - - type: textarea - id: reproduce - attributes: - label: Steps to Reproduce - description: Provide steps to reproduce the issue - placeholder: | - 1. - 2. - 3. - validations: - required: true - - - type: input - id: sdk-version - attributes: - label: SDK Version - description: What version of the SDK are you using? - placeholder: e.g., 1.0.0 - validations: - required: true - - - type: dropdown - id: java-version - attributes: - label: Java Version - description: What version of Java are you using? - options: - - "17" - - "21" - - "25" - - Other (specify in additional context) - validations: - required: true - - - type: dropdown - id: regression - attributes: - label: Is this a regression? - description: Did this work in a previous version? - options: - - "No" - - "Yes" - validations: - required: true - - - type: input - id: worked-version - attributes: - label: Last Working Version - description: If this is a regression, what version did this work in? - placeholder: e.g., 0.9.0 - validations: - required: false - - - type: textarea - id: context - attributes: - label: Additional Context - description: Add any other context, logs, or screenshots - placeholder: Additional information... - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index fcafc8308..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask a question - url: https://github.com/aws/aws-durable-execution-sdk-java/discussions/new - about: Ask a general question about Durable Functions Java SDK diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml deleted file mode 100644 index cdd8e3e4d..000000000 --- a/.github/ISSUE_TEMPLATE/documentation.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: πŸ“š Documentation Issue -description: Report an issue with documentation -title: "[Docs]: " -labels: ["documentation"] -body: - - type: markdown - attributes: - value: | - Thanks for helping improve our documentation! - - - type: textarea - id: issue - attributes: - label: Issue - description: Describe the documentation issue - placeholder: The documentation says... but it should say... - validations: - required: true - - - type: input - id: page - attributes: - label: Page/Location - description: Link to the page or specify where in the docs this occurs - placeholder: https://... or README.md section "..." - validations: - required: true - - - type: textarea - id: fix - attributes: - label: Suggested Fix - description: How should this be corrected? - placeholder: This could be fixed by... - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index f4b648b92..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: ✨ Feature Request -description: Suggest a new feature or enhancement -title: "[Feature]: " -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to suggest a new feature! - - - type: textarea - id: what - attributes: - label: What would you like? - description: Describe the feature you'd like to see - placeholder: I would like to... - validations: - required: true - - - type: textarea - id: implementation - attributes: - label: Possible Implementation - description: Suggest how this could be implemented - placeholder: This could be implemented by... - validations: - required: false - - - type: dropdown - id: breaking-change - attributes: - label: Is this a breaking change? - options: - - "No" - - "Yes" - validations: - required: true - - - type: dropdown - id: rfc - attributes: - label: Does this require an RFC? - description: RFC is required when changing existing behavior or for new features that require research - options: - - "No" - - "Yes" - validations: - required: true - - - type: textarea - id: context - attributes: - label: Additional Context - description: Add any other context, examples, or screenshots - placeholder: Additional information... - validations: - required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7b6306610..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,26 +0,0 @@ -By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. - -### Issue Link, if available - -### Description - -### Demo/Screenshots - -### Checklist - -- [ ] I have filled out every section of the PR template -- [ ] I have thoroughly tested this change - -### Testing - -#### Unit Tests - -Have unit tests been written for these changes? - -#### Integration Tests - -Have integration tests been written for these changes? - -#### Examples - -Has a new example been added for the change? (if applicable) diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ca058419b..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "maven" - directory: "/" - schedule: - interval: "daily" - time: "09:00" - timezone: "UTC" - open-pull-requests-limit: 5 - commit-message: - prefix: "[maven]" - labels: - - "dependencies" - - "java" - - - package-ecosystem: "github-actions" - directory: "/.github/workflows" - schedule: - interval: "daily" - time: "09:00" - timezone: "UTC" - open-pull-requests-limit: 5 - commit-message: - prefix: "[github-actions]" - labels: - - "dependencies" - - "github-actions" diff --git a/.github/scripts/maven_publish.sh b/.github/scripts/maven_publish.sh deleted file mode 100644 index 39e6963a2..000000000 --- a/.github/scripts/maven_publish.sh +++ /dev/null @@ -1,48 +0,0 @@ - -#!/bin/bash -# publish-maven.sh -# Builds, signs, and publishes to Maven Central using central-publishing-maven-plugin -set -euo pipefail - -SETTINGS_FILE="./settings.xml" - -# Auto-cleanup settings.xml on exit (success or failure) -trap 'echo "Cleaning up settings.xml..."; rm -f "${SETTINGS_FILE}"' EXIT - -echo "=== Step 1: Format GPG private key ===" - -BEGIN_MARKER="-----BEGIN PGP PRIVATE KEY BLOCK-----" -END_MARKER="-----END PGP PRIVATE KEY BLOCK-----" -MIDDLE="${MVN_GPG_KEYS_GPGPRIVATEKEY#*$BEGIN_MARKER}" -MIDDLE="${MIDDLE%$END_MARKER*}" - -MIDDLE=$(echo "$MIDDLE" | tr ' ' $' -') - -export MAVEN_GPG_KEY="${BEGIN_MARKER} -${MIDDLE} -${END_MARKER}" - -export MAVEN_GPG_PASSPHRASE="${MVN_GPG_KEYS_GPGPASSPHRASE}" - -echo "=== Step 2: Write minimal settings.xml ===" -cat > "${SETTINGS_FILE}" < - - - central - ${MVN_ACCOUNT_KEYS_USERNAME} - ${MVN_ACCOUNT_KEYS_PASSWORD} - - - -EOF - -echo "settings.xml written." - -echo "=== Step 3: Deploy to Maven Central ===" - -mvn clean deploy -s "${SETTINGS_FILE}" -pl sdk -P publishing -DskipTests --no-transfer-progress -mvn clean deploy -s "${SETTINGS_FILE}" -pl sdk-testing -P publishing -DskipTests --no-transfer-progress - -echo "=== Release ${RELEASE_VERSION} published successfully! ===" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index d9a31ce9b..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,87 +0,0 @@ -# Build and Test -# -# Description: -# Builds the project and runs unit tests for every supported Java version. -# -# Triggers: -# - pull_request: when a PR targets main -# - push: when code is pushed to main -# -# Notes: -# Builds against Java 17, 21, and 25. - -name: Build -run-name: Build - ${{ github.event_name }} - -on: - workflow_dispatch: - pull_request: - branches: - - main - paths: - - 'sdk/**' - - 'sdk-testing/**' - - 'sdk-integration-tests/**' - - 'examples/**' - - 'pom.xml' - push: - branches: - - main - paths: - - 'sdk/**' - - 'sdk-testing/**' - - 'sdk-integration-tests/**' - - 'examples/**' - - 'pom.xml' - -permissions: - contents: write - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - java: - - 17 - - 21 - - 25 - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - - name: Setup Java ${{ matrix.java }} - uses: actions/setup-java@v5 - with: - distribution: corretto - java-version: ${{ matrix.java }} - cache: maven - - - name: Build and test - run: mvn -B install --file pom.xml - - - name: Generate JaCoCo Badge - if: ${{ github.ref == 'refs/heads/main' && matrix.java == 17 }} - uses: cicirello/jacoco-badge-generator@72266185b7ee48a6fd74eaf0238395cc8b14fef8 # v2 - with: - jacoco-csv-file: coverage-report/target/site/jacoco-aggregate/jacoco.csv - badges-directory: coverage-report/target/site/jacoco-aggregate - - - name: Publish coverage report to GitHub Pages - if: ${{ github.ref == 'refs/heads/main' && matrix.java == 17 }} - uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4 - with: - branch: docs - folder: coverage-report/target/site/jacoco-aggregate - target-folder: coverage - - - name: Deploy javadoc to Github Pages - if: ${{ github.ref == 'refs/heads/main' && matrix.java == 17 }} - uses: MathieuSoysal/Javadoc-publisher.yml@fda475b197081ba1eca7a1dfadf0c017080a1623 # v3.0.2 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - javadoc-branch: docs - target-folder: javadoc - java-version: 17 - project: maven - diff --git a/.github/workflows/check-spotless.yml b/.github/workflows/check-spotless.yml deleted file mode 100644 index 2cdbeabbd..000000000 --- a/.github/workflows/check-spotless.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Check for code formatting and license header errors using Spotless -# -# Description: -# Runs Spotless check for pull requests to ensure code formatting consistency, -# proper import ordering, and license headers. -# Fails the build if any violations are found. -# -# Triggers: -# - pull_request -name: Spotless - -on: - pull_request: - branches: - - main - paths: - - 'sdk/**' - - 'sdk-testing/**' - - 'sdk-integration-tests/**' - - 'examples/**' - -permissions: - contents: read - -jobs: - spotless-check: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - - name: Set up JDK 17 - uses: actions/setup-java@v5 - with: - java-version: '17' - distribution: 'corretto' - cache: maven - - - name: Run Spotless check - run: mvn -B -q spotless:check --file pom.xml diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml deleted file mode 100644 index 37c962649..000000000 --- a/.github/workflows/dependabot-auto-merge.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Auto-merge Dependabot PRs -run-name: Auto-merge - PR #${{ github.event.pull_request.number }} - -on: - pull_request_target: - types: - - opened - - synchronize - - reopened - -permissions: - contents: write - pull-requests: write - -jobs: - auto-merge: - runs-on: ubuntu-latest - if: github.actor == 'dependabot[bot]' - steps: - - name: Fetch Dependabot metadata - id: metadata - uses: dependabot/fetch-metadata@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Enable auto-merge - if: steps.metadata.outputs.update-type == 'version-update:semver-patch' - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Approve PR - if: steps.metadata.outputs.update-type == 'version-update:semver-patch' - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml deleted file mode 100644 index e38fe4149..000000000 --- a/.github/workflows/e2e-tests.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: E2E Tests - -on: - workflow_dispatch: - pull_request: - branches: - - main - paths: - - '.github/**' # for testing Github Actions - - 'sdk/**' - - 'sdk-testing/**' - - 'sdk-integration-tests/**' - - 'examples/**' - - 'pom.xml' - push: - branches: - - main - paths: - - '.github/**' - - 'sdk/**' - - 'sdk-testing/**' - - 'sdk-integration-tests/**' - - 'examples/**' - - 'pom.xml' - -concurrency: - group: e2e-tests - cancel-in-progress: false - -# permission can be added at job level or workflow level -permissions: - id-token: write # This is required for requesting the JWT - contents: read # This is required for actions/checkout - -jobs: - e2e-tests: - env: - AWS_REGION: us-west-2 - runs-on: ubuntu-latest - strategy: - matrix: - java: - - 17 - - 21 - - 25 - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - name: Setup AWS SAM CLI - uses: aws-actions/setup-sam@v2 - with: - use-installer: true -# token: ${{ secrets.GITHUB_TOKEN }} # only enable if we run into throughput issues - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0 - with: - role-to-assume: "${{ secrets.ACTIONS_INTEGRATION_ROLE_NAME }}" - role-session-name: java-language-sdk-test - aws-region: ${{ env.AWS_REGION }} - - name: Build locally - run: mvn -B -q -Dmaven.test.skip=true install --file pom.xml - - name: sam build - run: | # add --no-cached if debugging sam build - sam build --parameter-overrides \ - 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }}' - working-directory: ./examples - - name: sam deploy - run: | - sam deploy --stack-name JavaSDKCloudBasedIntegrationTestStack-Java${{ matrix.java }}Runtime \ - --resolve-image-repos --resolve-s3 --capabilities CAPABILITY_IAM --parameter-overrides \ - 'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }}' - working-directory: ./examples - - name: Setup Java ${{ matrix.java }} - uses: actions/setup-java@v5 - with: - distribution: corretto - java-version: ${{ matrix.java }} - cache: maven - - name: Build locally - run: mvn -B -q -Dmaven.test.skip=true install --file pom.xml - - name: Cloud Based Integration Tests - run: mvn clean test -B -Dtest.cloud.enabled=true -Dtest=CloudBasedIntegrationTest -Dtest.function.name.suffix='-java${{ matrix.java }}-runtime' - working-directory: ./examples diff --git a/.github/workflows/notify_slack.yml b/.github/workflows/notify_slack.yml deleted file mode 100644 index db3eb73ea..000000000 --- a/.github/workflows/notify_slack.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Slack Notifications - -on: - issues: - types: [opened, reopened] - pull_request_target: - types: [opened, reopened] - -permissions: {} - -jobs: - notify: - runs-on: ubuntu-latest - steps: - - name: Use Node.js - uses: actions/setup-node@v6 - with: - node-version: '24.x' - - name: Send issue notification to Slack - if: github.event_name == 'issues' - uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3.0.1 - with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL_ISSUE }} - webhook-type: incoming-webhook - payload: | - { - "action": "${{ github.event.action }}", - "issue_url": "${{ github.event.issue.html_url }}", - "package_name": "${{ github.repository }}" - } - - - name: Send pull request notification to Slack - if: github.event_name == 'pull_request_target' - uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3.0.1 - with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL_PR }} - webhook-type: incoming-webhook - payload: | - { - "action": "${{ github.event.action }}", - "pr_url": "${{ github.event.pull_request.html_url }}", - "package_name": "${{ github.repository }}" - } \ No newline at end of file diff --git a/.github/workflows/release_maven.yml b/.github/workflows/release_maven.yml deleted file mode 100644 index c8c1d3df4..000000000 --- a/.github/workflows/release_maven.yml +++ /dev/null @@ -1,105 +0,0 @@ - -name: Maven Release - -on: - workflow_dispatch: - inputs: - release_version: - description: 'Release version (e.g. 1.2.0)' - required: true - type: string - next_version: - description: 'Next development version (e.g. 1.3.0-SNAPSHOT)' - required: true - type: string - is_pre_release: - description: 'Is pre-release?' - required: false - default: false - type: boolean - -permissions: - contents: write - id-token: write - -env: - AWS_REGION: us-west-2 - -jobs: - release: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Setup Java - uses: actions/setup-java@v5 - with: - java-version: '17' - distribution: 'corretto' - cache: maven - - - name: configure aws credentials - uses: aws-actions/configure-aws-credentials@v6.1.0 - with: - role-to-assume: "${{ secrets.ACTIONS_MVN_ROLE_NAME }}" - role-session-name: mavenreleasesession - aws-region: ${{ env.AWS_REGION }} - - - name: Set release version - run: mvn -q versions:set -DnewVersion=${{ github.event.inputs.release_version }} -DgenerateBackupPoms=false - - - name: Commit release version - run: | - git config user.email "${{ github.actor }}+github-actions[bot]@users.noreply.github.com" - git config user.name "${{ github.actor }}+github-actions[bot]" - git add . - git commit -m "chore: release version ${{ github.event.inputs.release_version }}" - - - name: Push changes - uses: ad-m/github-push-action@4cc74773234f74829a8c21bc4d69dd4be9cfa599 # master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Build artifacts - run: mvn clean install -q -Dlog4j2.level=WARN -Dlog4j.configurationFile=log4j2-quiet.xml --no-transfer-progress - - - name: Create GitHub Release - uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2 - with: - tag_name: v${{ github.event.inputs.release_version }} - name: Release v${{ github.event.inputs.release_version }} - generate_release_notes: true - prerelease: ${{ github.event.inputs.is_pre_release }} - files: | - sdk/target/aws-durable-execution-sdk-java-${{ github.event.inputs.release_version }}.jar - sdk-testing/target/aws-durable-execution-sdk-java-testing-${{ github.event.inputs.release_version }}.jar - - - name: Get Env variables - uses: aws-actions/aws-secretsmanager-get-secrets@v3 - with: - secret-ids: | - mvn_gpg_keys - mvn_account_keys - parse-json-secrets: true - - - name: Sign and publish - run: bash .github/scripts/maven_publish.sh - env: - RELEASE_VERSION: ${{ github.event.inputs.release_version }} - - - name: Set next development version - run: mvn -q versions:set -DnewVersion=${{ github.event.inputs.next_version }} -DgenerateBackupPoms=false - - - name: Commit release version - run: | - git add . - git commit -m "chore: bump version to ${{ github.event.inputs.next_version }}" - - - name: Push changes - uses: ad-m/github-push-action@4cc74773234f74829a8c21bc4d69dd4be9cfa599 # master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/sync-package.yml b/.github/workflows/sync-package.yml deleted file mode 100644 index b225ae826..000000000 --- a/.github/workflows/sync-package.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Sync package - -env: - AWS_REGION: "us-west-2" - -# permission can be added at job level or workflow level -permissions: - id-token: write # This is required for requesting the JWT - contents: read # This is required for actions/checkout - -on: - workflow_call: - inputs: - module_name: - required: true - type: string - package_name: - required: true - type: string - secrets: - S3_BUCKET_NAME: - required: true - SYNC_LAMBDA_ARN: - required: true - GITFARM_LAN_SDK_REPO: - required: true - GITFARM_LAN_SDK_BRANCH: - required: true - ACTIONS_SYNC_ROLE_NAME: - required: true -jobs: - upload-to-S3-and-sync-to-Gitfarm: - runs-on: ubuntu-latest - steps: - - name: Git clone the repository - uses: actions/checkout@v6 - - name: Set up JDK 17 - uses: actions/setup-java@v5 - with: - java-version: '17' - distribution: 'corretto' - cache: maven - - name: Get version - id: get_version - run: | - VERSION=$( mvn -f ${{ inputs.module_name }}/pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout ) - echo "version=$VERSION" >> "$GITHUB_OUTPUT" - - name: Show extracted Maven project version - run: echo ${{ steps.get_version.outputs.version }} - - name: Build with Maven - run: mvn -B package --file pom.xml - - name: configure aws credentials - uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 - with: - role-to-assume: "${{ secrets.ACTIONS_SYNC_ROLE_NAME }}" - role-session-name: samplerolesession - aws-region: ${{ env.AWS_REGION }} - # Upload a file to AWS s3 - - name: Copy tgz build file to s3 - run: | - aws s3 cp ./${{ inputs.module_name }}/target/${{ inputs.package_name }}-${{ steps.get_version.outputs.version }}.jar \ - s3://${{ secrets.S3_BUCKET_NAME }}/${{ inputs.package_name }}.jar - - name: commit to Gitfarm - run: | - aws lambda invoke \ - --function-name ${{ secrets.SYNC_LAMBDA_ARN }} \ - --payload '{"gitFarmRepo":"${{ secrets.GITFARM_LAN_SDK_REPO }}","gitFarmBranch":"${{ secrets.GITFARM_LAN_SDK_BRANCH }}","gitFarmFilepath":"${{ secrets.GITFARM_LAN_SDK_REPO }}-1.0.jar","s3Bucket":"${{ secrets.S3_BUCKET_NAME }}","s3FilePath":"${{ inputs.package_name }}.jar", "gitHubRepo": "aws-durable-execution-sdk-java", "gitHubCommit":"${{ github.sha }}"}' \ - --cli-binary-format raw-in-base64-out \ - output.txt - - name: Check for specific text in a file - id: check_text - run: | - if grep -q "Error" output.txt; then - cat output.txt - exit 1 - fi diff --git a/.github/workflows/sync-sdk.yml b/.github/workflows/sync-sdk.yml deleted file mode 100644 index a0996c590..000000000 --- a/.github/workflows/sync-sdk.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Sync SDK -on: - push: - branches: ["main"] - paths: - - "sdk/**" - -env: - AWS_REGION: "us-west-2" - -# permission can be added at job level or workflow level -permissions: - id-token: write # This is required for requesting the JWT - contents: read # This is required for actions/checkout - -jobs: - sync-aws-durable-execution-sdk-java: - uses: ./.github/workflows/sync-package.yml - with: - module_name: sdk - package_name: aws-durable-execution-sdk-java - secrets: - S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }} - SYNC_LAMBDA_ARN: ${{ secrets.SYNC_LAMBDA_ARN }} - GITFARM_LAN_SDK_REPO: ${{ secrets.GITFARM_LAN_SDK_REPO }} - GITFARM_LAN_SDK_BRANCH: ${{ secrets.GITFARM_LAN_SDK_BRANCH }} - ACTIONS_SYNC_ROLE_NAME: ${{ secrets.ACTIONS_SYNC_ROLE_NAME }} diff --git a/.github/workflows/sync-testing-sdk.yml b/.github/workflows/sync-testing-sdk.yml deleted file mode 100644 index 559ccbafe..000000000 --- a/.github/workflows/sync-testing-sdk.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Sync Testing SDK - -on: - push: - branches: ["main"] - paths: - - "sdk-testing/**" - -env: - AWS_REGION: "us-west-2" - -# permission can be added at job level or workflow level -permissions: - id-token: write # This is required for requesting the JWT - contents: read # This is required for actions/checkout - -jobs: - sync-aws-durable-execution-sdk-java-testing: - uses: ./.github/workflows/sync-package.yml - with: - module_name: sdk-testing - package_name: aws-durable-execution-sdk-java-testing - secrets: - S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }} - SYNC_LAMBDA_ARN: ${{ secrets.SYNC_LAMBDA_ARN }} - GITFARM_LAN_SDK_REPO: ${{ secrets.GITFARM_TESTING_SDK_REPO }} - GITFARM_LAN_SDK_BRANCH: ${{ secrets.GITFARM_LAN_SDK_BRANCH }} - ACTIONS_SYNC_ROLE_NAME: ${{ secrets.ACTIONS_SYNC_ROLE_NAME }} diff --git a/.github/workflows/update-milestone-badge.yml b/.github/workflows/update-milestone-badge.yml deleted file mode 100644 index 0967553b9..000000000 --- a/.github/workflows/update-milestone-badge.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Update Milestone Badge - -on: - milestone: - types: [created, edited, closed, deleted] - schedule: - - cron: '0 6 * * *' - workflow_dispatch: - -permissions: - contents: write - -jobs: - update-badge: - runs-on: ubuntu-latest - steps: - - name: Checkout docs branch - uses: actions/checkout@v6 - with: - ref: docs - fetch-depth: 1 - - - name: Fetch nearest milestone and generate badge - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - set -euo pipefail - - # Fetch open milestones with due dates, pick the nearest one - TITLE=$(gh api repos/${{ github.repository }}/milestones \ - --jq '[.[] | select(.state == "open" and .due_on != null)] | sort_by(.due_on) | .[0].title // empty') - - if [ -z "$TITLE" ]; then - URL="https://img.shields.io/badge/Next%20Milestone-No%20milestone-lightgrey" - else - # URL-encode the title using jq, then escape dashes for shields.io - ENCODED=$(echo -n "$TITLE" | jq -sRr @uri | sed 's/-/--/g') - URL="https://img.shields.io/badge/Next%20Milestone-${ENCODED}-blue" - fi - - mkdir -p milestone - curl -sfL "$URL" -o milestone/badge.svg - echo "Badge generated for: ${TITLE:-No milestone}" - - - name: Commit and push - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add milestone/badge.svg - git diff --cached --quiet && echo "No changes" && exit 0 - git commit -m "chore: update milestone badge" - git push diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0f2836009..000000000 --- a/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# Maven -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -.mvn/wrapper/maven-wrapper.jar - -# IDE -.idea/ -*.iml -.vscode/ -.classpath -.project -.settings/ - -# Kiro and SOP -.kiro -.sop -.factorypath - -# Local testing - -.durable-executions-local -.env - -# OS -.DS_Store -Thumbs.db - -# Build artifacts -*.jar -*.war -*.ear -*.class - -# SAM -.aws-sam/ -samconfig.toml -samconfig.toml.bak - -# OSS -.flattened-pom.xml \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index 6c7edfe73..000000000 --- a/AGENTS.md +++ /dev/null @@ -1,264 +0,0 @@ -# AGENTS.md - -AI coding agent instructions for the AWS Lambda Durable Execution Java SDK. - -## Project Overview - -**Java SDK for AWS Lambda Durable Functions** - enables building resilient, multi-step workflows that can run for up to one year with automatic state management and failure recovery. - -### Key Concepts - -- **Checkpoint-and-replay**: Operations create checkpoints; on interruption, replay skips completed work -- **Durable operations**: `step()` executes with retry, `wait()` suspends without compute charges -- **Use cases**: Order processing, human approvals, AI agent workflows, distributed transactions - -This implements the Java version of AWS's durable execution SDK (official SDKs exist for JavaScript/TypeScript and Python). - -## Build & Test Commands - -```bash -# Build all modules -mvn clean install - -# Run unit tests only -mvn test - -# Run specific test class -mvn test -Dtest=DurableContextTest - -# Skip tests -mvn install -DskipTests - -# Format code (ALWAYS run after making changes) -mvn spotless:apply -``` - -## Key Directories - -``` -sdk/ # Core SDK module -β”œβ”€β”€ src/main/java/com/amazonaws/lambda/durable/ -β”‚ β”œβ”€β”€ DurableHandler.java # Lambda entry point (extend this) -β”‚ β”œβ”€β”€ DurableContext.java # User-facing API (step, wait) -β”‚ β”œβ”€β”€ DurableExecutor.java # Execution lifecycle -β”‚ β”œβ”€β”€ execution/ # Thread coordination, checkpointing -β”‚ β”œβ”€β”€ operation/ # StepOperation, WaitOperation -β”‚ β”œβ”€β”€ model/ # Data structures -β”‚ β”œβ”€β”€ serde/ # JSON serialization -β”‚ β”œβ”€β”€ client/ # AWS API integration -β”‚ └── exception/ # Domain exceptions - -sdk-testing/ # Test utilities (LocalDurableTestRunner, etc.) -examples/ # Customer-facing examples with local and cloud tests -sdk-integration-tests/ # Integration tests for the sdk -``` - -## Coding Guidelines - -### Java Style (MUST follow) - -```java -// USE var when type is obvious -var ctx = new DurableContext(); -var operations = new HashMap(); - -// USE static imports for common utilities and factory methods -import static org.junit.jupiter.api.Assertions.*; // Tests -import static java.util.Collections.emptyList; // Factory methods -import static software.amazon.lambda.durable.model.Status.*; // Enums - -// ALWAYS use proper imports, NEVER use fully qualified class names in code -// Bad: var lambda = software.amazon.awssdk.services.lambda.LambdaClient.create(); -// Good: import software.amazon.awssdk.services.lambda.LambdaClient; -// var lambda = LambdaClient.create(); - -// Bad: software.amazon.lambda.durable.model.Status.SUCCESS -// Good: import static and use SUCCESS directly - -// USE constructor injection -public DurableExecutor(DurableExecutionClient client, SerDes serDes) { - this.client = client; - this.serDes = serDes; -} -``` - -### Architecture Rules - -- **No unnecessary interfaces** - Use concrete classes when only one implementation exists -- **Constructor injection** - All dependencies via constructor, no field injection -- **Defensive copies** - Copy mutable collections in constructors -- **Single responsibility** - One class, one job -- **Methods ≀30 lines** - Extract if longer - -### Package Naming - -Prefer descriptive domain names: `model`, `execution`, `operation`, `serde`, `exception` - -### Logging in Examples - -Use `context.getLogger()` instead of SLF4J's `LoggerFactory` in example handlers. It includes execution metadata and suppresses duplicate logs during replay. - -## Do Not - -- Add new dependencies without explicit approval -- Create interfaces for single implementations -- Write tests for POJO getters/setters -- Expose mutable state via getters -- Change public API signatures without instruction -- Swallow exceptions silently -- Use field injection - -## Testing Approach - -### Test Organization - -``` -sdk/src/test/ # Unit tests for SDK internals -β”œβ”€β”€ DurableContextTest # Test DurableContext behavior -β”œβ”€β”€ DurableExecutorTest # Test execution lifecycle -β”œβ”€β”€ serde/JacksonSerDesTest # Test serialization -└── retry/RetryStrategiesTest # Test retry logic - -sdk-integration-tests/src/test/ # Integration tests (SDK + mock AWS) -β”œβ”€β”€ IntegrationTest # End-to-end with LocalDurableTestRunner -β”œβ”€β”€ RetryIntegrationTest # Retry behavior across operations -└── StepSemanticsIntegrationTest # Step execution semantics - -examples/src/test/ # Customer-facing examples + cloud tests -β”œβ”€β”€ SimpleStepExampleTest # Local test with LocalDurableTestRunner -β”œβ”€β”€ WaitExampleTest # Local test for wait operations -└── CloudBasedIntegrationTest # Cloud tests with CloudDurableTestRunner -``` - -### Testing Strategy - -**Unit Tests (sdk/src/test/)** -- Test individual classes in isolation -- Mock dependencies -- Fast, no external dependencies -- Run on every build - -```java -@Test -void stepReturnsResultOnReplay() { - var context = createTestContext(completedOperations); - var result = context.step("test", String.class, stepCtx -> "new"); - assertEquals("cached", result); // Returns cached, doesn't re-execute -} -``` - -**Integration Tests (sdk-integration-tests/)** -- Test SDK components working together -- Use `LocalDurableTestRunner` (in-memory, no AWS) -- Test replay, checkpointing, error handling -- Run on every build - -```java -@Test -void testRetryBehavior() { - var runner = LocalDurableTestRunner.create(Input.class, handler::handleRequest); - var result = runner.run(new Input("test")); - assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus()); -} -``` - -**Example Tests (examples/src/test/)** -- Demonstrate SDK usage patterns -- Local tests use `LocalDurableTestRunner` -- Cloud tests use `CloudDurableTestRunner` (requires deployed Lambda) -- Cloud tests disabled by default (`-Dtest.cloud.enabled=true`) - -```java -@Test -@EnabledIf("isCloudTestsEnabled") -void testAgainstRealLambda() { - var arn = "arn:aws:lambda:us-east-1:123456789012:function:my-fn"; - var runner = CloudDurableTestRunner.create(arn, Input.class, Output.class); - var result = runner.run(new Input("test")); - assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus()); -} -``` - -### Test Guidelines - -- Test business logic, replay behavior, edge cases -- Don't test POJO getters/setters -- Use `LocalDurableTestRunner` for fast tests -- Use `CloudDurableTestRunner` only for end-to-end validation -- JUnit 5 with static imports for assertions - -## Architecture Essentials - -### Checkpoint-and-Replay - -1. Operations get sequential IDs -2. Completed operations stored in ExecutionManager -3. On replay: return cached result, skip re-execution -4. New operations: execute, checkpoint, continue - -### Key Classes - -| Class | Responsibility | -|-------|----------------| -| `DurableHandler` | Lambda entry point, extend this | -| `DurableContext` | User API: `step()`, `wait()`, `map()`, `waitForCondition()` | -| `DurableExecutor` | Orchestrates execution lifecycle | -| `ExecutionManager` | Thread coordination, state management | -| `CheckpointBatcher` | Batches checkpoint API calls (750KB limit) | -| `StepOperation` | Executes steps with retry logic | -| `WaitOperation` | Handles wait checkpointing | -| `WaitForConditionOperation` | Polls a condition function with configurable backoff | -| `MapOperation` | Applies a function across items concurrently via child contexts | -| `ConcurrencyOperation` | Shared base for map/parallel: concurrency limiting, completion evaluation | - -## Common Tasks - -### Add a New Operation Type - -1. Create class in `operation/` implementing `DurableOperation` -2. Add method to `DurableContext` that delegates to new operation -3. Add tests for: first execution, replay, error cases - -### Add a Test - -```java -@Test -void descriptiveTestName() { - // Given - var handler = new MyHandler(); - var runner = LocalDurableTestRunner.create(MyInput.class, handler::handleRequest); - - // When - var result = runner.runUntilComplete(new MyInput("test")); - - // Then - assertEquals(expected, result); -} -``` - -### Debug Thread Coordination - -Check `ExecutionManager` for thread registration and coordination logic if debugging concurrency issues. - -## When Unsure - -- Ask clarifying questions before making assumptions -- Check existing code for patterns (especially in `operation/` package) -- Prefer minimal changes over large refactors - -## After Making Changes - -**ALWAYS run `mvn spotless:apply` after making code changes** to ensure consistent formatting across the codebase. This applies code formatting rules automatically. - -## Further Reading - -### Official AWS SDKs - -- **JavaScript/TypeScript**: https://github.com/aws/aws-durable-execution-sdk-js -- **Python**: https://github.com/aws/aws-durable-execution-sdk-python - -### AWS Documentation - -- [Lambda Durable Functions](https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html) -- [Durable Execution SDK](https://docs.aws.amazon.com/lambda/latest/dg/durable-execution-sdk.html) -- [Best Practices](https://docs.aws.amazon.com/lambda/latest/dg/durable-best-practices.html) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 5b627cfa6..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,4 +0,0 @@ -## Code of Conduct -This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). -For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact -opensource-codeofconduct@amazon.com with any additional questions or comments. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index c4b6a1c50..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,59 +0,0 @@ -# Contributing Guidelines - -Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional -documentation, we greatly value feedback and contributions from our community. - -Please read through this document before submitting any issues or pull requests to ensure we have all the necessary -information to effectively respond to your bug report or contribution. - - -## Reporting Bugs/Feature Requests - -We welcome you to use the GitHub issue tracker to report bugs or suggest features. - -When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already -reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: - -* A reproducible test case or series of steps -* The version of our code being used -* Any modifications you've made relevant to the bug -* Anything unusual about your environment or deployment - - -## Contributing via Pull Requests -Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: - -1. You are working against the latest source on the *main* branch. -2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. -3. You open an issue to discuss any significant work - we would hate for your time to be wasted. - -To send us a pull request, please: - -1. Fork the repository. -2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. -3. Ensure local tests pass. -4. Commit to your fork using clear commit messages. -5. Send us a pull request, answering any default questions in the pull request interface. -6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. - -GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and -[creating a pull request](https://help.github.com/articles/creating-a-pull-request/). - - -## Finding contributions to work on -Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. - - -## Code of Conduct -This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). -For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact -opensource-codeofconduct@amazon.com with any additional questions or comments. - - -## Security issue notifications -If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. - - -## Licensing - -See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 67db85882..000000000 --- a/LICENSE +++ /dev/null @@ -1,175 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 616fc5889..000000000 --- a/NOTICE +++ /dev/null @@ -1 +0,0 @@ -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/README.md b/README.md deleted file mode 100644 index 99a7614c7..000000000 --- a/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# AWS Lambda Durable Execution SDK for Java - -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -[![Java](https://img.shields.io/badge/java-%3E%3D17-brightgreen)](https://openjdk.org/) -[![Build](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/build.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/build.yml) -[![Javadoc](https://img.shields.io/badge/JavaDoc-Online-green)](https://aws.github.io/aws-durable-execution-sdk-java/javadoc/) -[![Maven](https://badges.mvnrepository.com/badge/software.amazon.lambda.durable/aws-durable-execution-sdk-java/badge.svg?label=Maven)](https://mvnrepository.com/artifact/software.amazon.lambda.durable/aws-durable-execution-sdk-java) -[![Coverage](https://raw.githubusercontent.com/aws/aws-durable-execution-sdk-java/refs/heads/docs/coverage/jacoco.svg)](https://aws.github.io/aws-durable-execution-sdk-java/coverage/) -[![E2E Tests](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/e2e-tests.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/e2e-tests.yml) -[![CodeQL](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/github-code-scanning/codeql) -[![Spotless](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/check-spotless.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/check-spotless.yml) -[![Roadmap](https://raw.githubusercontent.com/aws/aws-durable-execution-sdk-java/refs/heads/docs/milestone/badge.svg)](https://github.com/orgs/aws/projects/346/views/6) - -Build resilient, long-running AWS Lambda functions that automatically checkpoint progress and resume after failures. Durable functions can run for up to one year while you pay only for active compute time. - -## Key Features - -- **Automatic Checkpointing** – Progress is saved after each step; failures resume from the last checkpoint -- **Cost-Effective Waits** – Suspend execution for minutes, hours, or days without compute charges -- **Configurable Retries** – Built-in retry strategies with exponential backoff and jitter -- **Replay Safety** – Functions deterministically resume from checkpoints after interruptions -- **Type Safety** – Full generic type support for step results -- **Data-Driven Concurrency** – Apply a function across a collection with `map()`, with per-item error isolation and configurable completion criteria - -## How It Works - -Your durable function extends `DurableHandler` and implements `handleRequest(I input, DurableContext ctx)`. The `DurableContext` is your interface to durable operations: - -- `ctx.step()` – Execute code and checkpoint the result -- `ctx.wait()` – Suspend execution without compute charges -- `ctx.createCallback()` – Wait for external events (approvals, webhooks) -- `ctx.waitForCallback()` – Simplify callback handling by combining callback creation and submission in one operation -- `ctx.invoke()` – Invoke another Lambda function and wait for the result -- `ctx.runInChildContext()` – Run an isolated child context with its own checkpoint log -- `ctx.map()` – Apply a function to each item in a collection concurrently -- `ctx.parallel()` - Run multiple operations concurrently with optional concurrency control -- `ctx.waitForCondition()` – Poll a condition function until it signals done, suspending between polls - -## Quick Start - -### Installation - -```xml - - software.amazon.lambda.durable - aws-durable-execution-sdk-java - VERSION - -``` - -### Your First Durable Function - -```java -public class OrderProcessor extends DurableHandler { - - @Override - protected OrderResult handleRequest(Order order, DurableContext ctx) { - // Step 1: Validate and reserve inventory - var reservation = ctx.step("reserve-inventory", Reservation.class, - stepCtx -> inventoryService.reserve(order.getItems())); - - // Step 2: Process payment - var payment = ctx.step("process-payment", Payment.class, - stepCtx -> paymentService.charge(order.getPaymentMethod(), order.getTotal())); - - // Wait for warehouse processing (no compute charges) - ctx.wait(null, Duration.ofHours(2)); - - // Step 3: Confirm shipment - var shipment = ctx.step("confirm-shipment", Shipment.class, - stepCtx -> shippingService.ship(reservation, order.getAddress())); - - return new OrderResult(order.getId(), shipment.getTrackingNumber()); - } -} -``` - -## Deployment - -See [examples/README.md](./examples/README.md) for complete instructions on local testing and running cloud integration tests. - -See [Deploy and invoke Lambda durable functions with the AWS CLI](https://docs.aws.amazon.com/lambda/latest/dg/durable-getting-started-cli.html) for more information on deploying and invoking durable functions. - -See [Deploy Lambda durable functions with Infrastructure as Code](https://docs.aws.amazon.com/lambda/latest/dg/durable-getting-started-iac.html) for more information on deploying durable functions using infrastructure-as-code. - -## Documentation - -- [AWS Documentation](https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html) – Official AWS Lambda durable functions guide -- [Best Practices](https://docs.aws.amazon.com/lambda/latest/dg/durable-best-practices.html) – Patterns and recommendations -- [SDK Design](docs/design.md) – Details of SDK internal architecture - -**Core Operations** - -- [Steps](docs/core/steps.md) – Execute code with automatic checkpointing and retry support -- [Wait](docs/core/wait.md) - Pause execution without blocking Lambda resources -- [Callbacks](docs/core/callbacks.md) - Wait for external systems to respond -- [Invoke](docs/core/invoke.md) - Call other durable functions -- [Child Contexts](docs/core/child-contexts.md) - Organize complex workflows into isolated units -- [Map](docs/core/map.md) - Apply a function across a collection concurrently -- [Parallel](docs/core/parallel.md) - Run multiple operations concurrently with optional concurrency control -- [Wait for Condition](docs/core/wait-for-condition.md) - Poll a condition until it's met, with configurable backoff - -**Examples** - -- [Examples](examples/README.md) - Working examples of each operation - -**Advanced Topics** - -- [Configuration](docs/advanced/configuration.md) - Customize SDK behaviour -- [Error Handling](docs/advanced/error-handling.md) - SDK exceptions for handling failures -- [Logging](docs/advanced/logging.md) - How to use DurableLogger -- [Testing](docs/advanced/testing.md) - Utilities for local development and cloud-based integration testing - -## Related SDKs - -- [JavaScript/TypeScript SDK](https://github.com/aws/aws-durable-execution-sdk-js) -- [Python SDK](https://github.com/aws/aws-durable-execution-sdk-python) - -## Security - -See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for information about reporting security issues. - -## License - -This project is licensed under the Apache-2.0 License. See [LICENSE](LICENSE) for details. diff --git a/coverage-report/pom.xml b/coverage-report/pom.xml deleted file mode 100644 index d256c6017..000000000 --- a/coverage-report/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - 4.0.0 - - - software.amazon.lambda.durable - aws-durable-execution-sdk-java-parent - 1.0.1-SNAPSHOT - - - aws-durable-execution-sdk-java-coverage-report - pom - - AWS Lambda Durable Execution SDK Coverage Report - Aggregated JaCoCo coverage report across all modules - - - - software.amazon.lambda.durable - aws-durable-execution-sdk-java - ${project.version} - - - software.amazon.lambda.durable - aws-durable-execution-sdk-java-testing - ${project.version} - - - software.amazon.lambda.durable - aws-durable-execution-sdk-java-integration-tests - ${project.version} - - - software.amazon.lambda.durable - aws-durable-execution-sdk-java-examples - ${project.version} - - - - - - - org.jacoco - jacoco-maven-plugin - - - aggregate-report - verify - - report-aggregate - - - - - - - diff --git a/coverage/aws-durable-execution-sdk-java-examples/index.html b/coverage/aws-durable-execution-sdk-java-examples/index.html new file mode 100644 index 000000000..3900bf571 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/index.html @@ -0,0 +1 @@ +aws-durable-execution-sdk-java-examples

aws-durable-execution-sdk-java-examples

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total452 of 2,99084%12 of 3868%2920212059420183457
software.amazon.lambda.durable.examples.wait20317346%4100%11275587112527
software.amazon.lambda.durable.examples.step17334666%4450%8314611052718
software.amazon.lambda.durable.examples.general3158894%3125%4499152247116
software.amazon.lambda.durable.examples.parallel2255596%3975%3346100128012
software.amazon.lambda.durable.examples.callback1416492%2250%21233701003
software.amazon.lambda.durable.examples.map928596%2100%11814011704
software.amazon.lambda.durable.examples.child356100%2100%02205002104
software.amazon.lambda.durable.examples.types39100%2100%070100602
software.amazon.lambda.durable.examples.invoke32100%n/a02080201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.html new file mode 100644 index 000000000..0f4796208 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.html @@ -0,0 +1 @@ +CallbackExample

CallbackExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 11194%1 of 250%1701806
handleRequest(ApprovalRequest, DurableContext)65690%1150%120901
lambda$handleRequest$2(DurableCallbackFuture, StepContext)24100%n/a010401
lambda$handleRequest$1(String, StepContext)11100%n/a010201
lambda$handleRequest$0(ApprovalRequest, StepContext)6100%n/a010101
lambda$handleRequest$3(String, String, String, StepContext)5100%n/a010101
CallbackExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.java.html new file mode 100644 index 000000000..6df89106b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.java.html @@ -0,0 +1,77 @@ +CallbackExample.java

CallbackExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.callback;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.CallbackConfig;
+import software.amazon.lambda.durable.examples.types.ApprovalRequest;
+
+/**
+ * Example demonstrating callback operations for external system integration.
+ *
+ * <p>This handler demonstrates a human approval workflow:
+ *
+ * <ol>
+ *   <li>Prepare the request for approval
+ *   <li>Create a callback and send the callback ID to an external approval system
+ *   <li>Suspend execution until the external system responds
+ *   <li>Process the approval result
+ * </ol>
+ *
+ * <p>External systems respond using AWS Lambda APIs:
+ *
+ * <ul>
+ *   <li>{@code SendDurableExecutionCallbackSuccess} - approve with result
+ *   <li>{@code SendDurableExecutionCallbackFailure} - reject with error
+ *   <li>{@code SendDurableExecutionCallbackHeartbeat} - keep callback alive
+ * </ul>
+ */
+public class CallbackExample extends DurableHandler<ApprovalRequest, String> {
+
+    @Override
+    public String handleRequest(ApprovalRequest input, DurableContext context) {
+        // Step 1: Prepare the approval request
+        var prepared = context.step(
+                "prepare",
+                String.class,
+                stepCtx -> "Approval request for: " + input.description() + " ($" + input.amount() + ")");
+
+        // Step 2: Create callback for external approval
+        // Use timeout from input if provided, otherwise default to 5 minutes
+        var timeout =
+                input.timeoutSeconds() != null ? Duration.ofSeconds(input.timeoutSeconds()) : Duration.ofMinutes(5);
+
+        var config = CallbackConfig.builder().timeout(timeout).build();
+
+        var preapprovalCallback = context.waitForCallbackAsync("preapproval", String.class, (callbackId, ctx) -> {
+            ctx.getLogger().info("Sending callback {} to preapproval system", callbackId);
+        });
+
+        var callback = context.createCallback("approval", String.class, config);
+
+        // Step 2.5: Log AWS CLI command to complete the callback
+        context.step("log-callback-command", Void.class, ctx -> {
+            var callbackId = callback.callbackId();
+            // The result must be base64-encoded JSON
+            var command = String.format(
+                    "aws lambda send-durable-execution-callback-success --callback-id %s --result $(echo -n '\"approved\"' | base64)",
+                    callbackId);
+            ctx.getLogger().info("To complete this callback, run: {}", command);
+            return null;
+        });
+
+        var preapprovalResult = preapprovalCallback.get();
+
+        // Step 3: Wait for external approval (suspends execution)
+        var approvalResult = callback.get();
+
+        // Step 4: Process the approval
+        return context.step(
+                "process-approval",
+                String.class,
+                stepCtx -> prepared + " - " + preapprovalResult + " - " + approvalResult);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample$FailedSerDes.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample$FailedSerDes.html new file mode 100644 index 000000000..dadf85e3f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample$FailedSerDes.html @@ -0,0 +1 @@ +WaitForCallbackFailedExample.FailedSerDes

WaitForCallbackFailedExample.FailedSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 1989%1 of 250%121401
deserialize(String, TypeToken)21789%1150%121401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.html new file mode 100644 index 000000000..433fa390b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.html @@ -0,0 +1 @@ +WaitForCallbackFailedExample

WaitForCallbackFailedExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 4887%0 of 0n/a0321503
handleRequest(ApprovalRequest, DurableContext)62480%n/a0121201
lambda$handleRequest$0(String, StepContext)15100%n/a010201
WaitForCallbackFailedExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.java.html new file mode 100644 index 000000000..a2856625f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.java.html @@ -0,0 +1,56 @@ +WaitForCallbackFailedExample.java

WaitForCallbackFailedExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.callback;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.WaitForCallbackConfig;
+import software.amazon.lambda.durable.examples.types.ApprovalRequest;
+import software.amazon.lambda.durable.exception.SerDesException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+
+public class WaitForCallbackFailedExample extends DurableHandler<ApprovalRequest, String> {
+
+    @Override
+    public String handleRequest(ApprovalRequest input, DurableContext context) {
+
+        String approvalResult;
+
+        try {
+            approvalResult = context.waitForCallback(
+                    "preapproval",
+                    String.class,
+                    (callbackId, ctx) -> {
+                        ctx.getLogger().info("Sending callback {} to preapproval system", callbackId);
+                        throw new RuntimeException("Submitter failed with an exception");
+                    },
+                    WaitForCallbackConfig.builder()
+                            .stepConfig(StepConfig.builder()
+                                    .serDes(new FailedSerDes())
+                                    .build())
+                            .build());
+        } catch (SuspendExecutionException e) {
+            // not to swallow the SuspendExecutionException
+            throw e;
+        } catch (Exception ex) {
+            return ex.getClass().getSimpleName() + ":" + ex.getMessage();
+        }
+
+        return approvalResult;
+    }
+
+    private static class FailedSerDes extends JacksonSerDes {
+        @Override
+        public <T> T deserialize(String json, TypeToken<T> typeToken) {
+            T result = super.deserialize(json, typeToken);
+            if (result instanceof RuntimeException ex) {
+                throw new SerDesException("Deserialization failed", ex);
+            }
+            return result;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.html new file mode 100644 index 000000000..07ed00264 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.callback

software.amazon.lambda.durable.examples.callback

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total14 of 17892%2 of 450%21233701003
CallbackExample610594%1150%170180601
WaitForCallbackFailedExample64287%n/a032150301
WaitForCallbackFailedExample.FailedSerDes21789%1150%12140101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.source.html new file mode 100644 index 000000000..359093a42 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.callback

software.amazon.lambda.durable.examples.callback

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total14 of 17892%2 of 450%21233701003
WaitForCallbackFailedExample.java85988%1150%153190402
CallbackExample.java610594%1150%170180601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.html new file mode 100644 index 000000000..902413301 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.html @@ -0,0 +1 @@ +ChildContextExample

ChildContextExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 184100%0 of 0n/a013023013
handleRequest(GreetingRequest, DurableContext)72100%n/a0101001
lambda$handleRequest$5(String, DurableContext)28100%n/a010401
lambda$handleRequest$2(String, DurableContext)28100%n/a010401
lambda$handleRequest$10(String, DurableContext)24100%n/a010301
lambda$handleRequest$8(String, DurableContext)8100%n/a010101
ChildContextExample()3100%n/a010101
lambda$handleRequest$9(String, StepContext)3100%n/a010101
lambda$handleRequest$7(String, StepContext)3100%n/a010101
lambda$handleRequest$6(String, StepContext)3100%n/a010101
lambda$handleRequest$4(String, StepContext)3100%n/a010101
lambda$handleRequest$3(String, StepContext)3100%n/a010101
lambda$handleRequest$1(String, StepContext)3100%n/a010101
lambda$handleRequest$0(String, StepContext)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.java.html new file mode 100644 index 000000000..d0cd7968f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.java.html @@ -0,0 +1,77 @@ +ChildContextExample.java

ChildContextExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.child;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Example demonstrating child context workflows with the Durable Execution SDK.
+ *
+ * <p>This handler runs three concurrent child contexts using {@code runInChildContextAsync}:
+ *
+ * <ol>
+ *   <li><b>Order validation</b> β€” performs a step then suspends via {@code wait()} before completing
+ *   <li><b>Inventory check</b> β€” performs a step then suspends via {@code wait()} before completing
+ *   <li><b>Shipping estimate</b> β€” nests another child context inside it to demonstrate hierarchical contexts
+ * </ol>
+ *
+ * <p>All three child contexts run concurrently. Results are collected with {@link DurableFuture#allOf} and combined
+ * into a summary string.
+ */
+public class ChildContextExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        var name = input.getName();
+        context.getLogger().info("Starting child context workflow for {}", name);
+
+        // Child context 1: Order validation β€” step + wait + step
+        var orderFuture = context.runInChildContextAsync("order-validation", String.class, child -> {
+            var prepared = child.step("prepare-order", String.class, stepCtx -> "Order for " + name);
+            child.getLogger().info("Order prepared, waiting for validation");
+
+            child.wait("validation-delay", Duration.ofSeconds(5));
+
+            return child.step("validate-order", String.class, stepCtx -> prepared + " [validated]");
+        });
+
+        // Child context 2: Inventory check β€” step + wait + step
+        var inventoryFuture = context.runInChildContextAsync("inventory-check", String.class, child -> {
+            var stock = child.step("check-stock", String.class, stepCtx -> "Stock available for " + name);
+            child.getLogger().info("Stock checked, waiting for confirmation");
+
+            child.wait("confirmation-delay", Duration.ofSeconds(3));
+
+            return child.step("confirm-inventory", String.class, stepCtx -> stock + " [confirmed]");
+        });
+
+        // Child context 3: Shipping estimate β€” nests a child context inside it
+        var shippingFuture = context.runInChildContextAsync("shipping-estimate", String.class, child -> {
+            var baseRate = child.step("calculate-base-rate", String.class, stepCtx -> "Base rate for " + name);
+
+            // Nested child context: calculate regional adjustment
+            var adjustment = child.runInChildContext(
+                    "regional-adjustment",
+                    String.class,
+                    nested ->
+                            nested.step("lookup-region", String.class, stepCtx -> baseRate + " + regional adjustment"));
+
+            return child.step("finalize-shipping", String.class, stepCtx -> adjustment + " [shipping ready]");
+        });
+
+        // Collect all results using allOf
+        context.getLogger().info("Waiting for all child contexts to complete");
+        var results = DurableFuture.allOf(orderFuture, inventoryFuture, shippingFuture);
+
+        // Combine into summary
+        var summary = String.join(" | ", results);
+        context.getLogger().info("All child contexts complete: {}", summary);
+
+        return summary;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Input.html new file mode 100644 index 000000000..4193e368f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Input.html @@ -0,0 +1 @@ +ManyAsyncChildContextExample.Input

ManyAsyncChildContextExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ManyAsyncChildContextExample.Input(int, int)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Output.html new file mode 100644 index 000000000..cef480434 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Output.html @@ -0,0 +1 @@ +ManyAsyncChildContextExample.Output

ManyAsyncChildContextExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
ManyAsyncChildContextExample.Output(long, long, long)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.html new file mode 100644 index 000000000..ee023b6b5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.html @@ -0,0 +1 @@ +ManyAsyncChildContextExample

ManyAsyncChildContextExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 151100%0 of 2100%0702506
handleRequest(ManyAsyncChildContextExample.Input, DurableContext)120100%2100%0201901
lambda$handleRequest$1(int, int, DurableContext)10100%n/a010101
lambda$handleRequest$2(long, StepContext)7100%n/a010101
createConfiguration()6100%n/a010301
lambda$handleRequest$0(int, int, StepContext)5100%n/a010101
ManyAsyncChildContextExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.java.html new file mode 100644 index 000000000..759459df4 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.java.html @@ -0,0 +1,80 @@ +ManyAsyncChildContextExample.java

ManyAsyncChildContextExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.child;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+
+/**
+ * Performance test example demonstrating concurrent async child contexts.
+ *
+ * <p>This example tests the SDK's ability to handle many concurrent operations:
+ *
+ * <ul>
+ *   <li>Creates async child context in a loop
+ *   <li>Each child context performs a simple computation in a step
+ *   <li>All results are collected using {@link DurableFuture#allOf}
+ * </ul>
+ */
+public class ManyAsyncChildContextExample
+        extends DurableHandler<ManyAsyncChildContextExample.Input, ManyAsyncChildContextExample.Output> {
+
+    public record Input(int multiplier, int steps) {}
+
+    public record Output(long result, long executionTimeMs, long replayTimeMs) {}
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        var startTime = System.nanoTime();
+        var multiplier = input.multiplier();
+        var steps = input.steps();
+        var logger = context.getLogger();
+
+        logger.info("Starting {} async child context with multiplier {}", steps, multiplier);
+
+        // Create async steps
+        var futures = new ArrayList<DurableFuture<Integer>>(steps);
+        for (var i = 0; i < steps; i++) {
+            var index = i;
+            var future = context.runInChildContextAsync("child-" + i, Integer.class, childCtx -> {
+                // create a step inside the child context, which doubles the number of threads
+                return childCtx.step("compute-" + index, Integer.class, stepCtx -> index * multiplier);
+            });
+            futures.add(future);
+        }
+
+        logger.info("All {} async child context created, collecting results", steps);
+
+        // Collect all results using allOf
+        var results = DurableFuture.allOf(futures);
+        var totalSum = results.stream().mapToInt(Integer::intValue).sum();
+
+        // checkpoint the executionTime so that we can have the same value when replay
+        var executionTimeMs = context.step(
+                "execution-time", Long.class, stepCtx -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime));
+        logger.info(
+                "Completed {} child context, total sum: {}, execution time: {}ms", steps, totalSum, executionTimeMs);
+
+        // Wait 2 seconds to test replay
+        context.wait("post-compute-wait", Duration.ofSeconds(2));
+
+        var replayTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
+
+        return new Output(totalSum, executionTimeMs, replayTimeMs);
+    }
+
+    @Override
+    protected DurableConfig createConfiguration() {
+        // Add a small checkpoint delay to help batch the checkpoint requests and reduce the overall latencies
+        // when the function has many concurrent operations
+        return DurableConfig.builder()
+                .withCheckpointDelay(Duration.ofMillis(10))
+                .build();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.html new file mode 100644 index 000000000..696c26c4a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.child

software.amazon.lambda.durable.examples.child

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 356100%0 of 2100%02205002104
ChildContextExample184100%n/a01302301301
ManyAsyncChildContextExample151100%2100%070250601
ManyAsyncChildContextExample.Output12100%n/a01010101
ManyAsyncChildContextExample.Input9100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.source.html new file mode 100644 index 000000000..75714ba13 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.child

software.amazon.lambda.durable.examples.child

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 356100%0 of 2100%02205002104
ChildContextExample.java184100%n/a01302301301
ManyAsyncChildContextExample.java172100%2100%090270803
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$CustomData.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$CustomData.html new file mode 100644 index 000000000..50ffe6afa --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$CustomData.html @@ -0,0 +1 @@ +CustomConfigExample.CustomData

CustomConfigExample.CustomData

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 18100%0 of 0n/a020702
CustomConfigExample.CustomData(String, String, int, String)15100%n/a010601
CustomConfigExample.CustomData()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$SnakeCaseSerDes.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$SnakeCaseSerDes.html new file mode 100644 index 000000000..ddc580daf --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$SnakeCaseSerDes.html @@ -0,0 +1 @@ +CustomConfigExample.SnakeCaseSerDes

CustomConfigExample.SnakeCaseSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total14 of 3964%0 of 0n/a034903
deserialize(String, TypeToken)71058%n/a012301
serialize(Object)7541%n/a012301
CustomConfigExample.SnakeCaseSerDes()10100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.html new file mode 100644 index 000000000..2570e4489 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.html @@ -0,0 +1 @@ +CustomConfigExample

CustomConfigExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 8196%3 of 425%2602304
createConfiguration()35094%3125%2301901
handleRequest(String, DurableContext)17100%n/a010201
lambda$handleRequest$0(StepContext)8100%n/a010101
CustomConfigExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.java.html new file mode 100644 index 000000000..5c0f03eb0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.java.html @@ -0,0 +1,136 @@ +CustomConfigExample.java

CustomConfigExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
+import java.io.IOException;
+import java.time.Duration;
+import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
+import software.amazon.awssdk.core.SdkSystemSetting;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Example demonstrating custom configuration with both custom HTTP client and custom SerDes. Shows how to configure a
+ * custom Apache HTTP client for the Lambda client while maintaining automatic credentials detection and region
+ * fallback, plus a custom SerDes with snake_case naming.
+ *
+ * <p>This example demonstrates:
+ *
+ * <ul>
+ *   <li>Custom Apache HTTP client configuration for improved performance
+ *   <li>Automatic region detection with fallback to us-east-1 for testing environments
+ *   <li>Environment variable credentials provider
+ *   <li>Custom SerDes with snake_case property naming
+ * </ul>
+ */
+public class CustomConfigExample extends DurableHandler<String, String> {
+
+    @Override
+    protected DurableConfig createConfiguration() {
+        // Configure custom Apache HTTP client for better performance
+        var httpClient = ApacheHttpClient.builder()
+                .maxConnections(50)
+                .connectionTimeout(Duration.ofSeconds(30))
+                .socketTimeout(Duration.ofSeconds(60))
+                .build();
+
+        // Get region with fallback to us-east-1 if AWS_REGION not set
+        // This prevents initialization failures in testing environments
+        var region = System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable());
+        if (region == null || region.isEmpty()) {
+            region = "us-east-1";
+        }
+
+        // Create Lambda client with custom HTTP client
+        // Uses automatic credentials detection and region fallback
+        var lambdaClient = LambdaClient.builder()
+                .httpClient(httpClient)
+                .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
+                .region(Region.of(region))
+                .build();
+
+        // Wrap the Lambda client with LambdaDurableFunctionsClient
+        var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
+
+        // Create custom SerDes with snake_case naming
+        var customSerDes = new SnakeCaseSerDes();
+
+        return DurableConfig.builder()
+                .withDurableExecutionClient(durableClient)
+                .withSerDes(customSerDes)
+                .build();
+    }
+
+    @Override
+    public String handleRequest(String input, DurableContext context) {
+        // Step 1: Create a custom object with camelCase fields to demonstrate snake_case serialization
+        var customObject = context.step(
+                "create-custom-object",
+                CustomData.class,
+                stepCtx -> new CustomData("user123", "John Doe", 25, "john.doe@example.com"));
+
+        return "Created custom object: " + customObject.userId + ", " + customObject.fullName + ", "
+                + customObject.userAge + ", " + customObject.emailAddress;
+    }
+
+    /**
+     * Custom data class with camelCase field names to demonstrate snake_case serialization. The SerDes will convert
+     * these field names to snake_case in the JSON output.
+     */
+    public static class CustomData {
+        public String userId;
+        public String fullName;
+        public int userAge;
+        public String emailAddress;
+
+        public CustomData() {}
+
+        public CustomData(String userId, String fullName, int userAge, String emailAddress) {
+            this.userId = userId;
+            this.fullName = fullName;
+            this.userAge = userAge;
+            this.emailAddress = emailAddress;
+        }
+    }
+
+    /**
+     * Custom SerDes implementation using snake_case property naming. Demonstrates how to provide custom serialization
+     * behavior.
+     */
+    private static class SnakeCaseSerDes implements SerDes {
+        private final ObjectMapper objectMapper;
+
+        public SnakeCaseSerDes() {
+            this.objectMapper = new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
+        }
+
+        @Override
+        public String serialize(Object obj) {
+            try {
+                return objectMapper.writeValueAsString(obj);
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException("Serialization failed", e);
+            }
+        }
+
+        @Override
+        public <T> T deserialize(String json, TypeToken<T> typeToken) {
+            try {
+                return objectMapper.readValue(json, objectMapper.constructType(typeToken.getType()));
+            } catch (IOException e) {
+                throw new RuntimeException("Deserialization failed", e);
+            }
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.html new file mode 100644 index 000000000..0f3c019c8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.html @@ -0,0 +1 @@ +CustomPollingExample

CustomPollingExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 6095%0 of 0n/a0421604
lambda$handleRequest$0(GreetingRequest, StepContext)3770%n/a012501
handleRequest(GreetingRequest, DurableContext)36100%n/a010601
createConfiguration()11100%n/a010401
CustomPollingExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.java.html new file mode 100644 index 000000000..b082b36c5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.java.html @@ -0,0 +1,65 @@ +CustomPollingExample.java

CustomPollingExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.InvokeConfig;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+import software.amazon.lambda.durable.retry.JitterStrategy;
+import software.amazon.lambda.durable.retry.PollingStrategies;
+
+/**
+ * Example demonstrating custom polling strategy configuration.
+ *
+ * <p>The polling strategy controls how the SDK polls for async operation results. By default, the SDK uses exponential
+ * backoff (1s base, 2x rate, full jitter). This example shows how to customize the polling behavior.
+ *
+ * <p>This example configures:
+ *
+ * <ul>
+ *   <li>Exponential backoff with 500ms base interval
+ *   <li>1.5x backoff rate for gentler growth
+ *   <li>Half jitter to balance between consistency and thundering herd avoidance
+ * </ul>
+ */
+public class CustomPollingExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    protected DurableConfig createConfiguration() {
+        return DurableConfig.builder()
+                .withPollingStrategy(PollingStrategies.exponentialBackoff(
+                        Duration.ofMillis(500), 1.5, JitterStrategy.HALF, Duration.ofSeconds(5)))
+                .build();
+    }
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        context.getLogger().info("Starting workflow with input: {}", input);
+
+        // Step 1: low case the input
+        var lowered = context.stepAsync("validate", String.class, stepCtx -> {
+            try {
+                // prevent the execution from suspension
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            return input.getName().toLowerCase();
+        });
+
+        // Step 2: Invoke async
+        var future = context.invokeAsync(
+                "call-greeting",
+                "simple-step-example" + input.getName() + ":$LATEST",
+                input,
+                String.class,
+                InvokeConfig.builder().build());
+        // because we are sleeping 5 seconds in the first async step, the function will not be suspened. The invoke
+        // function will have to poll for completion.
+        return future.get() + lowered.get();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample$ServiceUnavailableException.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample$ServiceUnavailableException.html new file mode 100644 index 000000000..af276f312 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample$ServiceUnavailableException.html @@ -0,0 +1 @@ +ErrorHandlingExample.ServiceUnavailableException

ErrorHandlingExample.ServiceUnavailableException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 13100%0 of 0n/a030603
ErrorHandlingExample.ServiceUnavailableException(String, String)7100%n/a010301
ErrorHandlingExample.ServiceUnavailableException()3100%n/a010201
getServiceName()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.html new file mode 100644 index 000000000..909b1af1d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.html @@ -0,0 +1 @@ +ErrorHandlingExample

ErrorHandlingExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total4 of 7994%0 of 0n/a0712207
handleRequest(Object, DurableContext)45493%n/a0111801
lambda$handleRequest$0(StepContext)6100%n/a010101
lambda$handleRequest$2(Object, StepContext)4100%n/a010101
static {...}4100%n/a010101
ErrorHandlingExample()3100%n/a010101
lambda$handleRequest$3(StepContext)2100%n/a010101
lambda$handleRequest$1(StepContext)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.java.html new file mode 100644 index 000000000..9b8d97bef --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.java.html @@ -0,0 +1,100 @@ +ErrorHandlingExample.java

ErrorHandlingExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.StepSemantics;
+import software.amazon.lambda.durable.exception.StepFailedException;
+import software.amazon.lambda.durable.exception.StepInterruptedException;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating error handling patterns with the Durable Execution SDK.
+ *
+ * <p>This example shows how to handle:
+ *
+ * <ul>
+ *   <li>{@link StepFailedException} - when a step exhausts all retry attempts
+ *   <li>{@link StepInterruptedException} - when an AT_MOST_ONCE step is interrupted
+ *   <li>Custom exceptions - original exception types are preserved and can be caught directly
+ * </ul>
+ *
+ * <p>Note: {@code NonDeterministicExecutionException} is thrown by the SDK when code changes between executions (e.g.,
+ * step order/names changed). It should be fixed in code, not caught.
+ */
+public class ErrorHandlingExample extends DurableHandler<Object, String> {
+
+    private static final Logger logger = LoggerFactory.getLogger(ErrorHandlingExample.class);
+
+    /** Custom exception to demonstrate that original exception types are preserved across checkpoints. */
+    public static class ServiceUnavailableException extends RuntimeException {
+        private String serviceName;
+
+        /** Default constructor required for Jackson deserialization. */
+        public ServiceUnavailableException() {
+            super();
+        }
+
+        public ServiceUnavailableException(String serviceName, String message) {
+            super(message);
+            this.serviceName = serviceName;
+        }
+
+        public String getServiceName() {
+            return serviceName;
+        }
+    }
+
+    @Override
+    public String handleRequest(Object input, DurableContext context) {
+        // Example 1: Catching a custom exception type with fallback logic
+        // The SDK preserves the original exception type, so you can catch specific exceptions directly.
+        // NOTE: Exception type needs to be serializable by your SerDes implementation.
+        String primaryResult;
+        try {
+            primaryResult = context.step(
+                    "call-primary-service",
+                    String.class,
+                    stepCtx -> {
+                        throw new ServiceUnavailableException("primary-api", "Primary service unavailable");
+                    },
+                    StepConfig.builder()
+                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
+                            .build());
+        } catch (ServiceUnavailableException e) {
+            // Catch the specific custom exception type - the SDK reconstructs the original exception
+            logger.warn("Service '{}' unavailable, using fallback: {}", e.getServiceName(), e.getMessage());
+            primaryResult = context.step("call-fallback-service", String.class, stepCtx -> "fallback-result");
+        }
+
+        // Example 2: Handling StepInterruptedException for AT_MOST_ONCE operations
+        // StepInterruptedException is thrown when an AT_MOST_ONCE step was started
+        // but the function was interrupted before the step completed.
+        // In normal execution, this step succeeds. The catch block handles the
+        // interruption scenario that occurs during replay after an unexpected termination.
+        String paymentResult;
+        try {
+            paymentResult = context.step(
+                    "charge-payment",
+                    String.class,
+                    stepCtx -> "payment-" + input,
+                    StepConfig.builder()
+                            .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
+                            .build());
+        } catch (StepInterruptedException e) {
+            logger.warn(
+                    "Payment step interrupted, checking external status: {}",
+                    e.getOperation().id());
+            // In real code: check payment provider for transaction status
+            // If payment went through, return success; otherwise, handle appropriately
+            paymentResult = context.step("verify-payment-status", String.class, stepCtx -> "verified-payment");
+        }
+
+        return "Completed: " + primaryResult + ", " + paymentResult;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample$1.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample$1.html new file mode 100644 index 000000000..3ad42e803 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample$1.html @@ -0,0 +1 @@ +GenericInputOutputExample.new TypeToken() {...}

GenericInputOutputExample.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
{...}6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.html new file mode 100644 index 000000000..2c2891d1e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.html @@ -0,0 +1 @@ +GenericInputOutputExample

GenericInputOutputExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 71100%0 of 0n/a0401604
handleRequest(Map, DurableContext)36100%n/a010801
lambda$handleRequest$0(StepContext)28100%n/a010601
static {...}4100%n/a010101
GenericInputOutputExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.java.html new file mode 100644 index 000000000..d41e63938 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.java.html @@ -0,0 +1,53 @@ +GenericInputOutputExample.java

GenericInputOutputExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating a durable Lambda function that uses generic types in input and output.
+ *
+ * <p>This example shows how to use TypeToken to work with generic types like {@code List<String>}, {@code Map<String,
+ * List<String>>}, and nested generics that cannot be represented by simple Class objects.
+ */
+public class GenericInputOutputExample
+        extends DurableHandler<Map<String, String>, Map<String, Map<String, List<String>>>> {
+
+    private static final Logger logger = LoggerFactory.getLogger(GenericInputOutputExample.class);
+
+    @Override
+    public Map<String, Map<String, List<String>>> handleRequest(Map<String, String> input, DurableContext context) {
+        logger.info("Starting generic types example for user: {}", input.get("userId"));
+
+        // Fetch nested generic type with retry (Map<String, List<String>>)
+        Map<String, List<String>> categories = context.step(
+                "fetch-categories",
+                new TypeToken<Map<String, List<String>>>() {},
+                stepCtx -> {
+                    logger.info("Fetching category details");
+                    var result = new HashMap<String, List<String>>();
+                    result.put("electronics", List.of("laptop", "phone"));
+                    result.put("books", List.of("fiction"));
+                    result.put("clothing", List.of("shirt"));
+                    return result;
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
+                        .build());
+        logger.info("Fetched {} category details", categories.size());
+        logger.info("Generic types example completed successfully");
+
+        // return a result of Map<String, Map<String, List<String>>>
+        return new HashMap<>(Map.of("categories", categories));
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$1.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$1.html new file mode 100644 index 000000000..60ca40286 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$1.html @@ -0,0 +1 @@ +GenericTypesExample.new TypeToken() {...}

GenericTypesExample.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
{...}6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$2.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$2.html new file mode 100644 index 000000000..1d448e610 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$2.html @@ -0,0 +1 @@ +GenericTypesExample.new TypeToken() {...}

GenericTypesExample.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
{...}6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$3.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$3.html new file mode 100644 index 000000000..ae4437425 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$3.html @@ -0,0 +1 @@ +GenericTypesExample.new TypeToken() {...}

GenericTypesExample.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
{...}6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Input.html new file mode 100644 index 000000000..33487f567 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Input.html @@ -0,0 +1 @@ +GenericTypesExample.Input

GenericTypesExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020402
GenericTypesExample.Input(String)6100%n/a010301
GenericTypesExample.Input()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Output.html new file mode 100644 index 000000000..5bf08c94c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Output.html @@ -0,0 +1 @@ +GenericTypesExample.Output

GenericTypesExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a020602
GenericTypesExample.Output(List, Map, Map)12100%n/a010501
GenericTypesExample.Output()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.html new file mode 100644 index 000000000..ea9d32da8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.html @@ -0,0 +1 @@ +GenericTypesExample

GenericTypesExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 141100%0 of 0n/a0602906
handleRequest(GenericTypesExample.Input, DurableContext)68100%n/a0101301
lambda$handleRequest$2(StepContext)28100%n/a010601
lambda$handleRequest$1(StepContext)27100%n/a010601
lambda$handleRequest$0(GenericTypesExample.Input, StepContext)11100%n/a010201
static {...}4100%n/a010101
GenericTypesExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.java.html new file mode 100644 index 000000000..66933c83b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.java.html @@ -0,0 +1,94 @@ +GenericTypesExample.java

GenericTypesExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating TypeToken support for complex generic types.
+ *
+ * <p>This example shows how to use TypeToken to work with generic types like {@code List<String>}, {@code Map<String,
+ * Object>}, and nested generics that cannot be represented by simple Class objects.
+ */
+public class GenericTypesExample extends DurableHandler<GenericTypesExample.Input, GenericTypesExample.Output> {
+
+    private static final Logger logger = LoggerFactory.getLogger(GenericTypesExample.class);
+
+    public static class Input {
+        public String userId;
+
+        public Input() {}
+
+        public Input(String userId) {
+            this.userId = userId;
+        }
+    }
+
+    public static class Output {
+        public List<String> items;
+        public Map<String, Integer> counts;
+        public Map<String, List<String>> categories;
+
+        public Output() {}
+
+        public Output(List<String> items, Map<String, Integer> counts, Map<String, List<String>> categories) {
+            this.items = items;
+            this.counts = counts;
+            this.categories = categories;
+        }
+    }
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        logger.info("Starting generic types example for user: {}", input.userId);
+
+        // Step 1: Fetch a list of items (List<String>)
+        List<String> items = context.step("fetch-items", new TypeToken<List<String>>() {}, stepCtx -> {
+            logger.info("Fetching items for user: {}", input.userId);
+            return List.of("item1", "item2", "item3", "item4");
+        });
+        logger.info("Fetched {} items", items.size());
+
+        // Step 2: Count items by category (Map<String, Integer>)
+        Map<String, Integer> counts =
+                context.step("count-by-category", new TypeToken<Map<String, Integer>>() {}, stepCtx -> {
+                    logger.info("Counting items by category");
+                    var result = new HashMap<String, Integer>();
+                    result.put("electronics", 2);
+                    result.put("books", 1);
+                    result.put("clothing", 1);
+                    return result;
+                });
+        logger.info("Counted {} categories", counts.size());
+
+        // Step 3: Fetch nested generic type with retry (Map<String, List<String>>)
+        Map<String, List<String>> categories = context.step(
+                "fetch-categories",
+                new TypeToken<Map<String, List<String>>>() {},
+                stepCtx -> {
+                    logger.info("Fetching category details");
+                    var result = new HashMap<String, List<String>>();
+                    result.put("electronics", List.of("laptop", "phone"));
+                    result.put("books", List.of("fiction"));
+                    result.put("clothing", List.of("shirt"));
+                    return result;
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
+                        .build());
+        logger.info("Fetched {} category details", categories.size());
+
+        logger.info("Generic types example completed successfully");
+        return new Output(items, counts, categories);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.html new file mode 100644 index 000000000..52d846da7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.html @@ -0,0 +1 @@ +LoggingExample

LoggingExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 62100%0 of 0n/a0401004
handleRequest(GreetingRequest, DurableContext)39100%n/a010501
lambda$handleRequest$1(String, StepContext)10100%n/a010201
lambda$handleRequest$0(GreetingRequest, StepContext)10100%n/a010201
LoggingExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.java.html new file mode 100644 index 000000000..08b6bc575 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.java.html @@ -0,0 +1,38 @@ +LoggingExample.java

LoggingExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Example demonstrating DurableLogger usage for structured logging with execution context.
+ *
+ * <p>The logger automatically includes execution metadata (durableExecutionArn, requestId, operationId, operationName)
+ * in log entries via MDC. By default, logs are suppressed during replay to avoid duplicates.
+ */
+public class LoggingExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        // Log at execution level (outside any step)
+        context.getLogger().info("Processing greeting for: {}", input.getName());
+
+        // Step 1: Create greeting - logs inside step include operation context
+        var greeting = context.step("create-greeting", String.class, ctx -> {
+            ctx.getLogger().info("Creating greeting message");
+            return "Hello, " + input.getName();
+        });
+
+        // Step 2: Transform
+        var result = context.step("transform", String.class, ctx -> {
+            ctx.getLogger().info("Transforming greeting to uppercase");
+            return greeting.toUpperCase() + "!";
+        });
+
+        context.getLogger().info("Completed processing, result: {}", result);
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.html new file mode 100644 index 000000000..f8cebd471 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.html @@ -0,0 +1 @@ +NoopExample

NoopExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 70%0 of 0n/a222222
handleRequest(GreetingRequest, DurableContext)40%n/a111111
NoopExample()30%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.java.html new file mode 100644 index 000000000..4a068d65b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/NoopExample.java.html @@ -0,0 +1,21 @@ +NoopExample.java

NoopExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.general;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Simple example demonstrating a durable function doesn't have any durable operation
+ *
+ * <p>This handler processes a greeting request and returns a greeting message
+ */
+public class NoopExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        return "HELLO, " + input.getName() + "!";
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.html new file mode 100644 index 000000000..14f964d67 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.general

software.amazon.lambda.durable.examples.general

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total31 of 61994%3 of 425%4499152247116
CustomConfigExample.SnakeCaseSerDes142564%n/a03490301
NoopExample70%n/a22222211
ErrorHandlingExample47594%n/a071220701
CustomConfigExample37896%3125%260230401
CustomPollingExample35795%n/a042160401
GenericTypesExample141100%n/a060290601
GenericInputOutputExample71100%n/a040160401
LoggingExample62100%n/a040100401
CustomConfigExample.CustomData18100%n/a02070201
GenericTypesExample.Output15100%n/a02060201
ErrorHandlingExample.ServiceUnavailableException13100%n/a03060301
GenericTypesExample.Input9100%n/a02040201
GenericTypesExample.new TypeToken() {...}6100%n/a01010101
GenericTypesExample.new TypeToken() {...}6100%n/a01010101
GenericTypesExample.new TypeToken() {...}6100%n/a01010101
GenericInputOutputExample.new TypeToken() {...}6100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.source.html new file mode 100644 index 000000000..14eb87555 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.general

software.amazon.lambda.durable.examples.general

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total31 of 61994%3 of 425%4499152247116
CustomConfigExample.java1712187%3125%2114390903
NoopExample.java70%n/a22222211
ErrorHandlingExample.java48895%n/a01012801002
CustomPollingExample.java35795%n/a042160401
GenericTypesExample.java183100%n/a01304001306
GenericInputOutputExample.java77100%n/a050170502
LoggingExample.java62100%n/a040100401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.html new file mode 100644 index 000000000..8e9877c7a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.html @@ -0,0 +1 @@ +SimpleInvokeExample

SimpleInvokeExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 32100%0 of 0n/a020802
handleRequest(GreetingRequest, DurableContext)29100%n/a010701
SimpleInvokeExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.java.html new file mode 100644 index 000000000..10e689d79 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.java.html @@ -0,0 +1,35 @@ +SimpleInvokeExample.java

SimpleInvokeExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.invoke;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.InvokeConfig;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Simple example demonstrating basic invoke execution with the Durable Execution SDK.
+ *
+ * <p>This handler invokes another durable lambda function simple-step-example
+ */
+public class SimpleInvokeExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        // invoke `simple-step-example` function
+        var future = context.invokeAsync(
+                "call-greeting1",
+                "simple-step-example" + input.getName() + ":$LATEST",
+                input,
+                String.class,
+                InvokeConfig.builder().build());
+        var result2 = context.invoke(
+                "call-greeting2",
+                "simple-step-example" + input.getName() + ":$LATEST",
+                input,
+                String.class,
+                InvokeConfig.builder().build());
+        return future.get() + result2;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.html new file mode 100644 index 000000000..689b02c57 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.invoke

software.amazon.lambda.durable.examples.invoke

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 32100%0 of 0n/a02080201
SimpleInvokeExample32100%n/a02080201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.source.html new file mode 100644 index 000000000..782c6e928 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.invoke

software.amazon.lambda.durable.examples.invoke

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 32100%0 of 0n/a02080201
SimpleInvokeExample.java32100%n/a02080201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.html new file mode 100644 index 000000000..e3284b26a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.html @@ -0,0 +1 @@ +ComplexMapExample

ComplexMapExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 130100%0 of 0n/a0801708
handleRequest(Integer, DurableContext)81100%n/a0101201
lambda$handleRequest$3(String, int, DurableContext)25100%n/a010301
lambda$handleRequest$5(String, int, DurableContext)9100%n/a010101
ComplexMapExample()3100%n/a010101
lambda$handleRequest$4(String, StepContext)3100%n/a010101
lambda$handleRequest$2(String, StepContext)3100%n/a010101
lambda$handleRequest$1(String, StepContext)3100%n/a010101
lambda$handleRequest$0(int)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.java.html new file mode 100644 index 000000000..7fad09512 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.java.html @@ -0,0 +1,64 @@ +ComplexMapExample.java

ComplexMapExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.map;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.CompletionConfig;
+import software.amazon.lambda.durable.config.MapConfig;
+
+/**
+ * Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.
+ *
+ * <ol>
+ *   <li>Concurrent map with step + wait + step inside each branch β€” simulates multi-stage order processing with a
+ *       cooldown between stages
+ *   <li>Early termination with {@code minSuccessful(2)} β€” finds 2 healthy servers then stops
+ * </ol>
+ */
+public class ComplexMapExample extends DurableHandler<Integer, String> {
+
+    @Override
+    public String handleRequest(Integer input, DurableContext context) {
+        context.getLogger().info("Starting complex map example with {} items", input);
+
+        // Part 1: Concurrent map with step + wait inside each branch
+        var orderIds = IntStream.range(1, input + 1).mapToObj(x -> "order-" + x).collect(Collectors.toList());
+
+        var orderResult = context.map("process-orders", orderIds, String.class, (orderId, index, ctx) -> {
+            // Step 1: validate the order
+            var validated = ctx.step("validate-" + index, String.class, stepCtx -> "validated:" + orderId);
+
+            // Wait between stages (simulates a cooldown or external dependency)
+            ctx.wait("cooldown-" + index, Duration.ofSeconds(1));
+
+            // Step 2: finalize the order
+            return ctx.step("finalize-" + index, String.class, stepCtx -> "done:" + validated);
+        });
+
+        var orderSummary = String.join(", ", orderResult.results());
+
+        // Part 2: Early termination β€” find 2 healthy servers then stop
+        var servers = List.of("server-1", "server-2", "server-3", "server-4", "server-5");
+        var earlyTermConfig = MapConfig.builder()
+                .completionConfig(CompletionConfig.minSuccessful(2))
+                .build();
+
+        var serverResult = context.map(
+                "find-healthy-servers",
+                servers,
+                String.class,
+                (server, index, ctx) -> ctx.step("health-check-" + index, String.class, stepCtx -> server + ":healthy"),
+                earlyTermConfig);
+
+        var healthyServers = serverResult.succeeded().stream().collect(Collectors.joining(", "));
+
+        return String.format(
+                "orders=[%s] | servers=[%s] reason=%s", orderSummary, healthyServers, serverResult.completionReason());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample$FailedSerDes.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample$FailedSerDes.html new file mode 100644 index 000000000..50c355985 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample$FailedSerDes.html @@ -0,0 +1 @@ +DeserializationFailedMapExample.FailedSerDes

DeserializationFailedMapExample.FailedSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 19100%0 of 2100%020401
deserialize(String, TypeToken)19100%2100%020401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.html new file mode 100644 index 000000000..cdbe30301 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.html @@ -0,0 +1 @@ +DeserializationFailedMapExample

DeserializationFailedMapExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total9 of 8088%0 of 0n/a1411114
lambda$handleRequest$1(String, int, DurableContext)90%n/a111111
handleRequest(GreetingRequest, DurableContext)62100%n/a010801
lambda$handleRequest$0(String, StepContext)6100%n/a010101
DeserializationFailedMapExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.java.html new file mode 100644 index 000000000..d12c1c30b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.java.html @@ -0,0 +1,67 @@ +DeserializationFailedMapExample.java

DeserializationFailedMapExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.map;
+
+import java.time.Duration;
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+import software.amazon.lambda.durable.exception.SerDesException;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+
+/**
+ * Example demonstrating the map operation with the Durable Execution SDK.
+ *
+ * <p>This handler processes a list of names concurrently using {@code map()}, where each item runs in its own child
+ * context with full checkpoint-and-replay support.
+ *
+ * <ol>
+ *   <li>Create a list of names from the input
+ *   <li>Map over each name concurrently, applying a greeting transformation via a durable step
+ *   <li>Collect and join the results
+ * </ol>
+ */
+public class DeserializationFailedMapExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        var name = input.getName();
+        context.getLogger().info("Starting map example for {}", name);
+
+        var names = List.of(name, name.toUpperCase(), name.toLowerCase());
+
+        // Map over each name concurrently β€” each iteration runs in its own child context
+        var result = context.map(
+                "greet-all",
+                names,
+                String.class,
+                (item, index, ctx) -> {
+                    return ctx.step("greet-" + index, String.class, stepCtx -> {
+                        throw new RuntimeException("Failure from " + item + "!");
+                    });
+                },
+                MapConfig.builder().serDes(new FailedSerDes()).build());
+
+        context.getLogger().info("Map completed: allSucceeded={}, size={}", result.allSucceeded(), result.size());
+
+        context.wait("suspend and replay", Duration.ofSeconds(1));
+
+        return result.getError(0).errorMessage();
+    }
+
+    private static class FailedSerDes extends JacksonSerDes {
+
+        @Override
+        public <T> T deserialize(String json, TypeToken<T> typeToken) {
+            T result = super.deserialize(json, typeToken);
+            if (result instanceof RuntimeException ex) {
+                throw new SerDesException("Deserialization failed", ex);
+            }
+            return result;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.html new file mode 100644 index 000000000..0ede4eec9 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.html @@ -0,0 +1 @@ +SimpleMapExample

SimpleMapExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 65100%0 of 0n/a040804
handleRequest(GreetingRequest, DurableContext)50100%n/a010601
lambda$handleRequest$1(String, int, DurableContext)9100%n/a010101
SimpleMapExample()3100%n/a010101
lambda$handleRequest$0(String, StepContext)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.java.html new file mode 100644 index 000000000..9f52ade76 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.java.html @@ -0,0 +1,41 @@ +SimpleMapExample.java

SimpleMapExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.map;
+
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Example demonstrating the map operation with the Durable Execution SDK.
+ *
+ * <p>This handler processes a list of names concurrently using {@code map()}, where each item runs in its own child
+ * context with full checkpoint-and-replay support.
+ *
+ * <ol>
+ *   <li>Create a list of names from the input
+ *   <li>Map over each name concurrently, applying a greeting transformation via a durable step
+ *   <li>Collect and join the results
+ * </ol>
+ */
+public class SimpleMapExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        var name = input.getName();
+        context.getLogger().info("Starting map example for {}", name);
+
+        var names = List.of(name, name.toUpperCase(), name.toLowerCase());
+
+        // Map over each name concurrently β€” each iteration runs in its own child context
+        var result = context.map("greet-all", names, String.class, (item, index, ctx) -> {
+            return ctx.step("greet-" + index, String.class, stepCtx -> "Hello, " + item + "!");
+        });
+
+        context.getLogger().info("Map completed: allSucceeded={}, size={}", result.allSucceeded(), result.size());
+
+        return String.join(" | ", result.results());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.html new file mode 100644 index 000000000..2915fac7b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.map

software.amazon.lambda.durable.examples.map

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total9 of 29496%0 of 2100%11814011704
DeserializationFailedMapExample97188%n/a141111401
ComplexMapExample130100%n/a080170801
SimpleMapExample65100%n/a04080401
DeserializationFailedMapExample.FailedSerDes19100%2100%02040101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.source.html new file mode 100644 index 000000000..c9a2d59e2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.map

software.amazon.lambda.durable.examples.map

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total9 of 29496%0 of 2100%11814011704
DeserializationFailedMapExample.java99090%2100%161151502
ComplexMapExample.java130100%n/a080170801
SimpleMapExample.java65100%n/a04080401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$FailedSerDes.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$FailedSerDes.html new file mode 100644 index 000000000..3c8b73ab1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$FailedSerDes.html @@ -0,0 +1 @@ +DeserializationFailedParallelExample.FailedSerDes

DeserializationFailedParallelExample.FailedSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 1989%1 of 250%121401
deserialize(String, TypeToken)21789%1150%121401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$Input.html new file mode 100644 index 000000000..e07be98ee --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$Input.html @@ -0,0 +1 @@ +DeserializationFailedParallelExample.Input

DeserializationFailedParallelExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
DeserializationFailedParallelExample.Input(List)6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.html new file mode 100644 index 000000000..103c2fcf5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.html @@ -0,0 +1 @@ +DeserializationFailedParallelExample

DeserializationFailedParallelExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total20 of 7673%2 of 20%2551814
handleRequest(DeserializationFailedParallelExample.Input, DurableContext)134878%20%1241501
lambda$handleRequest$1(DurableContext)70%n/a111111
lambda$handleRequest$0(StepContext)5100%n/a010101
DeserializationFailedParallelExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.java.html new file mode 100644 index 000000000..3a9784974 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.java.html @@ -0,0 +1,79 @@ +DeserializationFailedParallelExample.java

DeserializationFailedParallelExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.parallel;
+
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.ParallelDurableFuture;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.ParallelBranchConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.exception.SerDesException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+
+/**
+ * Example demonstrating parallel branch execution with the Durable Execution SDK.
+ *
+ * <p>This handler processes a list of items concurrently using {@code context.parallel()}:
+ *
+ * <ol>
+ *   <li>Each item is processed in its own branch (child context)
+ *   <li>All branches run concurrently and their results are collected
+ *   <li>A final step combines the results into a summary
+ * </ol>
+ *
+ * <p>The {@link ParallelDurableFuture} implements {@link AutoCloseable}, so try-with-resources guarantees
+ * {@code join()} is called even if an exception occurs.
+ */
+public class DeserializationFailedParallelExample
+        extends DurableHandler<DeserializationFailedParallelExample.Input, String> {
+
+    public record Input(List<String> items) {}
+
+    @Override
+    public String handleRequest(Input input, DurableContext context) {
+        var logger = context.getLogger();
+        var items = input.items();
+        logger.info("Starting parallel processing of {} items", items.size());
+
+        var config = ParallelConfig.builder().build();
+
+        var parallel = context.parallel("process-items", config);
+
+        try (parallel) {
+            var future = parallel.branch(
+                    "process",
+                    String.class,
+                    branchCtx -> {
+                        return branchCtx.step("transform", String.class, stepCtx -> {
+                            throw new RuntimeException("Intentional failure for transform");
+                        });
+                    },
+                    ParallelBranchConfig.builder().serDes(new FailedSerDes()).build());
+
+            parallel.get();
+            try {
+                return future.get();
+            } catch (SuspendExecutionException e) {
+                throw e;
+            } catch (Exception e) {
+                return e.getMessage();
+            }
+        }
+    }
+
+    private static class FailedSerDes extends JacksonSerDes {
+
+        @Override
+        public <T> T deserialize(String json, TypeToken<T> typeToken) {
+            T result = super.deserialize(json, typeToken);
+            if (result instanceof RuntimeException ex) {
+                throw new SerDesException("Deserialization failed", ex);
+            }
+            return result;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Input.html new file mode 100644 index 000000000..dcc7caf54 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Input.html @@ -0,0 +1 @@ +ParallelExample.Input

ParallelExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010101
ParallelExample.Input(List)6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Output.html new file mode 100644 index 000000000..a0ddd21e4 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Output.html @@ -0,0 +1 @@ +ParallelExample.Output

ParallelExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ParallelExample.Output(List, int)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.html new file mode 100644 index 000000000..c464b92f6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.html @@ -0,0 +1 @@ +ParallelExample

ParallelExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 121100%0 of 2100%0502104
handleRequest(ParallelExample.Input, DurableContext)96100%2100%0201801
lambda$handleRequest$1(String, DurableContext)19100%n/a010201
ParallelExample()3100%n/a010101
lambda$handleRequest$0(String, StepContext)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.java.html new file mode 100644 index 000000000..987099c0d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.java.html @@ -0,0 +1,67 @@ +ParallelExample.java

ParallelExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.parallel;
+
+import java.util.ArrayList;
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.ParallelDurableFuture;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.model.ParallelResult;
+
+/**
+ * Example demonstrating parallel branch execution with the Durable Execution SDK.
+ *
+ * <p>This handler processes a list of items concurrently using {@code context.parallel()}:
+ *
+ * <ol>
+ *   <li>Each item is processed in its own branch (child context)
+ *   <li>All branches run concurrently and their results are collected
+ *   <li>A final step combines the results into a summary
+ * </ol>
+ *
+ * <p>The {@link ParallelDurableFuture} implements {@link AutoCloseable}, so try-with-resources guarantees
+ * {@code join()} is called even if an exception occurs.
+ */
+public class ParallelExample extends DurableHandler<ParallelExample.Input, ParallelExample.Output> {
+
+    public record Input(List<String> items) {}
+
+    public record Output(List<String> results, int totalProcessed) {}
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        var logger = context.getLogger();
+        var items = input.items();
+        logger.info("Starting parallel processing of {} items", items.size());
+
+        var config = ParallelConfig.builder().build();
+
+        var futures = new ArrayList<DurableFuture<String>>(items.size());
+        var parallel = context.parallel("process-items", config);
+
+        try (parallel) {
+            for (var item : items) {
+                var future = parallel.branch("process-" + item, String.class, branchCtx -> {
+                    branchCtx.getLogger().info("Processing item: {}", item);
+                    return branchCtx.step("transform-" + item, String.class, stepCtx -> item.toUpperCase());
+                });
+                futures.add(future);
+            }
+        } // join() called here via AutoCloseable
+
+        ParallelResult parallelResult = parallel.get();
+        logger.info(
+                "Parallel complete: total={}, succeeded={}, failed={}",
+                parallelResult.size(),
+                parallelResult.succeeded(),
+                parallelResult.failed());
+
+        var results = futures.stream().map(DurableFuture::get).toList();
+
+        return new Output(results, results.size());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Input.html new file mode 100644 index 000000000..00d437633 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Input.html @@ -0,0 +1 @@ +ParallelFailureToleranceExample.Input

ParallelFailureToleranceExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
ParallelFailureToleranceExample.Input(List, Integer, Integer)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Output.html new file mode 100644 index 000000000..7dc8beaf0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Output.html @@ -0,0 +1 @@ +ParallelFailureToleranceExample.Output

ParallelFailureToleranceExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ParallelFailureToleranceExample.Output(int, int)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.html new file mode 100644 index 000000000..e6133391a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.html @@ -0,0 +1 @@ +ParallelFailureToleranceExample

ParallelFailureToleranceExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 150100%0 of 6100%0702904
handleRequest(ParallelFailureToleranceExample.Input, DurableContext)121100%4100%0302101
lambda$handleRequest$1(String, DurableContext)13100%n/a010401
lambda$handleRequest$0(String, StepContext)13100%2100%020301
ParallelFailureToleranceExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.java.html new file mode 100644 index 000000000..9e37c908f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.java.html @@ -0,0 +1,79 @@ +ParallelFailureToleranceExample.java

ParallelFailureToleranceExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.parallel;
+
+import java.util.ArrayList;
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.CompletionConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.model.ParallelResult;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating parallel execution with failure tolerance.
+ *
+ * <p>When {@code toleratedFailureCount} is set, the parallel operation completes successfully even if some branches
+ * fail β€” as long as the number of failures does not exceed the threshold. Failed branches produce {@code null} results
+ * that callers can filter out.
+ *
+ * <p>Use this pattern when partial success is acceptable, for example: sending notifications to multiple channels where
+ * some channels may be unavailable.
+ */
+public class ParallelFailureToleranceExample
+        extends DurableHandler<ParallelFailureToleranceExample.Input, ParallelFailureToleranceExample.Output> {
+
+    public record Input(List<String> services, Integer toleratedFailures, Integer minSuccessful) {}
+
+    public record Output(int succeeded, int failed) {}
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        var logger = context.getLogger();
+        logger.info("Starting parallel execution with toleratedFailureCount={}", input.toleratedFailures());
+
+        var config = ParallelConfig.builder()
+                .completionConfig(new CompletionConfig(input.minSuccessful, input.toleratedFailures, null))
+                .build();
+
+        var futures = new ArrayList<DurableFuture<String>>(input.services().size());
+        var parallel = context.parallel("call-services", config);
+
+        try (parallel) {
+            for (var service : input.services()) {
+                var future = parallel.branch("call-" + service, String.class, branchCtx -> {
+                    return branchCtx.step(
+                            "invoke-" + service,
+                            String.class,
+                            stepCtx -> {
+                                if (service.startsWith("bad-")) {
+                                    throw new RuntimeException("Service unavailable: " + service);
+                                }
+                                return "ok:" + service;
+                            },
+                            StepConfig.builder()
+                                    .retryStrategy(RetryStrategies.Presets.NO_RETRY)
+                                    .build());
+                });
+                futures.add(future);
+            }
+        }
+
+        ParallelResult parallelResult = parallel.get();
+        logger.info(
+                "Parallel complete: succeeded={}, failed={}, status={}",
+                parallelResult.succeeded(),
+                parallelResult.failed(),
+                parallelResult.completionStatus().isSucceeded() ? "succeeded" : "failed");
+
+        var succeeded = parallelResult.succeeded();
+        var failed = parallelResult.failed();
+
+        logger.info("Completed: {} succeeded, {} failed", succeeded, failed);
+        return new Output(succeeded, failed);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Input.html new file mode 100644 index 000000000..5e261e465 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Input.html @@ -0,0 +1 @@ +ParallelWithWaitExample.Input

ParallelWithWaitExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ParallelWithWaitExample.Input(String, String)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Output.html new file mode 100644 index 000000000..7ee76f44d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Output.html @@ -0,0 +1 @@ +ParallelWithWaitExample.Output

ParallelWithWaitExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
ParallelWithWaitExample.Output(List, int, int)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.html new file mode 100644 index 000000000..adeafb155 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.html @@ -0,0 +1 @@ +ParallelWithWaitExample

ParallelWithWaitExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 148100%0 of 0n/a0802108
handleRequest(ParallelWithWaitExample.Input, DurableContext)91100%n/a0101401
lambda$handleRequest$5(ParallelWithWaitExample.Input, DurableContext)14100%n/a010201
lambda$handleRequest$3(ParallelWithWaitExample.Input, DurableContext)14100%n/a010201
lambda$handleRequest$1(ParallelWithWaitExample.Input, DurableContext)14100%n/a010201
lambda$handleRequest$4(ParallelWithWaitExample.Input, StepContext)4100%n/a010101
lambda$handleRequest$2(ParallelWithWaitExample.Input, StepContext)4100%n/a010101
lambda$handleRequest$0(ParallelWithWaitExample.Input, StepContext)4100%n/a010101
ParallelWithWaitExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.java.html new file mode 100644 index 000000000..4718f05ac --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.java.html @@ -0,0 +1,74 @@ +ParallelWithWaitExample.java

ParallelWithWaitExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.parallel;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.model.ParallelResult;
+
+/**
+ * Example demonstrating parallel branches where some branches include wait operations.
+ *
+ * <p>This models a notification fan-out pattern where different channels have different delivery delays:
+ *
+ * <ul>
+ *   <li>Email β€” sent immediately
+ *   <li>SMS β€” waits for a rate-limit window before sending
+ *   <li>Push notification β€” waits for a quiet-hours window before sending
+ * </ul>
+ *
+ * <p>All three branches run concurrently. Branches with waits suspend without consuming compute resources and resume
+ * automatically once the wait elapses. The parallel operation completes once all branches finish.
+ */
+public class ParallelWithWaitExample
+        extends DurableHandler<ParallelWithWaitExample.Input, ParallelWithWaitExample.Output> {
+
+    public record Input(String userId, String message) {}
+
+    public record Output(List<String> deliveries, int success, int faiure) {}
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        var logger = context.getLogger();
+        logger.info("Sending notifications to user {}", input.userId());
+
+        var config = ParallelConfig.builder().build();
+        var futures = new ArrayList<DurableFuture<String>>(3);
+        var parallel = context.parallel("notify", config);
+
+        try (parallel) {
+
+            // Branch 1: email β€” no wait, deliver immediately
+            futures.add(parallel.branch("email", String.class, ctx -> {
+                ctx.wait("email-rate-limit-delay", Duration.ofSeconds(10));
+                return ctx.step("send-email", String.class, stepCtx -> "email:" + input.message());
+            }));
+
+            // Branch 2: SMS β€” wait for rate-limit window, then send
+            futures.add(parallel.branch("sms", String.class, ctx -> {
+                ctx.wait("sms-rate-limit-delay", Duration.ofSeconds(10));
+                return ctx.step("send-sms", String.class, stepCtx -> "sms:" + input.message());
+            }));
+
+            // Branch 3: push notification β€” wait for quiet-hours window, then send
+            futures.add(parallel.branch("push", String.class, ctx -> {
+                ctx.wait("push-quiet-delay", Duration.ofSeconds(10));
+                return ctx.step("send-push", String.class, stepCtx -> "push:" + input.message());
+            }));
+        }
+
+        ParallelResult result = parallel.get();
+
+        var deliveries = futures.stream().map(DurableFuture::get).toList();
+        logger.info("All {} notifications delivered", deliveries.size());
+        // Test replay
+        context.wait("wait for finalization", Duration.ofSeconds(5));
+        return new Output(deliveries, result.succeeded(), result.failed());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.html new file mode 100644 index 000000000..48e1fed5c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.parallel

software.amazon.lambda.durable.examples.parallel

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total22 of 57796%3 of 1275%3346100128012
DeserializationFailedParallelExample205673%20%255181401
DeserializationFailedParallelExample.FailedSerDes21789%1150%12140101
ParallelFailureToleranceExample150100%6100%070290401
ParallelWithWaitExample148100%n/a080210801
ParallelExample121100%2100%050210401
ParallelWithWaitExample.Output12100%n/a01010101
ParallelFailureToleranceExample.Input12100%n/a01010101
ParallelExample.Output9100%n/a01010101
ParallelWithWaitExample.Input9100%n/a01010101
ParallelFailureToleranceExample.Output9100%n/a01010101
DeserializationFailedParallelExample.Input6100%n/a01010101
ParallelExample.Input6100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.source.html new file mode 100644 index 000000000..ba9fe7aa0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.parallel

software.amazon.lambda.durable.examples.parallel

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total22 of 57796%3 of 1275%3346100128012
DeserializationFailedParallelExample.java227978%3125%386231603
ParallelFailureToleranceExample.java171100%6100%090310603
ParallelWithWaitExample.java169100%n/a01002301003
ParallelExample.java136100%2100%070230603
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample$FailedSerDes.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample$FailedSerDes.html new file mode 100644 index 000000000..c031f7d09 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample$FailedSerDes.html @@ -0,0 +1 @@ +DeserializationFailureExample.FailedSerDes

DeserializationFailureExample.FailedSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 1989%1 of 250%121401
deserialize(String, TypeToken)21789%1150%121401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.html new file mode 100644 index 000000000..cca791d04 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.html @@ -0,0 +1 @@ +DeserializationFailureExample

DeserializationFailureExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 4381%0 of 0n/a0321103
handleRequest(String, DurableContext)82777%n/a012901
lambda$handleRequest$0(StepContext)5100%n/a010101
DeserializationFailureExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.java.html new file mode 100644 index 000000000..c677ade02 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.java.html @@ -0,0 +1,48 @@ +DeserializationFailureExample.java

DeserializationFailureExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.step;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.exception.SerDesException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+
+public class DeserializationFailureExample extends DurableHandler<String, String> {
+
+    @Override
+    public String handleRequest(String input, DurableContext context) {
+        try {
+            context.step(
+                    "fail-step",
+                    String.class,
+                    stepCtx -> {
+                        throw new RuntimeException("this is a test");
+                    },
+                    StepConfig.builder().serDes(new FailedSerDes()).build());
+        } catch (SuspendExecutionException e) {
+            throw e;
+        } catch (Exception e) {
+            context.wait("suspend and replay", Duration.ofSeconds(1));
+            return e.getClass().getSimpleName() + ":" + e.getMessage();
+        }
+
+        throw new IllegalStateException("should not reach here");
+    }
+
+    private static class FailedSerDes extends JacksonSerDes {
+
+        @Override
+        public <T> T deserialize(String json, TypeToken<T> typeToken) {
+            T result = super.deserialize(json, typeToken);
+            if (result instanceof RuntimeException ex) {
+                throw new SerDesException("Deserialization failed", ex);
+            }
+            return result;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Input.html new file mode 100644 index 000000000..590fbc500 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Input.html @@ -0,0 +1 @@ +ManyAsyncStepsExample.Input

ManyAsyncStepsExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ManyAsyncStepsExample.Input(int, int)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Output.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Output.html new file mode 100644 index 000000000..25c2ca6c6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Output.html @@ -0,0 +1 @@ +ManyAsyncStepsExample.Output

ManyAsyncStepsExample.Output

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
ManyAsyncStepsExample.Output(long, long, long)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.html new file mode 100644 index 000000000..f801ea504 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.html @@ -0,0 +1 @@ +ManyAsyncStepsExample

ManyAsyncStepsExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 141100%0 of 2100%0602305
handleRequest(ManyAsyncStepsExample.Input, DurableContext)120100%2100%0201801
lambda$handleRequest$1(long, StepContext)7100%n/a010101
createConfiguration()6100%n/a010301
lambda$handleRequest$0(int, int, StepContext)5100%n/a010101
ManyAsyncStepsExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.java.html new file mode 100644 index 000000000..78340471f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.java.html @@ -0,0 +1,75 @@ +ManyAsyncStepsExample.java

ManyAsyncStepsExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.step;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+
+/**
+ * Performance test example demonstrating concurrent async steps.
+ *
+ * <p>This example tests the SDK's ability to handle many concurrent operations:
+ *
+ * <ul>
+ *   <li>Creates async steps in a loop
+ *   <li>Each step performs a simple computation
+ *   <li>All results are collected using {@link DurableFuture#allOf}
+ * </ul>
+ */
+public class ManyAsyncStepsExample extends DurableHandler<ManyAsyncStepsExample.Input, ManyAsyncStepsExample.Output> {
+
+    public record Input(int multiplier, int steps) {}
+
+    public record Output(long result, long executionTimeMs, long replayTimeMs) {}
+
+    @Override
+    public Output handleRequest(Input input, DurableContext context) {
+        var startTime = System.nanoTime();
+        var multiplier = input.multiplier();
+        var steps = input.steps();
+        var logger = context.getLogger();
+
+        logger.info("Starting {} async steps with multiplier {}", steps, multiplier);
+
+        // Create async steps
+        var futures = new ArrayList<DurableFuture<Integer>>(steps);
+        for (var i = 0; i < steps; i++) {
+            var index = i;
+            var future = context.stepAsync("compute-" + i, Integer.class, stepCtx -> index * multiplier);
+            futures.add(future);
+        }
+
+        logger.info("All {} async steps created, collecting results", steps);
+
+        // Collect all results using allOf
+        var results = DurableFuture.allOf(futures);
+        var totalSum = results.stream().mapToInt(Integer::intValue).sum();
+
+        // checkpoint the executionTime so that we can have the same value when replay
+        var executionTimeMs = context.step(
+                "execution-time", Long.class, stepCtx -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime));
+        logger.info("Completed {} steps, total sum: {}, execution time: {}ms", steps, totalSum, executionTimeMs);
+
+        // Wait 2 seconds to test replay
+        context.wait("post-compute-wait", Duration.ofSeconds(2));
+
+        var replayTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
+
+        return new Output(totalSum, executionTimeMs, replayTimeMs);
+    }
+
+    @Override
+    protected DurableConfig createConfiguration() {
+        // Add a small checkpoint delay to help batch the checkpoint requests and reduce the overall latencies
+        // when the function has many concurrent operations
+        return DurableConfig.builder()
+                .withCheckpointDelay(Duration.ofMillis(10))
+                .build();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.html new file mode 100644 index 000000000..aa7be92ef --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.html @@ -0,0 +1 @@ +RetryExample

RetryExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total49 of 14265%1 of 250%1793106
lambda$handleRequest$2(StepContext)274361%1150%1241101
handleRequest(Object, DurableContext)223662%n/a0151701
lambda$handleRequest$1(StepContext)5100%n/a010101
static {...}4100%n/a010101
RetryExample()3100%n/a010101
lambda$handleRequest$0(StepContext)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.java.html new file mode 100644 index 000000000..3b5627e84 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.java.html @@ -0,0 +1,88 @@ +RetryExample.java

RetryExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.step;
+
+import java.time.Duration;
+import java.time.Instant;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Simple example demonstrating retry strategies with a flaky API.
+ *
+ * <p>This example shows:
+ *
+ * <ul>
+ *   <li>A step that never retries (fails immediately)
+ *   <li>A step that retries with default exponential backoff
+ *   <li>Time-based failure simulation for realistic retry behavior
+ * </ul>
+ */
+public class RetryExample extends DurableHandler<Object, String> {
+
+    private static final Logger logger = LoggerFactory.getLogger(RetryExample.class);
+
+    private Instant startTime;
+
+    @Override
+    public String handleRequest(Object input, DurableContext context) {
+        // Step 1: Record start time
+        startTime = context.step("record-start-time", Instant.class, stepCtx -> Instant.now());
+        logger.info("Recorded start time: {}", startTime);
+
+        // Step 2: Call that never retries (fails immediately)
+        try {
+            context.step(
+                    "no-retry-call",
+                    Void.class,
+                    stepCtx -> {
+                        throw new RuntimeException("This operation never retries");
+                    },
+                    StepConfig.builder()
+                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
+                            .build());
+        } catch (Exception e) {
+            logger.info("No-retry step failed as expected: {}", e.getMessage());
+        }
+
+        // Step 3: Flaky API call that succeeds after retries
+        var result = context.step(
+                "flaky-api-call",
+                String.class,
+                stepCtx -> {
+                    // Fail for first 8 seconds, then succeed
+                    var failForMillis = 8000;
+                    var elapsed = Duration.between(startTime, Instant.now());
+
+                    if (elapsed.toMillis() < failForMillis) {
+                        var message = String.format(
+                                "Flaky API failing - elapsed time (%.1fs) < %.1fs",
+                                elapsed.toMillis() / 1000.0, failForMillis / 1000.0);
+                        logger.warn(message);
+                        throw new RuntimeException(message);
+                    } else {
+                        var message = String.format(
+                                "Flaky API succeeded - elapsed time (%.1fs) >= %.1fs",
+                                elapsed.toMillis() / 1000.0, failForMillis / 1000.0);
+                        logger.info(message);
+                        return message;
+                    }
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
+                        .build());
+
+        logger.info("Flaky API result: {}", result);
+
+        // Step 4: Wait a bit before finishing
+        context.wait(null, Duration.ofSeconds(2));
+
+        logger.info("Retry example completed successfully");
+        return "Retry example completed: " + result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.html new file mode 100644 index 000000000..c660e8fc2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.html @@ -0,0 +1 @@ +RetryInProcessExample

RetryInProcessExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total114 of 1140%2 of 20%66343455
handleRequest(Object, DurableContext)470%n/a11121211
lambda$handleRequest$0(StepContext)330%20%22111111
lambda$handleRequest$1(StepContext)210%n/a118811
RetryInProcessExample()90%n/a112211
static {...}40%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.java.html new file mode 100644 index 000000000..a73dfed12 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryInProcessExample.java.html @@ -0,0 +1,91 @@ +RetryInProcessExample.java

RetryInProcessExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.step;
+
+import java.time.Duration;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.retry.JitterStrategy;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating in-process retry behavior with concurrent operations.
+ *
+ * <p>This example shows:
+ *
+ * <ul>
+ *   <li>An async step that fails and retries while other work continues
+ *   <li>A long-running synchronous step that keeps the process busy
+ *   <li>Retry happens in-process without suspension because main thread is active
+ * </ul>
+ */
+public class RetryInProcessExample extends DurableHandler<Object, String> {
+
+    private static final Logger logger = LoggerFactory.getLogger(RetryInProcessExample.class);
+
+    private final AtomicInteger attemptCount = new AtomicInteger(0);
+
+    @Override
+    public String handleRequest(Object input, DurableContext context) {
+        logger.info("Starting retry in-process example");
+
+        // Start async step that will fail and retry
+        DurableFuture<String> asyncStep = context.stepAsync(
+                "flaky-async-operation",
+                String.class,
+                stepCtx -> {
+                    int attempt = attemptCount.incrementAndGet();
+                    logger.info(
+                            "Async operation attempt #{} in thread: {}",
+                            attempt,
+                            Thread.currentThread().getName());
+
+                    // Fail first 2 attempts, succeed on 3rd
+                    if (attempt < 3) {
+                        var message = "Async operation failing on attempt " + attempt;
+                        logger.warn(message);
+                        throw new RuntimeException(message);
+                    } else {
+                        var message = "Async operation succeeded on attempt " + attempt;
+                        logger.info(message);
+                        return message;
+                    }
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.exponentialBackoff(
+                                5, Duration.ofSeconds(1), Duration.ofSeconds(10), 2.0, JitterStrategy.NONE))
+                        .build());
+
+        // Long-running synchronous step that keeps process busy
+        // This prevents suspension during async step retries
+        String syncResult = context.step("long-running-operation", String.class, stepCtx -> {
+            logger.info(
+                    "Starting long-running operation (10 seconds) in thread: {}",
+                    Thread.currentThread().getName());
+            try {
+                Thread.sleep(10000); // 10 seconds
+                logger.info("Long-running operation completed");
+                return "Long operation completed";
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                throw new RuntimeException("Long operation interrupted", e);
+            }
+        });
+
+        // Get async step result (should be ready by now due to retries during sync
+        // step)
+        logger.info("Getting async step result");
+        String asyncResult = asyncStep.get();
+
+        logger.info("Sync result: {}", syncResult);
+        logger.info("Async result: {}", asyncResult);
+
+        return "Retry in-process completed - Sync: " + syncResult + ", Async: " + asyncResult;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.html new file mode 100644 index 000000000..494c39640 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.html @@ -0,0 +1 @@ +SimpleStepExample

SimpleStepExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 39100%0 of 0n/a050505
handleRequest(GreetingRequest, DurableContext)26100%n/a010401
lambda$handleRequest$0(GreetingRequest, StepContext)4100%n/a010101
SimpleStepExample()3100%n/a010101
lambda$handleRequest$2(String, StepContext)3100%n/a010101
lambda$handleRequest$1(String, StepContext)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.java.html new file mode 100644 index 000000000..db0e3d862 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.java.html @@ -0,0 +1,36 @@ +SimpleStepExample.java

SimpleStepExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.step;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Simple example demonstrating basic step execution with the Durable Execution SDK.
+ *
+ * <p>This handler processes a greeting request through three sequential steps:
+ *
+ * <ol>
+ *   <li>Create greeting message
+ *   <li>Transform to uppercase
+ *   <li>Add punctuation
+ * </ol>
+ */
+public class SimpleStepExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        // Step 1: Create greeting
+        var greeting = context.step("create-greeting", String.class, stepCtx -> "Hello, " + input.getName());
+
+        // Step 2: Transform to uppercase
+        var uppercase = context.step("to-uppercase", String.class, stepCtx -> greeting.toUpperCase());
+
+        // Step 3: Add punctuation
+        var result = context.step("add-punctuation", String.class, stepCtx -> uppercase + "!");
+
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.html new file mode 100644 index 000000000..e715d6645 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.step

software.amazon.lambda.durable.examples.step

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total173 of 51966%4 of 850%8314611052718
RetryInProcessExample1140%20%6634345511
RetryExample499365%1150%179310601
DeserializationFailureExample83581%n/a032110301
DeserializationFailureExample.FailedSerDes21789%1150%12140101
ManyAsyncStepsExample141100%2100%060230501
SimpleStepExample39100%n/a05050501
ManyAsyncStepsExample.Output12100%n/a01010101
ManyAsyncStepsExample.Input9100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.source.html new file mode 100644 index 000000000..c413ca651 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.step

software.amazon.lambda.durable.examples.step

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total173 of 51966%4 of 850%8314611052718
RetryInProcessExample.java1140%20%6634345511
RetryExample.java499365%1150%179310601
DeserializationFailureExample.java105283%1150%153150402
ManyAsyncStepsExample.java162100%2100%080250703
SimpleStepExample.java39100%n/a05050501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.html new file mode 100644 index 000000000..88876c739 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.html @@ -0,0 +1 @@ +ApprovalRequest

ApprovalRequest

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 18100%0 of 0n/a020302
ApprovalRequest(String, double, Integer)12100%n/a010101
ApprovalRequest(String, double)6100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.java.html new file mode 100644 index 000000000..ec0d71e7d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.java.html @@ -0,0 +1,12 @@ +ApprovalRequest.java

ApprovalRequest.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.types;
+
+/** Input for the approval workflow. */
+public record ApprovalRequest(String description, double amount, Integer timeoutSeconds) {
+    // Convenience constructor for default timeout
+    public ApprovalRequest(String description, double amount) {
+        this(description, amount, null);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.html new file mode 100644 index 000000000..2066e71e8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.html @@ -0,0 +1 @@ +GreetingRequest

GreetingRequest

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 2100%050704
getName()8100%2100%020101
GreetingRequest(String)6100%n/a010301
setName(String)4100%n/a010201
GreetingRequest()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.java.html new file mode 100644 index 000000000..424452a90 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.java.html @@ -0,0 +1,22 @@ +GreetingRequest.java

GreetingRequest.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.types;
+
+public class GreetingRequest {
+    private String name;
+
+    public GreetingRequest() {}
+
+    public GreetingRequest(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name != null ? name : "World";
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.html new file mode 100644 index 000000000..5d405ecc9 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.types

software.amazon.lambda.durable.examples.types

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 39100%0 of 2100%070100602
GreetingRequest21100%2100%05070401
ApprovalRequest18100%n/a02030201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.source.html new file mode 100644 index 000000000..7dba8ab3e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.types

software.amazon.lambda.durable.examples.types

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 39100%0 of 2100%070100602
GreetingRequest.java21100%2100%05070401
ApprovalRequest.java18100%n/a02030201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample$Input.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample$Input.html new file mode 100644 index 000000000..fc16297c1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample$Input.html @@ -0,0 +1 @@ +ConcurrentWaitForConditionExample.Input

ConcurrentWaitForConditionExample.Input

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
ConcurrentWaitForConditionExample.Input(int, int, int)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.html new file mode 100644 index 000000000..d9119a9b2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.html @@ -0,0 +1 @@ +ConcurrentWaitForConditionExample

ConcurrentWaitForConditionExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 65100%0 of 2100%0501304
handleRequest(ConcurrentWaitForConditionExample.Input, DurableContext)28100%n/a010401
lambda$handleRequest$1(ConcurrentWaitForConditionExample.Input, Integer, int, DurableContext)19100%n/a010501
lambda$handleRequest$0(ConcurrentWaitForConditionExample.Input, Integer, StepContext)15100%2100%020301
ConcurrentWaitForConditionExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.java.html new file mode 100644 index 000000000..8156a6f90 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.java.html @@ -0,0 +1,58 @@ +ConcurrentWaitForConditionExample.java

ConcurrentWaitForConditionExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import java.util.stream.IntStream;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+
+/**
+ * Example demonstrating concurrent waitForCondition operations using map.
+ *
+ * <p>Runs many (totalOperations) waitForCondition operations concurrently (maxConcurrency). Each operation:
+ *
+ * <ol>
+ *   <li>Uses attempt count as state (replay-safe).
+ *   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
+ * </ol>
+ */
+public class ConcurrentWaitForConditionExample extends DurableHandler<ConcurrentWaitForConditionExample.Input, String> {
+
+    public record Input(int threshold, int totalOperations, int maxConcurrency) {}
+
+    @Override
+    public String handleRequest(Input input, DurableContext context) {
+        var items = IntStream.range(0, input.totalOperations()).boxed().toList();
+
+        var config = MapConfig.builder().maxConcurrency(input.maxConcurrency()).build();
+
+        var result = context.map(
+                "concurrent-wait-for-conditions",
+                items,
+                String.class,
+                (item, index, ctx) -> {
+                    var conditionConfig = WaitForConditionConfig.<Integer>builder()
+                            .initialState(1)
+                            .build();
+                    // Poll until the counter reaches the input threshold
+                    var count = ctx.waitForCondition(
+                            "condition-" + index,
+                            Integer.class,
+                            (callCount, stepCtx) -> {
+                                if (callCount >= input.threshold()) {
+                                    return WaitForConditionResult.stopPolling(callCount);
+                                }
+                                return WaitForConditionResult.continuePolling(callCount + 1);
+                            },
+                            conditionConfig);
+                    return String.valueOf(count);
+                },
+                config);
+
+        return String.join(" | ", result.results());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.html new file mode 100644 index 000000000..7c68cceee --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.html @@ -0,0 +1 @@ +WaitAsyncExample

WaitAsyncExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 50100%0 of 0n/a030903
handleRequest(GreetingRequest, DurableContext)43100%n/a010801
lambda$handleRequest$0(GreetingRequest, StepContext)4100%n/a010101
WaitAsyncExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.java.html new file mode 100644 index 000000000..ca359e7b8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.java.html @@ -0,0 +1,45 @@ +WaitAsyncExample.java

WaitAsyncExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Example demonstrating non-blocking wait with waitAsync().
+ *
+ * <p>This handler starts a wait and a step concurrently, then collects both results. The wait acts as a minimum
+ * duration guarantee β€” the step runs in parallel, and the handler only proceeds once both the step completes and the
+ * wait elapses.
+ *
+ * <ol>
+ *   <li>Start a 5-second async wait (non-blocking)
+ *   <li>Start an async step concurrently
+ *   <li>Collect both results β€” ensures at least 5 seconds have passed
+ * </ol>
+ */
+public class WaitAsyncExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        context.getLogger().info("Starting waitAsync example for {}", input.getName());
+
+        // Start a non-blocking wait β€” returns immediately
+        DurableFuture<Void> waitFuture = context.waitAsync("min-delay", Duration.ofSeconds(5));
+
+        // Run a step concurrently while the wait timer is ticking
+        DurableFuture<String> stepFuture =
+                context.stepAsync("process", String.class, stepCtx -> "Processed: " + input.getName());
+
+        // Block until both complete β€” guarantees at least 5 seconds elapsed
+        waitFuture.get();
+        var result = stepFuture.get();
+
+        context.getLogger().info("Both wait and step complete: {}", result);
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.html new file mode 100644 index 000000000..efa5444d0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.html @@ -0,0 +1 @@ +WaitAtLeastExample

WaitAtLeastExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total68 of 680%0 of 0n/a44212144
handleRequest(GreetingRequest, DurableContext)380%n/a11111111
lambda$handleRequest$0(GreetingRequest, StepContext)230%n/a118811
static {...}40%n/a111111
WaitAtLeastExample()30%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.java.html new file mode 100644 index 000000000..86729f3bc --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastExample.java.html @@ -0,0 +1,69 @@ +WaitAtLeastExample.java

WaitAtLeastExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import java.time.Duration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating concurrent stepAsync() with wait() operations.
+ *
+ * <p>This example shows suspension behavior with pending async steps:
+ *
+ * <ul>
+ *   <li>stepAsync() starts a background operation (takes 2 seconds)
+ *   <li>wait() is called immediately (3 second duration)
+ *   <li>The step completes successfully before suspension
+ *   <li>Execution suspends for the wait time
+ * </ul>
+ */
+public class WaitAtLeastExample extends DurableHandler<GreetingRequest, String> {
+
+    private static final Logger logger = LoggerFactory.getLogger(WaitAtLeastExample.class);
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        logger.info("Starting concurrent step + wait example for: {}", input.getName());
+
+        // Start an async step that takes 2 seconds
+        DurableFuture<String> asyncStep = context.stepAsync(
+                "async-operation",
+                String.class,
+                stepCtx -> {
+                    logger.info(
+                            "Async operation starting in thread: {}",
+                            Thread.currentThread().getName());
+                    try {
+                        Thread.sleep(2000); // 2 seconds
+                        logger.info("Async operation completed successfully");
+                        return "Processed: " + input.getName();
+                    } catch (InterruptedException e) {
+                        Thread.currentThread().interrupt();
+                        throw new RuntimeException("Operation interrupted", e);
+                    }
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
+                        .build());
+
+        // Immediately wait for 3 seconds
+        // The async step will complete during this wait
+        logger.info("Waiting 3 seconds (async step will complete in 2s)");
+        context.wait("wait-3-seconds", Duration.ofSeconds(3));
+
+        // After wait, get the async step result
+        logger.info("Resumed after wait");
+        String result = asyncStep.get();
+        logger.info("Final result: {}", result);
+
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.html new file mode 100644 index 000000000..40803fda5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.html @@ -0,0 +1 @@ +WaitAtLeastInProcessExample

WaitAtLeastInProcessExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total68 of 680%0 of 0n/a44212144
handleRequest(GreetingRequest, DurableContext)380%n/a11111111
lambda$handleRequest$0(GreetingRequest, StepContext)230%n/a118811
static {...}40%n/a111111
WaitAtLeastInProcessExample()30%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.java.html new file mode 100644 index 000000000..1c0a58851 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAtLeastInProcessExample.java.html @@ -0,0 +1,69 @@ +WaitAtLeastInProcessExample.java

WaitAtLeastInProcessExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import java.time.Duration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+import software.amazon.lambda.durable.retry.RetryStrategies;
+
+/**
+ * Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.
+ *
+ * <p>This example shows in-process wait behavior:
+ *
+ * <ul>
+ *   <li>stepAsync() starts a background operation (takes 10 seconds)
+ *   <li>wait() is called immediately (3 second duration)
+ *   <li>The async step takes longer than the wait duration
+ *   <li>No suspension occurs because we've already waited long enough
+ * </ul>
+ */
+public class WaitAtLeastInProcessExample extends DurableHandler<GreetingRequest, String> {
+
+    private static final Logger logger = LoggerFactory.getLogger(WaitAtLeastInProcessExample.class);
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        logger.info("Starting concurrent step + wait example for: {}", input.getName());
+
+        // Start an async step that takes 10 seconds
+        DurableFuture<String> asyncStep = context.stepAsync(
+                "async-operation",
+                String.class,
+                stepCtx -> {
+                    logger.info(
+                            "Async operation starting in thread: {}",
+                            Thread.currentThread().getName());
+                    try {
+                        Thread.sleep(10000); // 10 seconds
+                        logger.info("Async operation completed successfully");
+                        return "Processed: " + input.getName();
+                    } catch (InterruptedException e) {
+                        Thread.currentThread().interrupt();
+                        throw new RuntimeException("Operation interrupted", e);
+                    }
+                },
+                StepConfig.builder()
+                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
+                        .build());
+
+        // Immediately wait for 3 seconds
+        // The async step will still be running and will complete after the wait
+        logger.info("Waiting 3 seconds (async step will complete in 10s - no suspension expected)");
+        context.wait("wait-3-seconds", Duration.ofSeconds(3));
+
+        // After wait, get the async step result
+        logger.info("Wait completed, getting async result");
+        String result = asyncStep.get();
+        logger.info("Final result: {}", result);
+
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.html new file mode 100644 index 000000000..bc5be11b8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.html @@ -0,0 +1 @@ +WaitExample

WaitExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total67 of 8218%0 of 0n/a36131636
handleRequest(GreetingRequest, DurableContext)42816%n/a016801
lambda$handleRequest$1(String, StepContext)120%n/a115511
lambda$handleRequest$2(String, DurableContext)90%n/a112211
lambda$handleRequest$3(Object, StepContext)40%n/a111111
lambda$handleRequest$0(GreetingRequest, StepContext)4100%n/a010101
WaitExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.java.html new file mode 100644 index 000000000..3a7883f80 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.java.html @@ -0,0 +1,60 @@ +WaitExample.java

WaitExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.examples.types.GreetingRequest;
+
+/**
+ * Example demonstrating step execution with wait operations.
+ *
+ * <p>This handler processes a request through steps with delays:
+ *
+ * <ol>
+ *   <li>Start processing
+ *   <li>Wait 10 seconds
+ *   <li>Continue processing
+ *   <li>Wait 5 seconds
+ *   <li>Complete
+ * </ol>
+ */
+public class WaitExample extends DurableHandler<GreetingRequest, String> {
+
+    @Override
+    public String handleRequest(GreetingRequest input, DurableContext context) {
+        // Step 1: Start processing
+        var started =
+                context.step("start-processing", String.class, stepCtx -> "Started processing for " + input.getName());
+
+        // Wait 10 seconds
+        context.wait(null, Duration.ofSeconds(10));
+
+        // Step 2: Continue processing
+        var continued = context.stepAsync("continue-processing", String.class, stepCtx -> {
+            try {
+                Thread.sleep(10000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            return started + " - continued after 10s";
+        });
+
+        // Wait at most seconds
+        var wait5seconds = context.runInChildContextAsync("wait-5-seconds", String.class, ctx -> {
+            ctx.wait("wait-5-seconds", Duration.ofSeconds(5));
+
+            return started + " - waited 5 seconds";
+        });
+
+        var step2 = DurableFuture.anyOf(continued, wait5seconds);
+
+        // Step 3: Complete
+        var result = context.step("complete-processing", String.class, stepCtx -> step2 + " - completed after 5s more");
+
+        return result;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.html new file mode 100644 index 000000000..102490844 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.html @@ -0,0 +1 @@ +WaitForConditionExample

WaitForConditionExample

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 31100%0 of 2100%040603
lambda$handleRequest$0(Integer, Integer, StepContext)15100%2100%020301
handleRequest(Integer, DurableContext)13100%n/a010201
WaitForConditionExample()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.java.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.java.html new file mode 100644 index 000000000..d0428da08 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.java.html @@ -0,0 +1,39 @@ +WaitForConditionExample.java

WaitForConditionExample.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.examples.wait;
+
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+
+/**
+ * Example demonstrating the waitForCondition operation.
+ *
+ * <p>This handler polls a condition function until it signals completion:
+ *
+ * <ol>
+ *   <li>The attempt count is used as a state (replay safe)
+ *   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
+ * </ol>
+ */
+public class WaitForConditionExample extends DurableHandler<Integer, Integer> {
+
+    @Override
+    public Integer handleRequest(Integer threshold, DurableContext context) {
+        // Poll until the counter reaches the input threshold
+        return context.waitForCondition(
+                "wait-for-condition",
+                Integer.class,
+                (callCount, stepCtx) -> {
+                    if (callCount >= threshold) {
+                        // Condition met, stop polling
+                        return WaitForConditionResult.stopPolling(callCount);
+                    }
+                    // Condition not met, keep polling
+                    return WaitForConditionResult.continuePolling(callCount + 1);
+                },
+                WaitForConditionConfig.<Integer>builder().initialState(1).build());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.html new file mode 100644 index 000000000..942997158 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.wait

software.amazon.lambda.durable.examples.wait

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total203 of 37646%0 of 4100%11275587112527
WaitAtLeastInProcessExample680%n/a4421214411
WaitAtLeastExample680%n/a4421214411
WaitExample671518%n/a3613163601
ConcurrentWaitForConditionExample65100%2100%050130401
WaitAsyncExample50100%n/a03090301
WaitForConditionExample31100%2100%04060301
ConcurrentWaitForConditionExample.Input12100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.source.html b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.source.html new file mode 100644 index 000000000..d773c9eef --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.examples.wait

software.amazon.lambda.durable.examples.wait

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total203 of 37646%0 of 4100%11275587112527
WaitAtLeastInProcessExample.java680%n/a4421214411
WaitAtLeastExample.java680%n/a4421214411
WaitExample.java671518%n/a3613163601
ConcurrentWaitForConditionExample.java77100%2100%060140502
WaitAsyncExample.java50100%n/a03090301
WaitForConditionExample.java31100%2100%04060301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-integration-tests/index.html b/coverage/aws-durable-execution-sdk-java-integration-tests/index.html new file mode 100644 index 000000000..28df99cfb --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-integration-tests/index.html @@ -0,0 +1 @@ +aws-durable-execution-sdk-java-integration-tests

aws-durable-execution-sdk-java-integration-tests

No class files specified.

\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/index.html b/coverage/aws-durable-execution-sdk-java-testing/index.html new file mode 100644 index 000000000..9193feaf2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/index.html @@ -0,0 +1 @@ +aws-durable-execution-sdk-java-testing

aws-durable-execution-sdk-java-testing

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total1,684 of 3,41750%259 of 36629%22536942283763160310
software.amazon.lambda.durable.testing.cloud8510%1720%110110241241121222
software.amazon.lambda.durable.testing68064948%562228%821411472934910215
software.amazon.lambda.durable.testing.local1531,08487%318573%331183430324603
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.html new file mode 100644 index 000000000..ae39fbf18 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.html @@ -0,0 +1 @@ +HistoryEventProcessor

HistoryEventProcessor

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total755 of 7550%160 of 1600%10010021221288
processEvents(List, TypeToken, SerDes)4350%980%606011311311
createInvokeOperation(String, Event)1160%300%1818373711
createCallbackOperation(String, String, OperationStatus, Event)820%160%99232311
createContextOperation(String, String, OperationStatus, Event)600%120%77171711
createStepOperation(String, String, String, OperationStatus, Integer)280%20%22111111
createWaitOperation(String, String, OperationStatus, Event)270%20%22101011
lambda$processEvents$0(String)40%n/a111111
HistoryEventProcessor()0%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.java.html new file mode 100644 index 000000000..00c007028 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryEventProcessor.java.html @@ -0,0 +1,393 @@ +HistoryEventProcessor.java

HistoryEventProcessor.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing.cloud;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import software.amazon.awssdk.services.lambda.model.CallbackDetails;
+import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
+import software.amazon.awssdk.services.lambda.model.ContextDetails;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Event;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.StepDetails;
+import software.amazon.awssdk.services.lambda.model.WaitDetails;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.model.ExecutionStatus;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.testing.AsyncExecution;
+import software.amazon.lambda.durable.testing.CloudDurableTestRunner;
+import software.amazon.lambda.durable.testing.TestOperation;
+import software.amazon.lambda.durable.testing.TestResult;
+
+/**
+ * Processes execution history events from the GetDurableExecutionHistory API into {@link TestResult} objects. Used by
+ * {@link CloudDurableTestRunner} and {@link AsyncExecution} to convert cloud execution history into testable results.
+ */
+public class HistoryEventProcessor {
+    /**
+     * Processes a list of execution history events into a structured {@link TestResult}.
+     *
+     * @param events the raw history events from the GetDurableExecutionHistory API
+     * @param outputType the expected output type for deserialization
+     * @param <O> the handler output type
+     * @return a TestResult containing the execution status, output, and operation details
+     */
+    public <O> TestResult<O> processEvents(List<Event> events, TypeToken<O> outputType, SerDes serDes) {
+        var operations = new HashMap<String, Operation>();
+        var operationEvents = new HashMap<String, List<Event>>();
+        var status = ExecutionStatus.PENDING;
+        String result = null;
+        ErrorObject error = null;
+
+        for (var event : events) {
+            var eventType = event.eventType();
+            var operationId = event.id();
+
+            // Group events by operation
+            if (operationId != null) {
+                operationEvents
+                        .computeIfAbsent(operationId, k -> new ArrayList<>())
+                        .add(event);
+            }
+
+            switch (eventType) {
+                case EXECUTION_STARTED -> {
+                    // Execution started - no action needed, just track the event
+                }
+                case INVOCATION_COMPLETED -> {
+                    var details = event.invocationCompletedDetails();
+                    if (details != null
+                            && details.error() != null
+                            && details.error().payload() != null) {
+                        // This will get overridden by the execution events but
+                        // the test cases will still be able to see the error
+                        // if the execution succeeds.
+                        status = ExecutionStatus.FAILED;
+                        error = details.error().payload();
+                    }
+                }
+                case EXECUTION_SUCCEEDED -> {
+                    status = ExecutionStatus.SUCCEEDED;
+                    var details = event.executionSucceededDetails();
+                    if (details != null
+                            && details.result() != null
+                            && details.result().payload() != null) {
+                        result = details.result().payload();
+                    }
+                }
+                case EXECUTION_FAILED -> {
+                    status = ExecutionStatus.FAILED;
+                    var details = event.executionFailedDetails();
+                    if (details != null
+                            && details.error() != null
+                            && details.error().payload() != null) {
+                        error = details.error().payload();
+                    }
+                }
+                case EXECUTION_TIMED_OUT -> {
+                    status = ExecutionStatus.FAILED;
+                    var details = event.executionTimedOutDetails();
+                    if (details != null
+                            && details.error() != null
+                            && details.error().payload() != null) {
+                        error = details.error().payload();
+                    }
+                }
+                case EXECUTION_STOPPED -> {
+                    status = ExecutionStatus.FAILED;
+
+                    var details = event.executionStoppedDetails();
+                    if (details != null
+                            && details.error() != null
+                            && details.error().payload() != null) {
+                        error = details.error().payload();
+                    }
+                }
+                case STEP_STARTED -> {
+                    if (operationId != null) {
+                        operations.putIfAbsent(
+                                operationId,
+                                createStepOperation(operationId, event.name(), null, OperationStatus.STARTED, 1));
+                    }
+                }
+                case STEP_SUCCEEDED -> {
+                    if (operationId != null) {
+                        var details = event.stepSucceededDetails();
+                        var stepResult = details != null && details.result() != null
+                                ? details.result().payload()
+                                : null;
+                        var attempt = details != null && details.retryDetails() != null
+                                ? details.retryDetails().currentAttempt()
+                                : 1;
+                        operations.put(
+                                operationId,
+                                createStepOperation(
+                                        operationId, event.name(), stepResult, OperationStatus.SUCCEEDED, attempt));
+                    }
+                }
+                case STEP_FAILED -> {
+                    if (operationId != null) {
+                        var details = event.stepFailedDetails();
+                        var attempt = details != null && details.retryDetails() != null
+                                ? details.retryDetails().currentAttempt()
+                                : 1;
+                        operations.put(
+                                operationId,
+                                createStepOperation(operationId, event.name(), null, OperationStatus.FAILED, attempt));
+                    }
+                }
+
+                case WAIT_STARTED -> {
+                    if (operationId != null) {
+                        operations.putIfAbsent(
+                                operationId,
+                                createWaitOperation(operationId, event.name(), OperationStatus.STARTED, event));
+                    }
+                }
+                case WAIT_SUCCEEDED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createWaitOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
+                    }
+                }
+                case WAIT_CANCELLED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createWaitOperation(operationId, event.name(), OperationStatus.CANCELLED, event));
+                    }
+                }
+
+                case CALLBACK_STARTED -> {
+                    if (operationId != null) {
+                        operations.putIfAbsent(
+                                operationId,
+                                createCallbackOperation(operationId, event.name(), OperationStatus.STARTED, event));
+                    }
+                }
+                case CALLBACK_SUCCEEDED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createCallbackOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
+                    }
+                }
+                case CALLBACK_FAILED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createCallbackOperation(operationId, event.name(), OperationStatus.FAILED, event));
+                    }
+                }
+                case CALLBACK_TIMED_OUT -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createCallbackOperation(operationId, event.name(), OperationStatus.TIMED_OUT, event));
+                    }
+                }
+
+                case UNKNOWN_TO_SDK_VERSION -> {
+                    // Unknown event type - log and ignore gracefully
+                }
+
+                case CONTEXT_STARTED -> {
+                    if (operationId != null) {
+                        operations.putIfAbsent(
+                                operationId,
+                                createContextOperation(operationId, event.name(), OperationStatus.STARTED, event));
+                    }
+                }
+                case CONTEXT_SUCCEEDED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createContextOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
+                    }
+                }
+                case CONTEXT_FAILED -> {
+                    if (operationId != null) {
+                        operations.put(
+                                operationId,
+                                createContextOperation(operationId, event.name(), OperationStatus.FAILED, event));
+                    }
+                }
+
+                case CHAINED_INVOKE_STARTED,
+                        CHAINED_INVOKE_SUCCEEDED,
+                        CHAINED_INVOKE_FAILED,
+                        CHAINED_INVOKE_TIMED_OUT,
+                        CHAINED_INVOKE_STOPPED -> {
+                    if (operationId != null) {
+                        operations.putIfAbsent(operationId, createInvokeOperation(operationId, event));
+                    }
+                }
+
+                default -> throw new UnsupportedOperationException("Unknown operation: " + eventType);
+            }
+        }
+
+        // Build TestOperations with events
+        var testOperations = new ArrayList<TestOperation>();
+        for (var entry : operations.entrySet()) {
+            var opEvents = operationEvents.getOrDefault(entry.getKey(), List.of());
+            testOperations.add(new TestOperation(entry.getValue(), opEvents, serDes));
+        }
+
+        return new TestResult<>(status, result, error, testOperations, events, outputType, serDes);
+    }
+
+    private Operation createStepOperation(
+            String id, String name, String stepResult, OperationStatus status, Integer attempt) {
+        var stepDetails = StepDetails.builder()
+                .result(stepResult)
+                .attempt(attempt != null ? attempt : 1)
+                .build();
+
+        return Operation.builder()
+                .id(id)
+                .name(name)
+                .status(status)
+                .type(OperationType.STEP)
+                .stepDetails(stepDetails)
+                .build();
+    }
+
+    private Operation createWaitOperation(String id, String name, OperationStatus status, Event event) {
+        var builder = WaitDetails.builder();
+        if (event.waitStartedDetails() != null) {
+            builder.scheduledEndTimestamp(event.waitStartedDetails().scheduledEndTimestamp());
+        }
+
+        return Operation.builder()
+                .id(id)
+                .name(name)
+                .status(status)
+                .type(OperationType.WAIT)
+                .waitDetails(builder.build())
+                .build();
+    }
+
+    private Operation createCallbackOperation(String id, String name, OperationStatus status, Event event) {
+        var builder = CallbackDetails.builder();
+
+        // Extract callback ID and details from event
+        if (event.callbackStartedDetails() != null) {
+            var details = event.callbackStartedDetails();
+            if (details.callbackId() != null) {
+                builder.callbackId(details.callbackId());
+            }
+        } else if (event.callbackSucceededDetails() != null) {
+            var details = event.callbackSucceededDetails();
+            // CallbackSucceededDetails doesn't have callbackId, need to get it from started event
+            if (details.result() != null && details.result().payload() != null) {
+                builder.result(details.result().payload());
+            }
+        } else if (event.callbackFailedDetails() != null) {
+            var details = event.callbackFailedDetails();
+            // CallbackFailedDetails doesn't have callbackId, need to get it from started event
+            if (details.error() != null && details.error().payload() != null) {
+                builder.error(ErrorObject.builder()
+                        .errorType(details.error().payload().errorType())
+                        .errorMessage(details.error().payload().errorMessage())
+                        .build());
+            }
+        }
+
+        return Operation.builder()
+                .id(id)
+                .name(name)
+                .status(status)
+                .type(OperationType.CALLBACK)
+                .callbackDetails(builder.build())
+                .build();
+    }
+
+    private Operation createInvokeOperation(String id, Event event) {
+        var builder = ChainedInvokeDetails.builder();
+
+        OperationStatus status =
+                switch (event.eventType()) {
+                    case CHAINED_INVOKE_STARTED -> OperationStatus.STARTED;
+                    case CHAINED_INVOKE_SUCCEEDED -> {
+                        var details = event.callbackSucceededDetails();
+                        if (details != null
+                                && details.result() != null
+                                && details.result().payload() != null) {
+                            builder.result(details.result().payload());
+                        }
+                        yield OperationStatus.SUCCEEDED;
+                    }
+                    case CHAINED_INVOKE_FAILED -> {
+                        var details = event.callbackFailedDetails();
+                        if (details != null
+                                && details.error() != null
+                                && details.error().payload() != null) {
+                            builder.error(details.error().payload());
+                        }
+                        yield OperationStatus.FAILED;
+                    }
+                    case CHAINED_INVOKE_STOPPED -> {
+                        var details = event.chainedInvokeStoppedDetails();
+                        if (details != null
+                                && details.error() != null
+                                && details.error().payload() != null) {
+                            builder.error(details.error().payload());
+                        }
+
+                        yield OperationStatus.STOPPED;
+                    }
+                    case CHAINED_INVOKE_TIMED_OUT -> {
+                        var details = event.chainedInvokeTimedOutDetails();
+                        if (details != null
+                                && details.error() != null
+                                && details.error().payload() != null) {
+                            builder.error(details.error().payload());
+                        }
+                        yield OperationStatus.TIMED_OUT;
+                    }
+                    default ->
+                        throw new UnsupportedOperationException(
+                                "Unknown chained invocation operation: " + event.eventType());
+                };
+
+        return Operation.builder()
+                .id(id)
+                .name(event.name())
+                .status(status)
+                .type(OperationType.CHAINED_INVOKE)
+                .chainedInvokeDetails(builder.build())
+                .build();
+    }
+
+    private Operation createContextOperation(String id, String name, OperationStatus status, Event event) {
+        var builder = ContextDetails.builder();
+
+        if (event.contextSucceededDetails() != null) {
+            var details = event.contextSucceededDetails();
+            if (details.result() != null && details.result().payload() != null) {
+                builder.result(details.result().payload());
+            }
+        } else if (event.contextFailedDetails() != null) {
+            var details = event.contextFailedDetails();
+            if (details.error() != null && details.error().payload() != null) {
+                builder.error(details.error().payload());
+            }
+        }
+
+        return Operation.builder()
+                .id(id)
+                .name(name)
+                .status(status)
+                .type(OperationType.CONTEXT)
+                .subType(event.subType())
+                .contextDetails(builder.build())
+                .build();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.html new file mode 100644 index 000000000..7c2dfb428 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.html @@ -0,0 +1 @@ +HistoryPoller

HistoryPoller

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total96 of 960%12 of 120%1010292944
pollUntilComplete(String, Duration, Duration)700%80%55232311
lambda$isExecutionComplete$0(Event)150%40%332211
HistoryPoller(LambdaClient)60%n/a113311
isExecutionComplete(List)50%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.java.html new file mode 100644 index 000000000..dd7d934c0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/HistoryPoller.java.html @@ -0,0 +1,80 @@ +HistoryPoller.java

HistoryPoller.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing.cloud;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.awssdk.services.lambda.model.Event;
+import software.amazon.awssdk.services.lambda.model.EventType;
+import software.amazon.awssdk.services.lambda.model.GetDurableExecutionHistoryRequest;
+import software.amazon.lambda.durable.testing.CloudDurableTestRunner;
+
+/**
+ * Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached. Used by
+ * {@link CloudDurableTestRunner} for synchronous test execution.
+ */
+public class HistoryPoller {
+    private final LambdaClient lambdaClient;
+
+    /** Creates a poller backed by the given Lambda client. */
+    public HistoryPoller(LambdaClient lambdaClient) {
+        this.lambdaClient = lambdaClient;
+    }
+
+    /**
+     * Polls execution history until a terminal event is found or the timeout is exceeded.
+     *
+     * @param executionArn the durable execution ARN to poll
+     * @param pollInterval the interval between poll requests
+     * @param timeout the maximum time to wait for completion
+     * @return all history events collected during polling
+     * @throws RuntimeException if the timeout is exceeded or polling is interrupted
+     */
+    public List<Event> pollUntilComplete(String executionArn, Duration pollInterval, Duration timeout) {
+        var allEvents = new ArrayList<Event>();
+        var startTime = Instant.now();
+        String marker = null;
+
+        while (Duration.between(startTime, Instant.now()).compareTo(timeout) < 0) {
+            var request = GetDurableExecutionHistoryRequest.builder()
+                    .durableExecutionArn(executionArn)
+                    .includeExecutionData(true)
+                    .marker(marker)
+                    .build();
+
+            var response = lambdaClient.getDurableExecutionHistory(request);
+            var events = response.events();
+
+            allEvents.addAll(events);
+
+            if (isExecutionComplete(events)) {
+                return allEvents;
+            }
+
+            marker = response.nextMarker();
+            if (marker == null && events.isEmpty()) {
+                // No more events and no new events - wait and try again
+            }
+
+            try {
+                Thread.sleep(pollInterval.toMillis());
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                throw new RuntimeException("Polling interrupted", e);
+            }
+        }
+
+        throw new RuntimeException("Execution timeout exceeded");
+    }
+
+    private boolean isExecutionComplete(List<Event> events) {
+        return events.stream().anyMatch(event -> {
+            var eventType = event.eventType();
+            return EventType.EXECUTION_SUCCEEDED.equals(eventType) || EventType.EXECUTION_FAILED.equals(eventType);
+        });
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.html new file mode 100644 index 000000000..22a4589d1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing.cloud

software.amazon.lambda.durable.testing.cloud

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total851 of 8510%172 of 1720%110110241241121222
HistoryEventProcessor7550%1600%1001002122128811
HistoryPoller960%120%101029294411
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.source.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.source.html new file mode 100644 index 000000000..22bbae7aa --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.cloud/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing.cloud

software.amazon.lambda.durable.testing.cloud

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total851 of 8510%172 of 1720%110110241241121222
HistoryEventProcessor.java7550%1600%1001002122128811
HistoryPoller.java960%120%101029294411
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.html new file mode 100644 index 000000000..05cdbfb20 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.html @@ -0,0 +1 @@ +EventProcessor

EventProcessor

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total113 of 43774%15 of 4062%15382411609
buildExecutionEvent(Event.Builder, OperationUpdate)352440%3125%34122001
buildCallbackEvent(Event.Builder, OperationUpdate)201339%3125%343501
buildWaitEvent(Event.Builder, OperationUpdate, Operation)194469%3350%3541501
buildStepEvent(Event.Builder, OperationUpdate, Operation)86989%1480%1512401
buildInvokeEvent(Event.Builder, OperationUpdate, Operation)86488%1375%1412601
processUpdate(OperationUpdate, Operation)85587%1685%1711301
buildContextEvent(Event.Builder, OperationUpdate)82575%1375%141501
buildRetryDetails(Operation)72175%2466%241601
EventProcessor()9100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.java.html new file mode 100644 index 000000000..6b41e5605 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.java.html @@ -0,0 +1,180 @@ +EventProcessor.java

EventProcessor.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing.local;
+
+import static software.amazon.awssdk.services.lambda.model.EventType.*;
+
+import java.time.Instant;
+import java.util.concurrent.atomic.AtomicInteger;
+import software.amazon.awssdk.services.lambda.model.*;
+
+/** Generates Event objects from OperationUpdate for local testing. */
+class EventProcessor {
+    private final AtomicInteger eventId = new AtomicInteger(1);
+
+    Event processUpdate(OperationUpdate update, Operation operation) {
+        var builder = Event.builder()
+                .eventId(eventId.getAndIncrement())
+                .eventTimestamp(Instant.now())
+                .id(update.id())
+                .name(update.name());
+
+        return switch (update.type()) {
+            case STEP -> buildStepEvent(builder, update, operation);
+            case WAIT -> buildWaitEvent(builder, update, operation);
+            case CHAINED_INVOKE -> buildInvokeEvent(builder, update, operation);
+            case EXECUTION -> buildExecutionEvent(builder, update);
+            case CALLBACK -> buildCallbackEvent(builder, update);
+            case CONTEXT -> buildContextEvent(builder, update);
+            default -> throw new IllegalArgumentException("Unsupported operation type: " + update.type());
+        };
+    }
+
+    private Event buildStepEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
+        return switch (update.action()) {
+            case START ->
+                builder.eventType(STEP_STARTED)
+                        .stepStartedDetails(StepStartedDetails.builder().build())
+                        .build();
+            case SUCCEED ->
+                builder.eventType(STEP_SUCCEEDED)
+                        .stepSucceededDetails(StepSucceededDetails.builder()
+                                .result(EventResult.builder()
+                                        .payload(update.payload())
+                                        .build())
+                                .retryDetails(buildRetryDetails(operation))
+                                .build())
+                        .build();
+            case FAIL ->
+                builder.eventType(STEP_FAILED)
+                        .stepFailedDetails(StepFailedDetails.builder()
+                                .error(EventError.builder()
+                                        .payload(update.error())
+                                        .build())
+                                .retryDetails(buildRetryDetails(operation))
+                                .build())
+                        .build();
+            case RETRY ->
+                builder.eventType(STEP_STARTED)
+                        .stepStartedDetails(StepStartedDetails.builder().build())
+                        .build();
+            default -> throw new IllegalArgumentException("Unsupported step action: " + update.action());
+        };
+    }
+
+    @SuppressWarnings("unused") // operation param kept for API consistency
+    private Event buildWaitEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
+        return switch (update.action()) {
+            case START -> {
+                var waitSeconds =
+                        update.waitOptions() != null ? update.waitOptions().waitSeconds() : 0;
+                yield builder.eventType(WAIT_STARTED)
+                        .waitStartedDetails(WaitStartedDetails.builder()
+                                .duration(waitSeconds)
+                                .scheduledEndTimestamp(Instant.now().plusSeconds(waitSeconds))
+                                .build())
+                        .build();
+            }
+            case SUCCEED ->
+                builder.eventType(WAIT_SUCCEEDED)
+                        .waitSucceededDetails(WaitSucceededDetails.builder().build())
+                        .build();
+            case CANCEL ->
+                builder.eventType(WAIT_CANCELLED)
+                        .waitCancelledDetails(WaitCancelledDetails.builder().build())
+                        .build();
+            default -> throw new IllegalArgumentException("Unsupported wait action: " + update.action());
+        };
+    }
+
+    @SuppressWarnings("unused") // operation param kept for API consistency
+    private Event buildInvokeEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
+        return switch (update.action()) {
+            case START ->
+                builder.eventType(EventType.CHAINED_INVOKE_STARTED)
+                        .chainedInvokeStartedDetails(ChainedInvokeStartedDetails.builder()
+                                .functionName(update.chainedInvokeOptions().functionName())
+                                .input(EventInput.builder()
+                                        .payload(update.payload())
+                                        .build())
+                                .build())
+                        .build();
+            case SUCCEED ->
+                builder.eventType(EventType.CHAINED_INVOKE_SUCCEEDED)
+                        .chainedInvokeSucceededDetails(ChainedInvokeSucceededDetails.builder()
+                                .result(EventResult.builder()
+                                        .payload(
+                                                operation.chainedInvokeDetails().result())
+                                        .build())
+                                .build())
+                        .build();
+            case FAIL ->
+                builder.eventType(EventType.CHAINED_INVOKE_FAILED)
+                        .chainedInvokeFailedDetails(ChainedInvokeFailedDetails.builder()
+                                .error(EventError.builder()
+                                        .payload(
+                                                operation.chainedInvokeDetails().error())
+                                        .build())
+                                .build())
+                        .build();
+
+            default -> throw new IllegalArgumentException("Unsupported invoke action: " + update.action());
+        };
+    }
+
+    private Event buildExecutionEvent(Event.Builder builder, OperationUpdate update) {
+        return switch (update.action()) {
+            case START ->
+                builder.eventType(EXECUTION_STARTED)
+                        .executionStartedDetails(
+                                ExecutionStartedDetails.builder().build())
+                        .build();
+            case SUCCEED ->
+                builder.eventType(EXECUTION_SUCCEEDED)
+                        .executionSucceededDetails(ExecutionSucceededDetails.builder()
+                                .result(EventResult.builder()
+                                        .payload(update.payload())
+                                        .build())
+                                .build())
+                        .build();
+            case FAIL ->
+                builder.eventType(EXECUTION_FAILED)
+                        .executionFailedDetails(ExecutionFailedDetails.builder()
+                                .error(EventError.builder()
+                                        .payload(update.error())
+                                        .build())
+                                .build())
+                        .build();
+            default -> throw new IllegalArgumentException("Unsupported execution action: " + update.action());
+        };
+    }
+
+    private Event buildCallbackEvent(Event.Builder builder, OperationUpdate update) {
+        return switch (update.action()) {
+            case START -> builder.eventType(CALLBACK_STARTED).build();
+            case SUCCEED -> builder.eventType(CALLBACK_SUCCEEDED).build();
+            case FAIL -> builder.eventType(CALLBACK_FAILED).build();
+            default -> throw new IllegalArgumentException("Unsupported callback action: " + update.action());
+        };
+    }
+
+    private Event buildContextEvent(Event.Builder builder, OperationUpdate update) {
+        return switch (update.action()) {
+            case START -> builder.eventType(EventType.CONTEXT_STARTED).build();
+            case SUCCEED -> builder.eventType(EventType.CONTEXT_SUCCEEDED).build();
+            case FAIL -> builder.eventType(EventType.CONTEXT_FAILED).build();
+            default -> throw new IllegalArgumentException("Unsupported context action: " + update.action());
+        };
+    }
+
+    private RetryDetails buildRetryDetails(Operation operation) {
+        if (operation == null || operation.stepDetails() == null) {
+            return RetryDetails.builder().currentAttempt(1).build();
+        }
+        var attempt = operation.stepDetails().attempt();
+        return RetryDetails.builder()
+                .currentAttempt(attempt != null ? attempt : 1)
+                .build();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.html new file mode 100644 index 000000000..77fcc0e5d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.html @@ -0,0 +1 @@ +LocalMemoryExecutionClient

LocalMemoryExecutionClient

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total40 of 76094%16 of 7678%187510182232
buildCallbackDetails(OperationUpdate)93177%3350%340801
reset()70%n/a113311
completeCallback(String, OperationResult)63786%1150%1211201
toOperation(OperationUpdate)56893%2675%2811601
getAllEvents()40%n/a111111
deriveStatus(OperationAction)31482%2466%262701
buildWaitDetails(OperationUpdate)21789%1150%120301
buildChainedInvokeDetails(OperationUpdate)21386%1150%121601
getCallbackId(String)21386%2250%231401
completeChainedInvoke(String, OperationResult)85100%3770%3602601
buildStepDetails(OperationUpdate)83100%14100%0801601
lambda$advanceTime$1(AtomicBoolean, String, Operation)61100%6100%0401701
toTestResult(DurableExecutionOutput, TypeToken, SerDes)30100%n/a010801
resetCheckpointToStarted(String)30100%2100%020601
applyUpdate(OperationUpdate)28100%n/a010601
checkpoint(String, String, List)26100%n/a010901
buildContextDetails(OperationUpdate)26100%1375%130501
LocalMemoryExecutionClient()23100%n/a010501
simulateFireAndForgetCheckpointLoss(String)22100%2100%020501
advanceTime()14100%n/a010301
lambda$findOperationByCallbackId$5(String, Operation)13100%4100%030201
getOperationByName(String)12100%n/a010401
findOperationByCallbackId(String)12100%n/a010401
lambda$toTestResult$4(SerDes, Operation)10100%n/a010101
getExecutionState(String, String, String)8100%n/a010301
getEventsForOperation(String)8100%n/a010101
compositeKey(String, String)8100%2100%020101
lambda$toTestResult$3(Operation)8100%2100%020101
getAllOperations()6100%n/a010101
lambda$getOperationByName$2(String, Operation)5100%n/a010101
lambda$getEventsForOperation$0(String, Event)5100%n/a010101
getOperationUpdates()4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.java.html new file mode 100644 index 000000000..4b2f12747 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.java.html @@ -0,0 +1,337 @@ +LocalMemoryExecutionClient.java

LocalMemoryExecutionClient.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing.local;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+import software.amazon.awssdk.services.lambda.model.*;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.client.DurableExecutionClient;
+import software.amazon.lambda.durable.model.DurableExecutionOutput;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.testing.TestOperation;
+import software.amazon.lambda.durable.testing.TestResult;
+
+/**
+ * In-memory implementation of {@link DurableExecutionClient} for local testing. Stores operations and checkpoint state
+ * in memory, simulating the durable execution backend without AWS infrastructure.
+ */
+public class LocalMemoryExecutionClient implements DurableExecutionClient {
+    private final Map<String, Operation> operations = new ConcurrentHashMap<>();
+    private final List<Event> allEvents = new CopyOnWriteArrayList<>();
+    private final EventProcessor eventProcessor = new EventProcessor();
+    private final List<OperationUpdate> operationUpdates = new CopyOnWriteArrayList<>();
+
+    @Override
+    public CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates) {
+        operationUpdates.addAll(updates);
+        updates.forEach(this::applyUpdate);
+
+        var newToken = UUID.randomUUID().toString();
+
+        return CheckpointDurableExecutionResponse.builder()
+                .checkpointToken(newToken)
+                .newExecutionState(CheckpointUpdatedExecutionState.builder()
+                        .operations(operations.values())
+                        .build())
+                .build();
+    }
+
+    @Override
+    public GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker) {
+        return GetDurableExecutionStateResponse.builder()
+                .operations(operations.values())
+                .build();
+    }
+
+    /** Get all operation updates that have been sent to this client. Useful for testing and verification. */
+    public List<OperationUpdate> getOperationUpdates() {
+        return List.copyOf(operationUpdates);
+    }
+
+    /** Get all events in order. */
+    public List<Event> getAllEvents() {
+        return List.copyOf(allEvents);
+    }
+
+    /** Get events for a specific operation. */
+    public List<Event> getEventsForOperation(String operationId) {
+        return allEvents.stream().filter(e -> operationId.equals(e.id())).toList();
+    }
+
+    /**
+     * Advance all operations (simulates time passing for retries/waits).
+     *
+     * @return true if any operations were advanced, false otherwise
+     */
+    public boolean advanceTime() {
+        var replaced = new AtomicBoolean(false);
+        operations.replaceAll((key, op) -> {
+            // advance pending retries
+            if (op.status() == OperationStatus.PENDING) {
+                replaced.set(true);
+                return op.toBuilder().status(OperationStatus.READY).build();
+            }
+            // advance waits
+            if (op.status() == OperationStatus.STARTED && op.type() == OperationType.WAIT) {
+                var succeededOp =
+                        op.toBuilder().status(OperationStatus.SUCCEEDED).build();
+                // Generate WaitSucceeded event
+                var update = OperationUpdate.builder()
+                        .id(op.id())
+                        .name(op.name())
+                        .type(OperationType.WAIT)
+                        .action(OperationAction.SUCCEED)
+                        .build();
+                var event = eventProcessor.processUpdate(update, succeededOp);
+                allEvents.add(event);
+                replaced.set(true);
+                return succeededOp;
+            }
+            return op;
+        });
+        return replaced.get();
+    }
+
+    /** Completes a chained invoke operation with the given result, simulating a child Lambda response. */
+    public void completeChainedInvoke(String name, OperationResult result) {
+        var op = getOperationByName(name);
+        if (op == null) {
+            throw new IllegalStateException("Operation not found: " + name);
+        }
+        if (op.type() == OperationType.CHAINED_INVOKE
+                && op.status() == OperationStatus.STARTED
+                && op.name().equals(name)) {
+            var newOp = op.toBuilder()
+                    .status(result.operationStatus())
+                    .chainedInvokeDetails(ChainedInvokeDetails.builder()
+                            .result(result.result())
+                            .error(result.error())
+                            .build())
+                    .build();
+            var update = OperationUpdate.builder()
+                    .id(op.id())
+                    .name(op.name())
+                    .type(OperationType.CHAINED_INVOKE)
+                    .action(
+                            result.operationStatus() == OperationStatus.SUCCEEDED
+                                    ? OperationAction.SUCCEED
+                                    : OperationAction.FAIL)
+                    .build();
+            var event = eventProcessor.processUpdate(update, newOp);
+            allEvents.add(event);
+            operations.put(compositeKey(op.parentId(), op.id()), newOp);
+        }
+    }
+
+    /** Returns the operation with the given name, or null if not found. */
+    public Operation getOperationByName(String name) {
+        return operations.values().stream()
+                .filter(op -> name.equals(op.name()))
+                .findFirst()
+                .orElse(null);
+    }
+
+    /** Returns all operations currently stored. */
+    public List<Operation> getAllOperations() {
+        return operations.values().stream().toList();
+    }
+
+    /** Clears all operations and events, resetting the client to its initial state. */
+    public void reset() {
+        operations.clear();
+        allEvents.clear();
+    }
+
+    /** Build TestResult from current state. */
+    public <O> TestResult<O> toTestResult(DurableExecutionOutput output, TypeToken<O> resultType, SerDes serDes) {
+        var testOperations = operations.values().stream()
+                .filter(op -> op.type() != OperationType.EXECUTION)
+                .map(op -> new TestOperation(op, getEventsForOperation(op.id()), serDes))
+                .toList();
+        return new TestResult<>(
+                output.status(),
+                output.result(),
+                output.error(),
+                testOperations,
+                new ArrayList<>(allEvents),
+                resultType,
+                serDes);
+    }
+
+    /** Simulate checkpoint failure by forcing an operation into STARTED state */
+    public void resetCheckpointToStarted(String stepName) {
+        var op = getOperationByName(stepName);
+        if (op == null) {
+            throw new IllegalStateException("Operation not found: " + stepName);
+        }
+        var startedOp = op.toBuilder().status(OperationStatus.STARTED).build();
+        operations.put(compositeKey(op.parentId(), op.id()), startedOp);
+    }
+
+    /** Simulate fire-and-forget checkpoint loss by removing the operation entirely */
+    public void simulateFireAndForgetCheckpointLoss(String stepName) {
+        var op = getOperationByName(stepName);
+        if (op == null) {
+            throw new IllegalStateException("Operation not found: " + stepName);
+        }
+        operations.remove(compositeKey(op.parentId(), op.id()));
+    }
+
+    private void applyUpdate(OperationUpdate update) {
+        var operation = toOperation(update);
+        var key = compositeKey(update.parentId(), update.id());
+        operations.put(key, operation);
+
+        var event = eventProcessor.processUpdate(update, operation);
+        allEvents.add(event);
+    }
+
+    private static String compositeKey(String parentId, String operationId) {
+        return (parentId != null ? parentId : "") + ":" + operationId;
+    }
+
+    private Operation toOperation(OperationUpdate update) {
+        var builder = Operation.builder()
+                .id(update.id())
+                .name(update.name())
+                .type(update.type())
+                .subType(update.subType())
+                .parentId(update.parentId())
+                .status(deriveStatus(update.action()));
+
+        switch (update.type()) {
+            case WAIT -> builder.waitDetails(buildWaitDetails(update));
+            case STEP -> builder.stepDetails(buildStepDetails(update));
+            case CALLBACK -> builder.callbackDetails(buildCallbackDetails(update));
+            case EXECUTION -> {} // No details needed for EXECUTION operations
+            case CHAINED_INVOKE -> builder.chainedInvokeDetails(buildChainedInvokeDetails(update));
+            case CONTEXT -> builder.contextDetails(buildContextDetails(update));
+            case UNKNOWN_TO_SDK_VERSION ->
+                throw new UnsupportedOperationException("UNKNOWN_TO_SDK_VERSION not supported");
+        }
+
+        return builder.build();
+    }
+
+    private ChainedInvokeDetails buildChainedInvokeDetails(OperationUpdate update) {
+        if (update.chainedInvokeOptions() == null) {
+            return null;
+        }
+        return ChainedInvokeDetails.builder()
+                .result(update.payload())
+                .error(update.error())
+                .build();
+    }
+
+    private ContextDetails buildContextDetails(OperationUpdate update) {
+        var detailsBuilder = ContextDetails.builder().result(update.payload()).error(update.error());
+
+        if (update.contextOptions() != null
+                && Boolean.TRUE.equals(update.contextOptions().replayChildren())) {
+            detailsBuilder.replayChildren(true);
+        }
+
+        return detailsBuilder.build();
+    }
+
+    private WaitDetails buildWaitDetails(OperationUpdate update) {
+        if (update.waitOptions() == null) return null;
+
+        var scheduledEnd = Instant.now().plusSeconds(update.waitOptions().waitSeconds());
+        return WaitDetails.builder().scheduledEndTimestamp(scheduledEnd).build();
+    }
+
+    private StepDetails buildStepDetails(OperationUpdate update) {
+        var key = compositeKey(update.parentId(), update.id());
+        var existingOp = operations.get(key);
+        var existing = existingOp != null ? existingOp.stepDetails() : null;
+
+        var detailsBuilder = existing != null ? existing.toBuilder() : StepDetails.builder();
+        var attempt = existing != null && existing.attempt() != null ? existing.attempt() + 1 : 1;
+
+        if (update.action() == OperationAction.FAIL) {
+            detailsBuilder.attempt(attempt).error(update.error());
+        }
+
+        if (update.action() == OperationAction.RETRY) {
+            detailsBuilder
+                    .attempt(attempt)
+                    .error(update.error())
+                    .nextAttemptTimestamp(
+                            Instant.now().plusSeconds(update.stepOptions().nextAttemptDelaySeconds()));
+        }
+
+        if (update.payload() != null) {
+            detailsBuilder.result(update.payload());
+        }
+
+        return detailsBuilder.build();
+    }
+
+    private CallbackDetails buildCallbackDetails(OperationUpdate update) {
+        var key = compositeKey(update.parentId(), update.id());
+        var existingOp = operations.get(key);
+        var existing = existingOp != null ? existingOp.callbackDetails() : null;
+
+        // Preserve existing callbackId, or generate new one on START
+        var callbackId =
+                existing != null ? existing.callbackId() : UUID.randomUUID().toString();
+
+        return CallbackDetails.builder()
+                .callbackId(callbackId)
+                .result(existing != null ? existing.result() : null)
+                .build();
+    }
+
+    /** Get callback ID for a named callback operation. */
+    public String getCallbackId(String operationName) {
+        var op = getOperationByName(operationName);
+        if (op == null || op.callbackDetails() == null) {
+            return null;
+        }
+        return op.callbackDetails().callbackId();
+    }
+
+    /** Simulate external system completing callback. */
+    public void completeCallback(String callbackId, OperationResult result) {
+        var op = findOperationByCallbackId(callbackId);
+        if (op == null) {
+            throw new IllegalStateException("Callback not found: " + callbackId);
+        }
+        var updated = op.toBuilder()
+                .status(result.operationStatus())
+                .callbackDetails(op.callbackDetails().toBuilder()
+                        .result(result.result())
+                        .error(result.error())
+                        .build())
+                .build();
+        operations.put(compositeKey(op.parentId(), op.id()), updated);
+    }
+
+    private Operation findOperationByCallbackId(String callbackId) {
+        return operations.values().stream()
+                .filter(op -> op.callbackDetails() != null
+                        && callbackId.equals(op.callbackDetails().callbackId()))
+                .findFirst()
+                .orElse(null);
+    }
+
+    private OperationStatus deriveStatus(OperationAction action) {
+        return switch (action) {
+            case START -> OperationStatus.STARTED;
+            case SUCCEED -> OperationStatus.SUCCEEDED;
+            case FAIL -> OperationStatus.FAILED;
+            case RETRY -> OperationStatus.PENDING;
+            case CANCEL -> OperationStatus.CANCELLED;
+            case UNKNOWN_TO_SDK_VERSION -> OperationStatus.UNKNOWN_TO_SDK_VERSION; // Todo: Check this
+        };
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.html new file mode 100644 index 000000000..9c6ea1084 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.html @@ -0,0 +1 @@ +OperationResult

OperationResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 40100%0 of 0n/a050505
OperationResult(OperationStatus, String, ErrorObject)12100%n/a010101
succeeded(String)7100%n/a010101
failed(ErrorObject)7100%n/a010101
stopped(ErrorObject)7100%n/a010101
timedout()7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.java.html new file mode 100644 index 000000000..a1ab80e26 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.java.html @@ -0,0 +1,26 @@ +OperationResult.java

OperationResult.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing.local;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+
+/** The operation status and result/error from Step, Context, Callback and ChainedInvoke operations */
+public record OperationResult(OperationStatus operationStatus, String result, ErrorObject error) {
+    public static OperationResult succeeded(String result) {
+        return new OperationResult(OperationStatus.SUCCEEDED, result, null);
+    }
+
+    public static OperationResult failed(ErrorObject error) {
+        return new OperationResult(OperationStatus.FAILED, null, error);
+    }
+
+    public static OperationResult stopped(ErrorObject error) {
+        return new OperationResult(OperationStatus.STOPPED, null, error);
+    }
+
+    public static OperationResult timedout() {
+        return new OperationResult(OperationStatus.TIMED_OUT, null, null);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.html new file mode 100644 index 000000000..e15b80cd7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing.local

software.amazon.lambda.durable.testing.local

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total153 of 1,23787%31 of 11673%331183430324603
EventProcessor11332474%152562%1538241160901
LocalMemoryExecutionClient4072094%166078%18751018223201
OperationResult40100%n/a05050501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.source.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.source.html new file mode 100644 index 000000000..87c51c963 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing.local

software.amazon.lambda.durable.testing.local

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total153 of 1,23787%31 of 11673%331183430324603
EventProcessor.java11332474%152562%1538241160901
LocalMemoryExecutionClient.java4072094%166078%18751018223201
OperationResult.java40100%n/a05050501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.html new file mode 100644 index 000000000..ed72f97d0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.html @@ -0,0 +1 @@ +AsyncExecution

AsyncExecution

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total310 of 3100%30 of 300%383874742323
pollUntil(Predicate)390%40%33111111
refreshHistory()390%n/a11121211
getCallbackId(String)380%60%44101011
AsyncExecution(String, LambdaClient, TypeToken, SerDes, Duration, Duration)260%n/a119911
lambda$isComplete$0(Event)150%40%332211
lambda$hasCallback$2(String, Event)140%40%331111
hasOperation(String)130%20%223311
getOperation(String)130%20%223311
hasCallback(String)120%20%224411
getOperations()120%20%223311
isComplete()110%20%223311
getStatus()90%20%223311
completeCallback(String, String)80%n/a112211
failCallback(String, ErrorObject)80%n/a112211
lambda$completeCallback$5(String, String, SendDurableExecutionCallbackSuccessRequest.Builder)80%n/a111111
pollUntilComplete()70%n/a112211
heartbeatCallback(String)70%n/a112211
lambda$failCallback$6(String, ErrorObject, SendDurableExecutionCallbackFailureRequest.Builder)70%n/a111111
lambda$getCallbackId$4(String)60%n/a111111
lambda$heartbeatCallback$7(String, SendDurableExecutionCallbackHeartbeatRequest.Builder)50%n/a111111
lambda$getCallbackId$3(String, TestOperation)50%n/a111111
lambda$hasOperation$1(String, TestOperation)50%n/a111111
getExecutionArn()30%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.java.html new file mode 100644 index 000000000..5f5784fc5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/AsyncExecution.java.html @@ -0,0 +1,207 @@ +AsyncExecution.java

AsyncExecution.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.List;
+import java.util.function.Predicate;
+import software.amazon.awssdk.core.SdkBytes;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Event;
+import software.amazon.awssdk.services.lambda.model.EventType;
+import software.amazon.awssdk.services.lambda.model.GetDurableExecutionHistoryRequest;
+import software.amazon.awssdk.services.lambda.model.ResourceNotFoundException;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.model.ExecutionStatus;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor;
+
+/**
+ * Handle for an asynchronously executing durable function. Allows incremental polling and inspection of execution
+ * state.
+ */
+public class AsyncExecution<O> {
+    private final String executionArn;
+    private final LambdaClient lambdaClient;
+    private final TypeToken<O> outputType;
+    private final SerDes serDes;
+    private final Duration pollInterval;
+    private final Duration timeout;
+    private final HistoryEventProcessor processor;
+    private List<Event> currentHistory;
+    private TestResult<O> currentResult;
+
+    public AsyncExecution(
+            String executionArn,
+            LambdaClient lambdaClient,
+            TypeToken<O> outputType,
+            SerDes serDes,
+            Duration pollInterval,
+            Duration timeout) {
+        this.executionArn = executionArn;
+        this.lambdaClient = lambdaClient;
+        this.outputType = outputType;
+        this.pollInterval = pollInterval;
+        this.timeout = timeout;
+        this.serDes = serDes;
+        this.processor = new HistoryEventProcessor();
+    }
+
+    /**
+     * Poll execution history until the given condition is met.
+     *
+     * @param condition predicate to test on each poll
+     * @return this execution for chaining
+     */
+    public AsyncExecution<O> pollUntil(Predicate<AsyncExecution<O>> condition) {
+        var startTime = Instant.now();
+
+        while (Duration.between(startTime, Instant.now()).compareTo(timeout) < 0) {
+            refreshHistory();
+
+            if (condition.test(this)) {
+                return this;
+            }
+
+            try {
+                Thread.sleep(pollInterval.toMillis());
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                throw new RuntimeException("Polling interrupted", e);
+            }
+        }
+
+        throw new RuntimeException("Condition not met within timeout of " + timeout);
+    }
+
+    /**
+     * Poll until execution completes and return the final result.
+     *
+     * @return test result with execution status and output
+     */
+    public TestResult<O> pollUntilComplete() {
+        pollUntil(AsyncExecution::isComplete);
+        return currentResult;
+    }
+
+    /** Check if execution has completed (succeeded or failed). */
+    public boolean isComplete() {
+        if (currentHistory == null) {
+            return false;
+        }
+        return currentHistory.stream().anyMatch(e -> {
+            var eventType = e.eventType();
+            return EventType.EXECUTION_SUCCEEDED.equals(eventType) || EventType.EXECUTION_FAILED.equals(eventType);
+        });
+    }
+
+    /** Check if an operation with the given name exists. */
+    public boolean hasOperation(String name) {
+        if (currentResult == null) {
+            return false;
+        }
+        return currentResult.getOperations().stream().anyMatch(op -> name.equals(op.getName()));
+    }
+
+    /** Check if a callback operation with the given name exists and is started. */
+    public boolean hasCallback(String name) {
+        if (currentHistory == null) {
+            return false;
+        }
+        // Look for CallbackStarted event with this name
+        return currentHistory.stream()
+                .anyMatch(e -> name.equals(e.name()) && EventType.CALLBACK_STARTED.equals(e.eventType()));
+    }
+
+    /**
+     * Get the callback ID for a callback operation.
+     *
+     * @param operationName name of the callback operation
+     * @return callback ID
+     * @throws IllegalStateException if no callback found for operation
+     */
+    public String getCallbackId(String operationName) {
+        if (currentResult == null) {
+            throw new IllegalStateException("No history available - call pollUntil first");
+        }
+
+        var operation = currentResult.getOperations().stream()
+                .filter(op -> operationName.equals(op.getName()))
+                .findFirst()
+                .orElseThrow(() -> new IllegalStateException("No operation found with name: " + operationName));
+
+        var callbackDetails = operation.getCallbackDetails();
+        if (callbackDetails == null || callbackDetails.callbackId() == null) {
+            throw new IllegalStateException(
+                    "Operation '" + operationName + "' is not a callback or has no callback ID");
+        }
+
+        return callbackDetails.callbackId();
+    }
+
+    /** Get details for a specific operation. */
+    public TestOperation getOperation(String name) {
+        if (currentResult == null) {
+            throw new IllegalStateException("No history available - call pollUntil first");
+        }
+        return currentResult.getOperation(name);
+    }
+
+    /** Get all operations in the execution. */
+    public List<TestOperation> getOperations() {
+        if (currentResult == null) {
+            throw new IllegalStateException("No history available - call pollUntil first");
+        }
+        return currentResult.getOperations();
+    }
+
+    /** Get current execution status. */
+    public ExecutionStatus getStatus() {
+        if (currentResult == null) {
+            return ExecutionStatus.PENDING;
+        }
+        return currentResult.getStatus();
+    }
+
+    /** Get the execution ARN. */
+    public String getExecutionArn() {
+        return executionArn;
+    }
+
+    /** calls sendDurableExecutionCallbackSuccess with the given callbackId and result */
+    public void completeCallback(String callbackId, String result) {
+        lambdaClient.sendDurableExecutionCallbackSuccess(
+                req -> req.callbackId(callbackId).result(SdkBytes.fromUtf8String(result)));
+    }
+
+    /** calls sendDurableExecutionCallbackFailure with the give callbackId and error */
+    public void failCallback(String callbackId, ErrorObject error) {
+        lambdaClient.sendDurableExecutionCallbackFailure(
+                req -> req.callbackId(callbackId).error(error));
+    }
+
+    /** call sendDurableExecutionCallbackHeartbeat API with the give callbackId */
+    public void heartbeatCallback(String callbackId) {
+        lambdaClient.sendDurableExecutionCallbackHeartbeat(req -> req.callbackId(callbackId));
+    }
+
+    private void refreshHistory() {
+        try {
+            var request = GetDurableExecutionHistoryRequest.builder()
+                    .durableExecutionArn(executionArn)
+                    .includeExecutionData(true)
+                    .build();
+            var response = lambdaClient.getDurableExecutionHistory(request);
+            this.currentHistory = response.events();
+            this.currentResult = processor.processEvents(currentHistory, outputType, serDes);
+        } catch (ResourceNotFoundException e) {
+            // Execution doesn't exist yet - this can happen immediately after async invoke
+            // Leave currentHistory as null, pollUntil will retry
+            this.currentHistory = null;
+            this.currentResult = null;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.html new file mode 100644 index 000000000..822833bfd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.html @@ -0,0 +1 @@ +CloudDurableTestRunner

CloudDurableTestRunner

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total231 of 33230%5 of 616%12184766915
run(Object)710%20%22181811
startAsync(Object)650%20%22171711
withLambdaClient(LambdaClient)190%n/a111111
withTimeout(Duration)190%n/a111111
withSerDes(SerDes)190%n/a111111
create(String, TypeToken, TypeToken)140%n/a113311
createDefaultLambdaClient()80%n/a113311
create(String, Class, Class)70%n/a111111
getOperation(String)5861%1150%121301
runUntilComplete(Object)40%n/a111111
CloudDurableTestRunner(String, TypeToken, TypeToken, LambdaClient, Duration, Duration, InvocationType, SerDes)33100%n/a0101101
withPollInterval(Duration)19100%n/a010101
withInvocationType(InvocationType)19100%n/a010101
create(String, TypeToken, TypeToken, LambdaClient)14100%n/a010301
create(String, Class, Class, LambdaClient)8100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.java.html new file mode 100644 index 000000000..7f49aa996 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.java.html @@ -0,0 +1,220 @@ +CloudDurableTestRunner.java

CloudDurableTestRunner.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing;
+
+import java.time.Duration;
+import java.util.Objects;
+import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
+import software.amazon.awssdk.core.SdkBytes;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.awssdk.services.lambda.model.InvocationType;
+import software.amazon.awssdk.services.lambda.model.InvokeRequest;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor;
+import software.amazon.lambda.durable.testing.cloud.HistoryPoller;
+
+/**
+ * Test runner for durable Lambda functions deployed to AWS. Invokes a real Lambda function, polls execution history,
+ * and returns structured test results.
+ *
+ * @param <I> the handler input type
+ * @param <O> the handler output type
+ */
+public class CloudDurableTestRunner<I, O> {
+    private final String functionArn;
+    private final TypeToken<I> inputType;
+    private final TypeToken<O> outputType;
+    private final LambdaClient lambdaClient;
+    private final Duration pollInterval;
+    private final Duration timeout;
+    private final InvocationType invocationType;
+    private final SerDes serDes;
+    // Store last execution result for operation inspection
+    private TestResult<O> lastResult;
+
+    private CloudDurableTestRunner(
+            String functionArn,
+            TypeToken<I> inputType,
+            TypeToken<O> outputType,
+            LambdaClient lambdaClient,
+            Duration pollInterval,
+            Duration timeout,
+            InvocationType invocationType,
+            SerDes serDes) {
+        this.functionArn = functionArn;
+        this.inputType = inputType;
+        this.outputType = outputType;
+        this.lambdaClient =
+                Objects.requireNonNullElseGet(lambdaClient, CloudDurableTestRunner::createDefaultLambdaClient);
+        this.pollInterval = pollInterval;
+        this.timeout = timeout;
+        this.invocationType = invocationType;
+        this.serDes = Objects.requireNonNullElseGet(serDes, JacksonSerDes::new);
+    }
+
+    private static LambdaClient createDefaultLambdaClient() {
+        return LambdaClient.builder()
+                .credentialsProvider(DefaultCredentialsProvider.builder().build())
+                .build();
+    }
+
+    /** Creates a runner for the given function ARN with Class-based input/output types. */
+    public static <I, O> CloudDurableTestRunner<I, O> create(
+            String functionArn, Class<I> inputType, Class<O> outputType) {
+        return create(functionArn, TypeToken.get(inputType), TypeToken.get(outputType));
+    }
+
+    /** Creates a runner for the given function ARN with TypeToken-based input/output types. */
+    public static <I, O> CloudDurableTestRunner<I, O> create(
+            String functionArn, TypeToken<I> inputType, TypeToken<O> outputType) {
+        return new CloudDurableTestRunner<>(
+                functionArn,
+                inputType,
+                outputType,
+                null,
+                Duration.ofSeconds(2),
+                Duration.ofSeconds(300),
+                InvocationType.REQUEST_RESPONSE,
+                null);
+    }
+
+    /** Creates a runner with a custom {@link LambdaClient} and Class-based input/output types. */
+    public static <I, O> CloudDurableTestRunner<I, O> create(
+            String functionArn, Class<I> inputType, Class<O> outputType, LambdaClient lambdaClient) {
+        return create(functionArn, TypeToken.get(inputType), TypeToken.get(outputType), lambdaClient);
+    }
+
+    /** Creates a runner with a custom {@link LambdaClient} and TypeToken-based input/output types. */
+    public static <I, O> CloudDurableTestRunner<I, O> create(
+            String functionArn, TypeToken<I> inputType, TypeToken<O> outputType, LambdaClient lambdaClient) {
+        return new CloudDurableTestRunner<>(
+                functionArn,
+                inputType,
+                outputType,
+                lambdaClient,
+                Duration.ofSeconds(2),
+                Duration.ofSeconds(300),
+                InvocationType.REQUEST_RESPONSE,
+                null);
+    }
+
+    /** Returns a new runner with the specified lambda client. */
+    public CloudDurableTestRunner<I, O> withLambdaClient(LambdaClient lambdaClient) {
+        return new CloudDurableTestRunner<>(
+                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
+    }
+
+    /** Returns a new runner with the specified poll interval between history checks. */
+    public CloudDurableTestRunner<I, O> withPollInterval(Duration interval) {
+        return new CloudDurableTestRunner<>(
+                functionArn, inputType, outputType, lambdaClient, interval, timeout, invocationType, serDes);
+    }
+
+    /** Returns a new runner with the specified maximum wait time for execution completion. */
+    public CloudDurableTestRunner<I, O> withTimeout(Duration timeout) {
+        return new CloudDurableTestRunner<>(
+                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
+    }
+
+    /** Returns a new runner with the specified Lambda invocation type. */
+    public CloudDurableTestRunner<I, O> withInvocationType(InvocationType type) {
+        return new CloudDurableTestRunner<>(
+                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, type, serDes);
+    }
+
+    public CloudDurableTestRunner<I, O> withSerDes(SerDes serDes) {
+        return new CloudDurableTestRunner<>(
+                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
+    }
+
+    /** Invokes the Lambda function, polls execution history until completion, and returns the result. */
+    public TestResult<O> runUntilComplete(I input) {
+        return run(input);
+    }
+
+    /** Invokes the Lambda function, polls execution history until completion, and returns the result. */
+    public TestResult<O> run(I input) {
+        try {
+            // Serialize input
+            var inputJson = serDes.serialize(input);
+
+            // Invoke function
+            var invokeRequest = InvokeRequest.builder()
+                    .functionName(functionArn)
+                    .invocationType(invocationType)
+                    .payload(SdkBytes.fromUtf8String(inputJson))
+                    .build();
+
+            var response = lambdaClient.invoke(invokeRequest);
+
+            // Extract execution ARN from response headers
+            var executionArn = response.durableExecutionArn();
+            if (executionArn == null) {
+                throw new RuntimeException("No durable execution ARN returned - function may not be durable");
+            }
+
+            // Poll history until completion
+            var poller = new HistoryPoller(lambdaClient);
+            var events = poller.pollUntilComplete(executionArn, pollInterval, timeout);
+
+            // Process events into TestResult
+            var processor = new HistoryEventProcessor();
+            var result = processor.processEvents(events, outputType, serDes);
+            this.lastResult = result;
+            return result;
+        } catch (Exception e) {
+            throw new RuntimeException("Function invocation failed", e);
+        }
+    }
+
+    /**
+     * Start an asynchronous execution and return a handle for incremental polling. Use this for callback-based tests
+     * where you need to interact with the execution while it's running.
+     *
+     * @param input the input to the function
+     * @return execution handle for polling and inspection
+     */
+    public AsyncExecution<O> startAsync(I input) {
+        try {
+            // Serialize input
+            var inputJson = serDes.serialize(input);
+
+            // Invoke function with EVENT type (async)
+            var invokeRequest = InvokeRequest.builder()
+                    .functionName(functionArn)
+                    .invocationType(InvocationType.EVENT)
+                    .payload(SdkBytes.fromUtf8String(inputJson))
+                    .build();
+
+            var response = lambdaClient.invoke(invokeRequest);
+
+            // Extract execution ARN from response
+            var executionArn = response.durableExecutionArn();
+            if (executionArn == null) {
+                throw new RuntimeException("No durable execution ARN returned - function may not be durable");
+            }
+
+            // Give the execution a moment to initialize before returning
+            // This prevents immediate polling from failing with "execution does not exist"
+            Thread.sleep(100);
+
+            return new AsyncExecution<>(executionArn, lambdaClient, outputType, serDes, pollInterval, timeout);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            throw new RuntimeException("Interrupted while starting async execution", e);
+        } catch (Exception e) {
+            throw new RuntimeException("Function invocation failed", e);
+        }
+    }
+
+    /** Returns the {@link TestOperation} for the given name from the last execution result. */
+    public TestOperation getOperation(String name) {
+        if (lastResult == null) {
+            throw new IllegalStateException("No execution has been run yet");
+        }
+        return lastResult.getOperation(name);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.html new file mode 100644 index 000000000..cd716ebe8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.html @@ -0,0 +1 @@ +LocalDurableTestRunner

LocalDurableTestRunner

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total32 of 35490%3 of 1070%631480326
withDurableConfig(DurableConfig)110%n/a111111
withOutputType(TypeToken)110%n/a111111
create(TypeToken, BiFunction, DurableConfig)80%n/a111111
runUntilComplete(Object)12395%2466%241601
getOperation(String)11593%1150%120201
createDurableInput(Object)72100%n/a0101901
LocalDurableTestRunner(TypeToken, TypeToken, BiFunction, DurableConfig)54100%2100%0201801
run(Object)24100%n/a010301
create(Class, DurableHandler)14100%n/a010201
create(TypeToken, DurableHandler)13100%n/a010101
withOutputType(Class)12100%n/a010101
create(Class, BiFunction)9100%n/a010101
create(Class, BiFunction, DurableConfig)9100%n/a010101
create(TypeToken, BiFunction)8100%n/a010101
completeCallback(String, String)7100%n/a010201
failCallback(String, ErrorObject)7100%n/a010201
completeChainedInvoke(String, String)7100%n/a010201
failChainedInvoke(String, ErrorObject)7100%n/a010201
stopChainedInvoke(String, ErrorObject)7100%n/a010201
timeoutCallback(String)6100%n/a010201
timeoutChainedInvoke(String)6100%n/a010201
resetCheckpointToStarted(String)5100%n/a010201
simulateFireAndForgetCheckpointLoss(String)5100%n/a010201
getCallbackId(String)5100%n/a010101
advanceTime()5100%n/a010201
mockLambdaContext()2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.java.html new file mode 100644 index 000000000..d39f42768 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.java.html @@ -0,0 +1,358 @@ +LocalDurableTestRunner.java

LocalDurableTestRunner.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import java.util.function.BiFunction;
+import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.execution.DurableExecutor;
+import software.amazon.lambda.durable.model.DurableExecutionInput;
+import software.amazon.lambda.durable.model.ExecutionStatus;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient;
+import software.amazon.lambda.durable.testing.local.OperationResult;
+
+/**
+ * In-memory test runner for durable Lambda functions. Simulates the Lambda re-invocation loop locally without requiring
+ * AWS infrastructure, enabling fast unit and integration tests.
+ *
+ * @param <I> the handler input type
+ * @param <O> the handler output type
+ */
+public class LocalDurableTestRunner<I, O> {
+    private static final int MAX_INVOCATIONS = 100;
+
+    private final TypeToken<I> inputType;
+    private final TypeToken<O> outputType;
+    private final BiFunction<I, DurableContext, O> handler;
+    private final LocalMemoryExecutionClient storage;
+    private final SerDes serDes;
+    private final DurableConfig customerConfig;
+
+    private LocalDurableTestRunner(
+            TypeToken<I> inputType,
+            TypeToken<O> outputType,
+            BiFunction<I, DurableContext, O> handlerFn,
+            DurableConfig customerConfig) {
+        this.inputType = inputType;
+        this.outputType = outputType;
+        this.handler = handlerFn;
+        this.storage = new LocalMemoryExecutionClient();
+
+        // Create config that uses customer's configuration but overrides the client with in-memory storage
+        if (customerConfig != null) {
+            // Use customer's config but override the client with our in-memory implementation
+            this.customerConfig = DurableConfig.builder()
+                    .withDurableExecutionClient(storage)
+                    .withSerDes(customerConfig.getSerDes())
+                    .withExecutorService(customerConfig.getExecutorService())
+                    .withPollingStrategy(customerConfig.getPollingStrategy())
+                    .withCheckpointDelay(customerConfig.getCheckpointDelay())
+                    .withLoggerConfig(customerConfig.getLoggerConfig())
+                    .build();
+        } else {
+            // Fallback to default config with in-memory client
+            this.customerConfig =
+                    DurableConfig.builder().withDurableExecutionClient(storage).build();
+        }
+        this.serDes = this.customerConfig.getSerDes();
+    }
+
+    /**
+     * Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
+     * DurableConfig.
+     *
+     * @param inputType The input type class
+     * @param handlerFn The handler function
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner with default configuration
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(
+            Class<I> inputType, BiFunction<I, DurableContext, O> handlerFn) {
+        return new LocalDurableTestRunner<>(TypeToken.get(inputType), null, handlerFn, null);
+    }
+
+    /**
+     * Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
+     * DurableConfig.
+     *
+     * <p>If your handler has custom configuration (custom SerDes, ExecutorService, etc.), use {@link #create(TypeToken,
+     * DurableHandler)} instead to ensure the test runner uses the same configuration as your handler.
+     *
+     * <p>Optionally, you can also use {@link #create(TypeToken, BiFunction, DurableConfig)} to pass in any
+     * DurableConfig directly.
+     *
+     * @param inputType The input type class
+     * @param handlerFn The handler function
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner with default configuration
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(
+            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handlerFn) {
+        return new LocalDurableTestRunner<>(inputType, null, handlerFn, null);
+    }
+
+    /**
+     * Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
+     * SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.
+     *
+     * @param inputType The input type class
+     * @param handlerFn The handler function
+     * @param config The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner configured with the provided settings
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(
+            Class<I> inputType, BiFunction<I, DurableContext, O> handlerFn, DurableConfig config) {
+        return new LocalDurableTestRunner<>(TypeToken.get(inputType), null, handlerFn, config);
+    }
+    /**
+     * Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
+     * SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.
+     *
+     * <p>Use this method when you need to pass a custom DurableConfig directly, for example when testing with a custom
+     * SerDes without using a DurableHandler.
+     *
+     * <p>Example usage:
+     *
+     * <pre>{@code
+     * // Create a custom DurableConfig with custom SerDes
+     * var config = DurableConfig.builder()
+     *     .withSerDes(new MyCustomSerDes())
+     *     .build();
+     *
+     * // Create test runner with custom configuration
+     * var runner = LocalDurableTestRunner.create(
+     *     String.class,
+     *     (input, context) -> context.step("process", String.class, stepCtx -> "result"),
+     *     config
+     * );
+     *
+     * // Run test with custom configuration
+     * var result = runner.run("test-input");
+     * assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
+     * }</pre>
+     *
+     * @param inputType The input type class
+     * @param handlerFn The handler function
+     * @param config The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner configured with the provided settings
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(
+            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handlerFn, DurableConfig config) {
+        return new LocalDurableTestRunner<>(inputType, null, handlerFn, config);
+    }
+
+    /**
+     * Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
+     * is a convenient method when you have a handler instance and want to test it with the same configuration it uses
+     * in production.
+     *
+     * @param inputType The input type class
+     * @param handler The DurableHandler instance to test
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner configured with the handler's settings
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(Class<I> inputType, DurableHandler<I, O> handler) {
+        return new LocalDurableTestRunner<>(
+                TypeToken.get(inputType), null, handler::handleRequest, handler.getConfiguration());
+    }
+
+    /**
+     * Overrides the DurableConfig for this test runner. Use this to test with different configurations without creating
+     * a new runner instance.
+     */
+    public LocalDurableTestRunner<I, O> withDurableConfig(DurableConfig config) {
+        return new LocalDurableTestRunner<>(inputType, outputType, handler, config);
+    }
+
+    /** Overrides the output type for this test runner. */
+    public LocalDurableTestRunner<I, O> withOutputType(TypeToken<O> outputType) {
+        return new LocalDurableTestRunner<>(inputType, outputType, handler, customerConfig);
+    }
+
+    /** Overrides the output type for this test runner. */
+    public LocalDurableTestRunner<I, O> withOutputType(Class<O> outputType) {
+        return new LocalDurableTestRunner<>(inputType, TypeToken.get(outputType), handler, customerConfig);
+    }
+
+    /**
+     * Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
+     * is a convenient method when you have a handler instance and want to test it with the same configuration it uses
+     * in production.
+     *
+     * <p>This method automatically:
+     *
+     * <ul>
+     *   <li>Uses the handler's configuration (SerDes, ExecutorService, etc.)
+     *   <li>Overrides the DurableExecutionClient with the in-memory implementation for testing
+     * </ul>
+     *
+     * <p>Example usage:
+     *
+     * <pre>{@code
+     * // Create handler instance
+     * var handler = new MyCustomHandler();
+     *
+     * // Create test runner from handler (automatically extracts config)
+     * var runner = LocalDurableTestRunner.create(String.class, handler);
+     *
+     * // Run test with the handler's configuration
+     * var result = runner.run("test-input");
+     * assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
+     * }</pre>
+     *
+     * @param inputType The input type class
+     * @param handler The DurableHandler instance to test
+     * @param <I> Input type
+     * @param <O> Output type
+     * @return LocalDurableTestRunner configured with the handler's settings
+     */
+    public static <I, O> LocalDurableTestRunner<I, O> create(TypeToken<I> inputType, DurableHandler<I, O> handler) {
+        return new LocalDurableTestRunner<>(inputType, null, handler::handleRequest, handler.getConfiguration());
+    }
+
+    /** Run a single invocation (may return PENDING if waiting/retrying). */
+    public TestResult<O> run(I input) {
+        var durableInput = createDurableInput(input);
+
+        var output = DurableExecutor.execute(durableInput, mockLambdaContext(), inputType, handler, customerConfig);
+
+        return storage.toTestResult(output, outputType, serDes);
+    }
+
+    /**
+     * Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.
+     * Operations that don't require manual intervention (like WAIT in STARTED or STEP in PENDING) will be automatically
+     * advanced.
+     *
+     * @param input The input to process
+     * @return Final test result (SUCCEEDED or FAILED) or PENDING if operations pending manual intervention
+     */
+    public TestResult<O> runUntilComplete(I input) {
+        TestResult<O> result = null;
+        for (int i = 0; i < MAX_INVOCATIONS; i++) {
+            result = run(input);
+
+            if (result.getStatus() != ExecutionStatus.PENDING || !storage.advanceTime()) {
+                // break the loop if
+                // - Return SUCCEEDED or FAILED - we're done
+                // - Return PENDING and let test manually advance operations if no operations can be auto advanced
+                break;
+            }
+        }
+        return result;
+    }
+
+    /** Resets a named step operation to STARTED status, simulating a checkpoint failure. */
+    public void resetCheckpointToStarted(String stepName) {
+        storage.resetCheckpointToStarted(stepName);
+    }
+
+    /** Removes a named step operation entirely, simulating loss of a fire-and-forget checkpoint. */
+    public void simulateFireAndForgetCheckpointLoss(String stepName) {
+        storage.simulateFireAndForgetCheckpointLoss(stepName);
+    }
+
+    /** Returns the {@link TestOperation} for the given operation name, or null if not found. */
+    public TestOperation getOperation(String name) {
+        var op = storage.getOperationByName(name);
+        return op != null ? new TestOperation(op, serDes) : null;
+    }
+
+    /** Get callback ID for a named callback operation. */
+    public String getCallbackId(String operationName) {
+        return storage.getCallbackId(operationName);
+    }
+
+    /** Complete a callback with success result. */
+    public void completeCallback(String callbackId, String result) {
+        storage.completeCallback(callbackId, OperationResult.succeeded(result));
+    }
+
+    /** Fail a callback with error. */
+    public void failCallback(String callbackId, ErrorObject error) {
+        storage.completeCallback(callbackId, OperationResult.failed(error));
+    }
+
+    /** Timeout a callback. */
+    public void timeoutCallback(String callbackId) {
+        storage.completeCallback(callbackId, OperationResult.timedout());
+    }
+
+    /** Advances all pending operations, simulating time passing for retries and waits. */
+    public void advanceTime() {
+        storage.advanceTime();
+    }
+
+    /** Completes a chained invoke operation with a successful result. */
+    public void completeChainedInvoke(String name, String result) {
+        storage.completeChainedInvoke(name, OperationResult.succeeded(result));
+    }
+
+    /** Marks a chained invoke operation as timed out. */
+    public void timeoutChainedInvoke(String name) {
+        storage.completeChainedInvoke(name, OperationResult.timedout());
+    }
+
+    /** Fails a chained invoke operation with the given error. */
+    public void failChainedInvoke(String name, ErrorObject error) {
+        storage.completeChainedInvoke(name, OperationResult.failed(error));
+    }
+
+    /** Stops a chained invoke operation with the given error. */
+    public void stopChainedInvoke(String name, ErrorObject error) {
+        storage.completeChainedInvoke(name, OperationResult.stopped(error));
+    }
+
+    private DurableExecutionInput createDurableInput(I input) {
+        var executionName = UUID.randomUUID().toString();
+        var invocationId = UUID.randomUUID().toString();
+        var executionArn = String.format(
+                "arn:aws:lambda:us-east-1:123456789012:function:test:$LATEST/durable-execution/%s/%s",
+                executionName, invocationId);
+        var inputJson = serDes.serialize(input);
+        var executionOp = Operation.builder()
+                .id(invocationId)
+                .name(executionName)
+                .type(OperationType.EXECUTION)
+                .status(OperationStatus.STARTED)
+                .executionDetails(
+                        ExecutionDetails.builder().inputPayload(inputJson).build())
+                .build();
+
+        // Load previous operations and include them in InitialExecutionState
+        var existingOps =
+                storage.getExecutionState(executionArn, "test-token", null).operations();
+        var allOps = new ArrayList<>(List.of(executionOp));
+        allOps.addAll(existingOps);
+
+        return new DurableExecutionInput(
+                executionArn,
+                UUID.randomUUID().toString(),
+                CheckpointUpdatedExecutionState.builder().operations(allOps).build());
+    }
+
+    private Context mockLambdaContext() {
+        return null; // Minimal - tests don't need real Lambda context
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.html new file mode 100644 index 000000000..ae0917415 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.html @@ -0,0 +1 @@ +TestOperation

TestOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total65 of 13050%9 of 1225%162514311019
getAttempt()150%40%332211
getDuration()140%20%223311
isCompleted()50%n/a111111
getEvents()40%n/a111111
getSubtype()40%n/a111111
getWaitDetails()40%n/a111111
getCallbackDetails()40%n/a111111
getChainedInvokeDetails()40%n/a111111
getContextDetails()40%n/a111111
getExecutionDetails()40%n/a111111
getStepResult(TypeToken)21688%2250%231401
getError()11090%1150%120201
TestOperation(Operation, List, SerDes)12100%n/a010501
TestOperation(Operation, SerDes)6100%n/a010201
getStepResult(Class)5100%n/a010101
getName()4100%n/a010101
getStatus()4100%n/a010101
getType()4100%n/a010101
getStepDetails()4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.java.html new file mode 100644 index 000000000..793143563 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.java.html @@ -0,0 +1,132 @@ +TestOperation.java

TestOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.List;
+import software.amazon.awssdk.services.lambda.model.CallbackDetails;
+import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
+import software.amazon.awssdk.services.lambda.model.ContextDetails;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Event;
+import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.StepDetails;
+import software.amazon.awssdk.services.lambda.model.WaitDetails;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/** Wrapper for AWS SDK Operation providing convenient access methods. */
+public class TestOperation {
+    private final Operation operation;
+    private final List<Event> events;
+    private final SerDes serDes;
+
+    public TestOperation(Operation operation, SerDes serDes) {
+        this(operation, List.of(), serDes);
+    }
+
+    public TestOperation(Operation operation, List<Event> events, SerDes serDes) {
+        this.operation = operation;
+        this.events = events;
+        this.serDes = serDes;
+    }
+
+    /** Returns the raw history events associated with this operation. */
+    public List<Event> getEvents() {
+        return List.copyOf(events);
+    }
+
+    /** Returns the operation name. */
+    public String getName() {
+        return operation.name();
+    }
+
+    /** Returns the current status of this operation (e.g. STARTED, SUCCEEDED, FAILED). */
+    public OperationStatus getStatus() {
+        return operation.status();
+    }
+
+    /** Returns the operation type (STEP, WAIT, CALLBACK, etc.). */
+    public OperationType getType() {
+        return operation.type();
+    }
+
+    /** Returns the operation's subtype */
+    public String getSubtype() {
+        return operation.subType();
+    }
+
+    /** Returns true if the operation has completed (either succeeded or failed). */
+    public boolean isCompleted() {
+        return ExecutionManager.isTerminalStatus(operation.status());
+    }
+
+    /** Returns the duration of the operation */
+    public Duration getDuration() {
+        return Duration.between(
+                operation.startTimestamp(),
+                operation.endTimestamp() != null ? operation.endTimestamp() : Instant.now());
+    }
+
+    /** Returns the step details, or null if this is not a step operation. */
+    public StepDetails getStepDetails() {
+        return operation.stepDetails();
+    }
+
+    /** Returns the wait details, or null if this is not a wait operation. */
+    public WaitDetails getWaitDetails() {
+        return operation.waitDetails();
+    }
+
+    /** Returns the callback details, or null if this is not a callback operation. */
+    public CallbackDetails getCallbackDetails() {
+        return operation.callbackDetails();
+    }
+
+    /** Returns the chained invoke details, or null if this is not a chained invoke operation. */
+    public ChainedInvokeDetails getChainedInvokeDetails() {
+        return operation.chainedInvokeDetails();
+    }
+
+    /** Returns the context details, or null if this operation is not a context. */
+    public ContextDetails getContextDetails() {
+        return operation.contextDetails();
+    }
+
+    /** Returns the execution details, or null if this operation is not an EXECUTION operation. */
+    public ExecutionDetails getExecutionDetails() {
+        return operation.executionDetails();
+    }
+
+    /** Deserializes and returns the step result as the given type. */
+    public <T> T getStepResult(Class<T> type) {
+        return getStepResult(TypeToken.get(type));
+    }
+
+    /** Deserializes and returns the step result using a TypeToken for generic types. */
+    public <T> T getStepResult(TypeToken<T> type) {
+        var details = operation.stepDetails();
+        if (details == null || details.result() == null) {
+            return null;
+        }
+        return serDes.deserialize(details.result(), type);
+    }
+
+    /** Returns the step error, or null if the step succeeded or this is not a step operation. */
+    public ErrorObject getError() {
+        var details = operation.stepDetails();
+        return details != null ? details.error() : null;
+    }
+
+    /** Returns the current retry attempt number (0-based), defaulting to 0 if not available. */
+    public int getAttempt() {
+        var details = operation.stepDetails();
+        return details != null && details.attempt() != null ? details.attempt() : 1;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.html new file mode 100644 index 000000000..49e357613 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.html @@ -0,0 +1 @@ +TestResult

TestResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total42 of 20379%9 of 2055%1029842419
getEventsForOperation(String)130%20%222211
getStatus()81055%1375%132401
isSucceeded()80%20%221111
isFailed()80%20%221111
getHistoryEvents()30%n/a111111
getResult(TypeToken)24996%2675%251901
TestResult(ExecutionStatus, String, ErrorObject, List, List, TypeToken, SerDes)36100%n/a0101101
getResult()10100%n/a010201
lambda$getSucceededOperations$2(TestOperation)8100%2100%020101
getSucceededOperations()7100%n/a010301
getFailedOperations()7100%n/a010301
static {...}7100%n/a010101
getOperation(String)6100%n/a010101
getResult(Class)5100%n/a010101
lambda$getFailedOperations$3(TestOperation)5100%n/a010101
getError()4100%n/a010101
getOperations()3100%n/a010101
lambda$new$1(TestOperation, TestOperation)2100%n/a010101
lambda$new$0(TestOperation)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.java.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.java.html new file mode 100644 index 000000000..be8014305 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.java.html @@ -0,0 +1,142 @@ +TestResult.java

TestResult.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.testing;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Event;
+import software.amazon.awssdk.services.lambda.model.EventType;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.model.ExecutionStatus;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Represents the result of a durable execution, providing access to the execution status, output, operations, and
+ * history events.
+ *
+ * @param <O> the handler output type
+ */
+public class TestResult<O> {
+    private static final Set<OperationStatus> FAIL_OPERATION_STATUS = Set.of(
+            OperationStatus.FAILED, OperationStatus.CANCELLED, OperationStatus.TIMED_OUT, OperationStatus.STOPPED);
+    private final ExecutionStatus status;
+    private final String resultPayload;
+    private final ErrorObject error;
+    private final List<TestOperation> operations;
+    private final Map<String, TestOperation> operationsByName;
+    private final List<Event> allEvents;
+    private final SerDes serDes;
+    private final TypeToken<O> resultType;
+
+    public TestResult(
+            ExecutionStatus status,
+            String resultPayload,
+            ErrorObject error,
+            List<TestOperation> operations,
+            List<Event> allEvents,
+            TypeToken<O> resultType,
+            SerDes serDes) {
+        this.status = status;
+        this.resultPayload = resultPayload;
+        this.error = error;
+        this.operations = List.copyOf(operations);
+        this.operationsByName =
+                operations.stream().collect(Collectors.toMap(TestOperation::getName, op -> op, (a, b) -> b));
+        this.allEvents = List.copyOf(allEvents);
+        this.serDes = serDes;
+        this.resultType = resultType;
+    }
+
+    /** Returns the execution status (SUCCEEDED, FAILED, or PENDING). */
+    public ExecutionStatus getStatus() {
+        if (status == ExecutionStatus.SUCCEEDED && error != null) {
+            throw new IllegalStateException(
+                    "Execution succeeded while invocation failed with: " + error.errorMessage());
+        }
+        return status;
+    }
+
+    /** Deserializes and returns the execution output, throwing if the execution did not succeed. */
+    public <T> T getResult(Class<T> resultType) {
+        return getResult(TypeToken.get(resultType));
+    }
+
+    /** Deserializes and returns the execution output using a TypeToken for generic types. */
+    public <T> T getResult(TypeToken<T> resultType) {
+        if (status != ExecutionStatus.SUCCEEDED) {
+            throw new IllegalStateException("Execution did not succeed: " + status);
+        }
+        if (resultPayload == null || resultPayload.isEmpty()) {
+            var lastEvent = allEvents.get(allEvents.size() - 1);
+            if (lastEvent.eventType() == EventType.EXECUTION_SUCCEEDED) {
+                return serDes.deserialize(
+                        lastEvent.executionSucceededDetails().result().payload(), resultType);
+            }
+            return null;
+        }
+        return serDes.deserialize(resultPayload, resultType);
+    }
+
+    /** Deserializes and returns the execution output if the result type is known. */
+    public O getResult() {
+        Objects.requireNonNull(resultType, "ResultType cannot be null");
+        return getResult(resultType);
+    }
+
+    /** Returns the execution error, if present. */
+    public Optional<ErrorObject> getError() {
+        return Optional.ofNullable(error);
+    }
+
+    /** Returns all operations from the execution. */
+    public List<TestOperation> getOperations() {
+        return operations;
+    }
+
+    /** Returns the {@link TestOperation} with the given name, or null if not found. */
+    public TestOperation getOperation(String name) {
+        return operationsByName.get(name);
+    }
+
+    /** Returns all raw history events from the execution. */
+    public List<Event> getHistoryEvents() {
+        return allEvents;
+    }
+
+    /** Returns the raw history events for the given operation name, or an empty list if not found. */
+    public List<Event> getEventsForOperation(String operationName) {
+        var testOp = operationsByName.get(operationName);
+        return testOp != null ? testOp.getEvents() : List.of();
+    }
+
+    /** Returns true if the execution completed successfully. */
+    public boolean isSucceeded() {
+        return status == ExecutionStatus.SUCCEEDED;
+    }
+
+    /** Returns true if the execution failed. */
+    public boolean isFailed() {
+        return status == ExecutionStatus.FAILED;
+    }
+
+    /** Returns all operations that completed successfully. */
+    public List<TestOperation> getSucceededOperations() {
+        return operations.stream()
+                .filter(op -> op.getStatus() == OperationStatus.SUCCEEDED)
+                .toList();
+    }
+
+    /** Returns all operations that failed, were cancelled, timed out, or stopped. */
+    public List<TestOperation> getFailedOperations() {
+        return operations.stream()
+                .filter(op -> FAIL_OPERATION_STATUS.contains(op.getStatus()))
+                .toList();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.html new file mode 100644 index 000000000..be00452a3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing

software.amazon.lambda.durable.testing

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total680 of 1,32948%56 of 7828%821411472934910215
AsyncExecution3100%300%38387474232311
CloudDurableTestRunner23110130%5116%1218476691501
TestOperation656550%9325%16251431101901
TestResult4216179%91155%102984241901
LocalDurableTestRunner3232290%3770%63148032601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.source.html b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.source.html new file mode 100644 index 000000000..eb63db858 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.testing

software.amazon.lambda.durable.testing

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total680 of 1,32948%56 of 7828%821411472934910215
AsyncExecution.java3100%300%38387474232311
CloudDurableTestRunner.java23110130%5116%1218476691501
TestOperation.java656550%9325%16251431101901
TestResult.java4216179%91155%102984241901
LocalDurableTestRunner.java3232290%3770%63148032601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/index.html b/coverage/aws-durable-execution-sdk-java/index.html new file mode 100644 index 000000000..9e3b11d8a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/index.html @@ -0,0 +1 @@ +aws-durable-execution-sdk-java

aws-durable-execution-sdk-java

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total814 of 9,11791%102 of 70985%1509891942,211516241113
software.amazon.lambda.durable.operation3152,75689%6127281%61304677762128012
software.amazon.lambda.durable31269368%61470%37116642373210609
software.amazon.lambda.durable.serde5533986%1083%427199622108
software.amazon.lambda.durable.execution301,52298%1011892%1014210355077011
software.amazon.lambda.durable.client3023%n/a2312152301
software.amazon.lambda.durable.retry42994%4197%7597100638011
software.amazon.lambda.durable.config69697%33592%51114186292020
software.amazon.lambda.durable.util26495%42100%34156632013
software.amazon.lambda.durable.exception41597%92371%9624118046021
software.amazon.lambda.durable.model41698%1285%348166141012
software.amazon.lambda.durable.logging18197%1890%32914111902
software.amazon.lambda.durable.context583100%62278%647015503303
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.html new file mode 100644 index 000000000..ee4ca7477 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.html @@ -0,0 +1 @@ +LambdaDurableFunctionsClient

LambdaDurableFunctionsClient

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total30 of 3923%0 of 0n/a23121523
checkpoint(String, String, List)150%n/a116611
getExecutionState(String, String, String)150%n/a116611
LambdaDurableFunctionsClient(LambdaClient)9100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.java.html new file mode 100644 index 000000000..ad2f58040 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.java.html @@ -0,0 +1,56 @@ +LambdaDurableFunctionsClient.java

LambdaDurableFunctionsClient.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.client;
+
+import java.util.List;
+import java.util.Objects;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionRequest;
+import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse;
+import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest;
+import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+
+/**
+ * Default implementation of {@link DurableExecutionClient} backed by the AWS Lambda SDK client.
+ *
+ * <p>Translates SDK-level checkpoint and state-retrieval calls into the corresponding {@link LambdaClient} API
+ * requests.
+ */
+public class LambdaDurableFunctionsClient implements DurableExecutionClient {
+
+    private final LambdaClient lambdaClient;
+
+    /**
+     * Creates a LambdaDurableFunctionsClient with the provided LambdaClient.
+     *
+     * @param lambdaClient LambdaClient instance to use for backend communication
+     * @throws NullPointerException if lambdaClient is null
+     */
+    public LambdaDurableFunctionsClient(LambdaClient lambdaClient) {
+        this.lambdaClient = Objects.requireNonNull(lambdaClient, "LambdaClient cannot be null");
+    }
+
+    @Override
+    public CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates) {
+        var request = CheckpointDurableExecutionRequest.builder()
+                .durableExecutionArn(arn)
+                .checkpointToken(token)
+                .updates(updates)
+                .build();
+
+        return lambdaClient.checkpointDurableExecution(request);
+    }
+
+    @Override
+    public GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker) {
+        var request = GetDurableExecutionStateRequest.builder()
+                .durableExecutionArn(arn)
+                .checkpointToken(checkpointToken)
+                .marker(marker)
+                .build();
+
+        return lambdaClient.getDurableExecutionState(request);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.html new file mode 100644 index 000000000..3426633b3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.client

software.amazon.lambda.durable.client

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total30 of 3923%0 of 0n/a2312152301
LambdaDurableFunctionsClient30923%n/a2312152301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.source.html new file mode 100644 index 000000000..f7991bf3c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.client

software.amazon.lambda.durable.client

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total30 of 3923%0 of 0n/a2312152301
LambdaDurableFunctionsClient.java30923%n/a2312152301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig$Builder.html new file mode 100644 index 000000000..415dace7d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig$Builder.html @@ -0,0 +1 @@ +CallbackConfig.Builder

CallbackConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 38100%0 of 0n/a0501405
CallbackConfig.Builder(Duration, Duration, SerDes)12100%n/a010501
timeout(Duration)8100%n/a010301
heartbeatTimeout(Duration)8100%n/a010301
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.html new file mode 100644 index 000000000..fa01d4721 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.html @@ -0,0 +1 @@ +CallbackConfig

CallbackConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 41100%0 of 0n/a0601006
CallbackConfig(CallbackConfig.Builder)15100%n/a010501
toBuilder()10100%n/a010101
builder()7100%n/a010101
timeout()3100%n/a010101
heartbeatTimeout()3100%n/a010101
serDes()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.java.html new file mode 100644 index 000000000..6cce72e55 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.java.html @@ -0,0 +1,111 @@ +CallbackConfig.java

CallbackConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.util.ParameterValidator;
+
+/** Configuration for callback operations. */
+public class CallbackConfig {
+    private final Duration timeout;
+    private final Duration heartbeatTimeout;
+    private final SerDes serDes;
+
+    private CallbackConfig(Builder builder) {
+        this.timeout = builder.timeout;
+        this.heartbeatTimeout = builder.heartbeatTimeout;
+        this.serDes = builder.serDes;
+    }
+
+    /**
+     * Returns the maximum duration to wait for the callback to complete.
+     *
+     * @return the timeout duration, or null if not specified
+     */
+    public Duration timeout() {
+        return timeout;
+    }
+
+    /**
+     * Returns the maximum duration between heartbeats before the callback is considered failed.
+     *
+     * @return the heartbeat timeout duration, or null if not specified
+     */
+    public Duration heartbeatTimeout() {
+        return heartbeatTimeout;
+    }
+
+    /** Returns the custom serializer for this callback, or null if not specified (uses default SerDes). */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    /** Creates a new builder with default values. */
+    public static Builder builder() {
+        return new Builder(null, null, null);
+    }
+
+    /** Creates a new builder pre-populated with this config's values. */
+    public Builder toBuilder() {
+        return new Builder(timeout, heartbeatTimeout, serDes);
+    }
+
+    /** Builder for {@link CallbackConfig}. */
+    public static class Builder {
+        private Duration timeout;
+        private Duration heartbeatTimeout;
+        private SerDes serDes;
+
+        public Builder(Duration timeout, Duration heartbeatTimeout, SerDes serDes) {
+            this.timeout = timeout;
+            this.heartbeatTimeout = heartbeatTimeout;
+            this.serDes = serDes;
+        }
+
+        /**
+         * Sets the maximum duration to wait for the callback to complete before timing out.
+         *
+         * @param timeout the timeout duration
+         * @return this builder for method chaining
+         */
+        public Builder timeout(Duration timeout) {
+            ParameterValidator.validateOptionalDuration(timeout, "Callback timeout");
+            this.timeout = timeout;
+            return this;
+        }
+
+        /**
+         * Sets the maximum duration between heartbeats before the callback is considered failed.
+         *
+         * @param heartbeatTimeout the heartbeat timeout duration
+         * @return this builder for method chaining
+         */
+        public Builder heartbeatTimeout(Duration heartbeatTimeout) {
+            ParameterValidator.validateOptionalDuration(heartbeatTimeout, "Heartbeat timeout");
+            this.heartbeatTimeout = heartbeatTimeout;
+            return this;
+        }
+
+        /**
+         * Sets a custom serializer for the callback.
+         *
+         * <p>If not specified, the callback will use the default SerDes configured for the handler. This allows
+         * per-callback customization of serialization behavior, useful for callbacks that need special handling (e.g.,
+         * custom date formats, encryption, compression).
+         *
+         * @param serDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        /** Builds the {@link CallbackConfig} instance. */
+        public CallbackConfig build() {
+            return new CallbackConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.html new file mode 100644 index 000000000..72dfd1263 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.html @@ -0,0 +1 @@ +CompletionConfig

CompletionConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 90100%0 of 8100%01101307
toleratedFailurePercentage(double)22100%4100%030301
minSuccessful(int)17100%2100%020301
toleratedFailureCount(int)16100%2100%020301
CompletionConfig(Integer, Integer, Double)12100%n/a010101
allSuccessful()8100%n/a010101
firstSuccessful()8100%n/a010101
allCompleted()7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.java.html new file mode 100644 index 000000000..8ed708713 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.java.html @@ -0,0 +1,54 @@ +CompletionConfig.java

CompletionConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+/**
+ * Controls when a concurrent operation (map or parallel) completes.
+ *
+ * <p>Provides factory methods for common completion strategies and fine-grained control via {@code minSuccessful},
+ * {@code toleratedFailureCount}, and {@code toleratedFailurePercentage}.
+ */
+public record CompletionConfig(
+        Integer minSuccessful, Integer toleratedFailureCount, Double toleratedFailurePercentage) {
+
+    /** All items must succeed. Zero failures tolerated. */
+    public static CompletionConfig allSuccessful() {
+        return new CompletionConfig(null, 0, null);
+    }
+
+    /** All items run regardless of failures. Failures captured per-item. */
+    public static CompletionConfig allCompleted() {
+        return new CompletionConfig(null, null, null);
+    }
+
+    /** Complete as soon as the first item succeeds. */
+    public static CompletionConfig firstSuccessful() {
+        return new CompletionConfig(1, null, null);
+    }
+
+    /** Complete when the specified number of items have succeeded. */
+    public static CompletionConfig minSuccessful(int count) {
+        if (count < 1) {
+            throw new IllegalArgumentException("minSuccessful must be at least 1, got: " + count);
+        }
+        return new CompletionConfig(count, null, null);
+    }
+
+    /** Complete when more than the specified number of failures have occurred. */
+    public static CompletionConfig toleratedFailureCount(int count) {
+        if (count < 0) {
+            throw new IllegalArgumentException("toleratedFailureCount must be non-negative, got: " + count);
+        }
+        return new CompletionConfig(null, count, null);
+    }
+
+    /** Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0). */
+    public static CompletionConfig toleratedFailurePercentage(double percentage) {
+        if (percentage < 0.0 || percentage > 1.0) {
+            throw new IllegalArgumentException(
+                    "toleratedFailurePercentage must be between 0.0 and 1.0, got: " + percentage);
+        }
+        return new CompletionConfig(null, null, percentage);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig$Builder.html new file mode 100644 index 000000000..7e2f6060a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig$Builder.html @@ -0,0 +1 @@ +InvokeConfig.Builder

InvokeConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 3284%0 of 0n/a1521215
tenantId(String)50%n/a112211
InvokeConfig.Builder(SerDes, SerDes, String)12100%n/a010501
payloadSerDes(SerDes)5100%n/a010201
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.html new file mode 100644 index 000000000..ac836f9bb --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.html @@ -0,0 +1 @@ +InvokeConfig

InvokeConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 41100%0 of 0n/a0601006
InvokeConfig(InvokeConfig.Builder)15100%n/a010501
toBuilder()10100%n/a010101
builder()7100%n/a010101
payloadSerDes()3100%n/a010101
serDes()3100%n/a010101
tenantId()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.java.html new file mode 100644 index 000000000..a409dea89 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.java.html @@ -0,0 +1,109 @@ +InvokeConfig.java

InvokeConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration for chained invoke operations.
+ *
+ * <p>Controls serialization of the invoke payload and result, and optionally specifies a tenant ID.
+ */
+public class InvokeConfig {
+    private final SerDes payloadSerDes;
+    private final SerDes resultSerDes;
+    private final String tenantId;
+
+    public InvokeConfig(Builder builder) {
+        this.payloadSerDes = builder.payloadSerDes;
+        this.resultSerDes = builder.resultSerDes;
+        this.tenantId = builder.tenantId;
+    }
+
+    public SerDes payloadSerDes() {
+        return this.payloadSerDes;
+    }
+
+    public SerDes serDes() {
+        return this.resultSerDes;
+    }
+
+    public String tenantId() {
+        return tenantId;
+    }
+
+    public static Builder builder() {
+        return new Builder(null, null, null);
+    }
+
+    public Builder toBuilder() {
+        return new Builder(payloadSerDes, resultSerDes, tenantId);
+    }
+
+    /** Builder for creating InvokeConfig instances. */
+    public static class Builder {
+        private SerDes payloadSerDes;
+        private SerDes resultSerDes;
+        private String tenantId;
+
+        private Builder(SerDes payloadSerDes, SerDes resultSerDes, String tenantId) {
+            this.payloadSerDes = payloadSerDes;
+            this.resultSerDes = resultSerDes;
+            this.tenantId = tenantId;
+        }
+
+        /**
+         * Sets the tenant ID for the invoke operation.
+         *
+         * <p>The tenant ID is used to isolate execution state for different tenants. It's required when invoking
+         * multi-tenant functions.
+         *
+         * @param tenantId the tenant ID to use
+         * @return this builder for method chaining
+         */
+        public Builder tenantId(String tenantId) {
+            this.tenantId = tenantId;
+            return this;
+        }
+
+        /**
+         * Sets a custom serializer for the invoke operation payload.
+         *
+         * <p>If not specified, the invoke operation will use the default SerDes configured for the handler. This allows
+         * per-invoke customization of serialization behavior, useful for invoke operations that need special handling
+         * (e.g., custom date formats, encryption, compression).
+         *
+         * @param payloadSerDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder payloadSerDes(SerDes payloadSerDes) {
+            this.payloadSerDes = payloadSerDes;
+            return this;
+        }
+
+        /**
+         * Sets a custom serializer for the invoke result.
+         *
+         * <p>If not specified, the invoke will use the default SerDes configured for the handler. This allows
+         * per-invoke customization of serialization behavior, useful for invoke operations that need special handling
+         * (e.g., custom date formats, encryption, compression).
+         *
+         * @param resultSerDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes resultSerDes) {
+            this.resultSerDes = resultSerDes;
+            return this;
+        }
+
+        /**
+         * Builds the InvokeConfig instance.
+         *
+         * @return a new InvokeConfig with the configured options
+         */
+        public InvokeConfig build() {
+            return new InvokeConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig$Builder.html new file mode 100644 index 000000000..887b55e24 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig$Builder.html @@ -0,0 +1 @@ +MapConfig.Builder

MapConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 44100%0 of 4100%0701405
maxConcurrency(Integer)17100%4100%030401
MapConfig.Builder(Integer, CompletionConfig, SerDes)12100%n/a010501
completionConfig(CompletionConfig)5100%n/a010201
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.html new file mode 100644 index 000000000..3a9ae5875 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.html @@ -0,0 +1 @@ +MapConfig

MapConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 53100%0 of 4100%0801106
MapConfig(MapConfig.Builder)27100%4100%030601
toBuilder()10100%n/a010101
builder()7100%n/a010101
maxConcurrency()3100%n/a010101
completionConfig()3100%n/a010101
serDes()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.java.html new file mode 100644 index 000000000..5a5119d46 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.java.html @@ -0,0 +1,94 @@ +MapConfig.java

MapConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration for map operations.
+ *
+ * <p>Defaults to lenient completion (all items run regardless of failures) and unlimited concurrency.
+ */
+public class MapConfig {
+    private final Integer maxConcurrency;
+    private final CompletionConfig completionConfig;
+    private final SerDes serDes;
+
+    private MapConfig(Builder builder) {
+        this.maxConcurrency = builder.maxConcurrency == null ? Integer.MAX_VALUE : builder.maxConcurrency;
+        this.completionConfig =
+                builder.completionConfig == null ? CompletionConfig.allCompleted() : builder.completionConfig;
+        this.serDes = builder.serDes;
+    }
+
+    /** @return max concurrent items, or null for unlimited */
+    public Integer maxConcurrency() {
+        return maxConcurrency;
+    }
+
+    /** @return completion criteria, defaults to {@link CompletionConfig#allCompleted()} */
+    public CompletionConfig completionConfig() {
+        return completionConfig;
+    }
+
+    /** @return the custom serializer, or null to use the default */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    public static Builder builder() {
+        return new Builder(null, null, null);
+    }
+
+    public Builder toBuilder() {
+        return new Builder(maxConcurrency, completionConfig, serDes);
+    }
+
+    /** Builder for creating MapConfig instances. */
+    public static class Builder {
+        private Integer maxConcurrency;
+        private CompletionConfig completionConfig;
+        private SerDes serDes;
+
+        private Builder(Integer maxConcurrency, CompletionConfig completionConfig, SerDes serDes) {
+            this.maxConcurrency = maxConcurrency;
+            this.completionConfig = completionConfig;
+            this.serDes = serDes;
+        }
+
+        public Builder maxConcurrency(Integer maxConcurrency) {
+            if (maxConcurrency != null && maxConcurrency < 1) {
+                throw new IllegalArgumentException("maxConcurrency must be at least 1, got: " + maxConcurrency);
+            }
+            this.maxConcurrency = maxConcurrency;
+            return this;
+        }
+
+        /**
+         * Sets the completion criteria for the map operation.
+         *
+         * @param completionConfig the completion configuration (default: {@link CompletionConfig#allCompleted()})
+         * @return this builder for method chaining
+         */
+        public Builder completionConfig(CompletionConfig completionConfig) {
+            this.completionConfig = completionConfig;
+            return this;
+        }
+
+        /**
+         * Sets the custom serializer to use for serializing map items and results.
+         *
+         * @param serDes the serializer to use
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        public MapConfig build() {
+            return new MapConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig$Builder.html new file mode 100644 index 000000000..010047dd5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig$Builder.html @@ -0,0 +1 @@ +ParallelBranchConfig.Builder

ParallelBranchConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 16100%0 of 0n/a030603
ParallelBranchConfig.Builder(SerDes)6100%n/a010301
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.html new file mode 100644 index 000000000..92a110343 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.html @@ -0,0 +1 @@ +ParallelBranchConfig

ParallelBranchConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 2171%0 of 0n/a141614
toBuilder()60%n/a111111
ParallelBranchConfig(ParallelBranchConfig.Builder)7100%n/a010301
builder()5100%n/a010101
serDes()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.java.html new file mode 100644 index 000000000..95c7baebc --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.java.html @@ -0,0 +1,70 @@ +ParallelBranchConfig.java

ParallelBranchConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration options for parallel branch in durable executions.
+ *
+ * <p>This class provides a builder pattern for configuring various aspects of parallel branch execution
+ */
+public class ParallelBranchConfig {
+    private final SerDes serDes;
+
+    private ParallelBranchConfig(Builder builder) {
+        this.serDes = builder.serDes;
+    }
+
+    /** Returns the custom serializer for this step, or null if not specified (uses default SerDes). */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    public Builder toBuilder() {
+        return new Builder(serDes);
+    }
+
+    /**
+     * Creates a new builder for ParallelBranchConfig.
+     *
+     * @return a new Builder instance
+     */
+    public static Builder builder() {
+        return new Builder(null);
+    }
+
+    /** Builder for creating StepConfig instances. */
+    public static class Builder {
+        private SerDes serDes;
+
+        public Builder(SerDes serDes) {
+            this.serDes = serDes;
+        }
+
+        /**
+         * Sets a custom serializer for the step.
+         *
+         * <p>If not specified, the parallel branch will use the default SerDes configured for the handler. This allows
+         * per-branch customization of serialization behavior, useful for branches that need special handling (e.g.,
+         * custom date formats, encryption, compression).
+         *
+         * @param serDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        /**
+         * Builds the ParallelBranchConfig instance.
+         *
+         * @return a new StepConfig with the configured options
+         */
+        public ParallelBranchConfig build() {
+            return new ParallelBranchConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig$Builder.html new file mode 100644 index 000000000..f3cb199d7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig$Builder.html @@ -0,0 +1 @@ +ParallelConfig.Builder

ParallelConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 3786%3 of 862%371903
completionConfig(CompletionConfig)51066%2250%231401
maxConcurrency(Integer)17100%1375%130401
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.html new file mode 100644 index 000000000..210e7871f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.html @@ -0,0 +1 @@ +ParallelConfig

ParallelConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 32100%0 of 4100%060804
ParallelConfig(ParallelConfig.Builder)22100%4100%030501
builder()4100%n/a010101
maxConcurrency()3100%n/a010101
completionConfig()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.java.html new file mode 100644 index 000000000..0e0bfed14 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.java.html @@ -0,0 +1,85 @@ +ParallelConfig.java

ParallelConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+/**
+ * Configuration options for parallel operations in durable executions.
+ *
+ * <p>This class provides a builder pattern for configuring concurrency limits and completion semantics for parallel
+ * branch execution.
+ */
+public class ParallelConfig {
+    private final int maxConcurrency;
+    private final CompletionConfig completionConfig;
+
+    private ParallelConfig(Builder builder) {
+        this.maxConcurrency = builder.maxConcurrency == null ? Integer.MAX_VALUE : builder.maxConcurrency;
+        this.completionConfig =
+                builder.completionConfig == null ? CompletionConfig.allCompleted() : builder.completionConfig;
+    }
+
+    /** @return the maximum number of branches running simultaneously, or -1 for unlimited */
+    public int maxConcurrency() {
+        return maxConcurrency;
+    }
+
+    public CompletionConfig completionConfig() {
+        return completionConfig;
+    }
+
+    /**
+     * Creates a new builder for ParallelConfig.
+     *
+     * @return a new Builder instance
+     */
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    /** Builder for creating ParallelConfig instances. */
+    public static class Builder {
+        private Integer maxConcurrency;
+        private CompletionConfig completionConfig;
+
+        private Builder() {}
+
+        /**
+         * Sets the maximum number of branches that can run simultaneously.
+         *
+         * @param maxConcurrency the concurrency limit (default: unlimited)
+         * @return this builder for method chaining
+         */
+        public Builder maxConcurrency(Integer maxConcurrency) {
+            if (maxConcurrency != null && maxConcurrency < 1) {
+                throw new IllegalArgumentException("maxConcurrency must be at least 1, got: " + maxConcurrency);
+            }
+            this.maxConcurrency = maxConcurrency;
+            return this;
+        }
+
+        /**
+         * Sets the maximum number of branches that can run simultaneously.
+         *
+         * @param completionConfig the completion configuration for the parallel operation
+         * @return this builder for method chaining
+         */
+        public Builder completionConfig(CompletionConfig completionConfig) {
+            if (completionConfig != null && completionConfig.toleratedFailurePercentage() != null) {
+                throw new IllegalArgumentException("ParallelConfig does not support toleratedFailurePercentage");
+            }
+            this.completionConfig = completionConfig;
+            return this;
+        }
+
+        /**
+         * Builds the ParallelConfig instance.
+         *
+         * @return a new ParallelConfig with the configured options
+         * @throws IllegalArgumentException if any configuration values are invalid
+         */
+        public ParallelConfig build() {
+            return new ParallelConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig$Builder.html new file mode 100644 index 000000000..0ae1aea8d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig$Builder.html @@ -0,0 +1 @@ +RunInChildContextConfig.Builder

RunInChildContextConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 16100%0 of 0n/a030603
RunInChildContextConfig.Builder(SerDes)6100%n/a010301
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.html new file mode 100644 index 000000000..8343e5fa0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.html @@ -0,0 +1 @@ +RunInChildContextConfig

RunInChildContextConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 0n/a040604
RunInChildContextConfig(RunInChildContextConfig.Builder)7100%n/a010301
toBuilder()6100%n/a010101
builder()5100%n/a010101
serDes()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.java.html new file mode 100644 index 000000000..159dad9fb --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.java.html @@ -0,0 +1,73 @@ +RunInChildContextConfig.java

RunInChildContextConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration options for RunInChildContext operations in durable executions.
+ *
+ * <p>This class provides a builder pattern for configuring various aspects of RunInChildContext execution.
+ */
+public class RunInChildContextConfig {
+    private final SerDes serDes;
+
+    private RunInChildContextConfig(Builder builder) {
+        this.serDes = builder.serDes;
+    }
+
+    /**
+     * Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
+     * SerDes).
+     */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    public Builder toBuilder() {
+        return new Builder(serDes);
+    }
+
+    /**
+     * Creates a new builder for RunInChildContextConfig.
+     *
+     * @return a new Builder instance
+     */
+    public static Builder builder() {
+        return new Builder(null);
+    }
+
+    /** Builder for creating StepConfig instances. */
+    public static class Builder {
+        private SerDes serDes;
+
+        public Builder(SerDes serDes) {
+            this.serDes = serDes;
+        }
+
+        /**
+         * Sets a custom serializer for the step.
+         *
+         * <p>If not specified, the RunInChildContext operation will use the default SerDes configured for the handler.
+         * This allows per-operation customization of serialization behavior, useful for operations that need special
+         * handling (e.g., custom date formats, encryption, compression).
+         *
+         * @param serDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        /**
+         * Builds the RunInChildContextConfig instance.
+         *
+         * @return a new StepConfig with the configured options
+         */
+        public RunInChildContextConfig build() {
+            return new RunInChildContextConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig$Builder.html new file mode 100644 index 000000000..a42830eec --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig$Builder.html @@ -0,0 +1 @@ +StepConfig.Builder

StepConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 32100%0 of 0n/a0501205
StepConfig.Builder(RetryStrategy, StepSemantics, SerDes)12100%n/a010501
retryStrategy(RetryStrategy)5100%n/a010201
semantics(StepSemantics)5100%n/a010201
serDes(SerDes)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.html new file mode 100644 index 000000000..c6d4b8a94 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.html @@ -0,0 +1 @@ +StepConfig

StepConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 51100%0 of 4100%0801006
StepConfig(StepConfig.Builder)15100%n/a010501
toBuilder()10100%n/a010101
retryStrategy()8100%2100%020101
semantics()8100%2100%020101
builder()7100%n/a010101
serDes()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.java.html new file mode 100644 index 000000000..0f7b6be2e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.java.html @@ -0,0 +1,113 @@ +StepConfig.java

StepConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.retry.RetryStrategies;
+import software.amazon.lambda.durable.retry.RetryStrategy;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration options for step operations in durable executions.
+ *
+ * <p>This class provides a builder pattern for configuring various aspects of step execution, including retry behavior
+ * and delivery semantics.
+ */
+public class StepConfig {
+    private final RetryStrategy retryStrategy;
+    private final StepSemantics semantics;
+    private final SerDes serDes;
+
+    private StepConfig(Builder builder) {
+        this.retryStrategy = builder.retryStrategy;
+        this.semantics = builder.semantics;
+        this.serDes = builder.serDes;
+    }
+
+    /** Returns the retry strategy for this step, or the default strategy if not specified. */
+    public RetryStrategy retryStrategy() {
+        return retryStrategy != null ? retryStrategy : RetryStrategies.Presets.DEFAULT;
+    }
+
+    /** Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified. */
+    public StepSemantics semantics() {
+        return semantics != null ? semantics : StepSemantics.AT_LEAST_ONCE_PER_RETRY;
+    }
+
+    /** Returns the custom serializer for this step, or null if not specified (uses default SerDes). */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    public Builder toBuilder() {
+        return new Builder(retryStrategy, semantics, serDes);
+    }
+
+    /**
+     * Creates a new builder for StepConfig.
+     *
+     * @return a new Builder instance
+     */
+    public static Builder builder() {
+        return new Builder(null, null, null);
+    }
+
+    /** Builder for creating StepConfig instances. */
+    public static class Builder {
+        private RetryStrategy retryStrategy;
+        private StepSemantics semantics;
+        private SerDes serDes;
+
+        public Builder(RetryStrategy retryStrategy, StepSemantics semantics, SerDes serDes) {
+            this.retryStrategy = retryStrategy;
+            this.semantics = semantics;
+            this.serDes = serDes;
+        }
+
+        /**
+         * Sets the retry strategy for the step.
+         *
+         * @param retryStrategy the retry strategy to use, or null for default behavior
+         * @return this builder for method chaining
+         */
+        public Builder retryStrategy(RetryStrategy retryStrategy) {
+            this.retryStrategy = retryStrategy;
+            return this;
+        }
+
+        /**
+         * Sets the delivery semantics for the step.
+         *
+         * @param semantics the delivery semantics to use, defaults to AT_LEAST_ONCE_PER_RETRY if not specified
+         * @return this builder for method chaining
+         */
+        public Builder semantics(StepSemantics semantics) {
+            this.semantics = semantics;
+            return this;
+        }
+
+        /**
+         * Sets a custom serializer for the step.
+         *
+         * <p>If not specified, the step will use the default SerDes configured for the handler. This allows per-step
+         * customization of serialization behavior, useful for steps that need special handling (e.g., custom date
+         * formats, encryption, compression).
+         *
+         * @param serDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        /**
+         * Builds the StepConfig instance.
+         *
+         * @return a new StepConfig with the configured options
+         */
+        public StepConfig build() {
+            return new StepConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.html new file mode 100644 index 000000000..e7e57ea2e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.html @@ -0,0 +1 @@ +StepSemantics

StepSemantics

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a010301
static {...}15100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.java.html new file mode 100644 index 000000000..b3613fd76 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.java.html @@ -0,0 +1,24 @@ +StepSemantics.java

StepSemantics.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+/**
+ * Delivery semantics for step operations.
+ *
+ * <p>Controls how the SDK handles step execution and interruption recovery.
+ */
+public enum StepSemantics {
+    /**
+     * At-least-once delivery (default). The step may be re-executed if interrupted. START checkpoint is
+     * fire-and-forget.
+     */
+    AT_LEAST_ONCE_PER_RETRY,
+
+    /**
+     * At-most-once delivery per retry attempt. The step will not be re-executed if interrupted. START checkpoint is
+     * awaited before user code runs. If interrupted, throws
+     * {@link software.amazon.lambda.durable.exception.StepInterruptedException}.
+     */
+    AT_MOST_ONCE_PER_RETRY
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig$Builder.html new file mode 100644 index 000000000..1b0ed20b5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig$Builder.html @@ -0,0 +1 @@ +WaitForCallbackConfig.Builder

WaitForCallbackConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 18100%0 of 0n/a040604
stepConfig(StepConfig)5100%n/a010201
callbackConfig(CallbackConfig)5100%n/a010201
build()5100%n/a010101
WaitForCallbackConfig.Builder()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.html new file mode 100644 index 000000000..cf9403314 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.html @@ -0,0 +1 @@ +WaitForCallbackConfig

WaitForCallbackConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 43100%0 of 4100%070905
WaitForCallbackConfig(WaitForCallbackConfig.Builder)23100%4100%030501
toBuilder()10100%n/a010101
builder()4100%n/a010101
stepConfig()3100%n/a010101
callbackConfig()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.java.html new file mode 100644 index 000000000..4f2da9897 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.java.html @@ -0,0 +1,76 @@ +WaitForCallbackConfig.java

WaitForCallbackConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+/**
+ * Configuration for the {@code waitForCallback} composite operation.
+ *
+ * <p>Combines a {@link StepConfig} (for the step that produces the callback) and a {@link CallbackConfig} (for the
+ * callback wait itself).
+ */
+public class WaitForCallbackConfig {
+    private final StepConfig stepConfig;
+    private final CallbackConfig callbackConfig;
+
+    private WaitForCallbackConfig(Builder builder) {
+        this.stepConfig = builder.stepConfig == null ? StepConfig.builder().build() : builder.stepConfig;
+        this.callbackConfig =
+                builder.callbackConfig == null ? CallbackConfig.builder().build() : builder.callbackConfig;
+    }
+
+    /** Returns the step configuration for the composite operation. */
+    public StepConfig stepConfig() {
+        return stepConfig;
+    }
+
+    /** Returns the callback configuration for the composite operation. */
+    public CallbackConfig callbackConfig() {
+        return callbackConfig;
+    }
+
+    /** Creates a new builder. */
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    /** Creates a builder pre-populated with this instance's values. */
+    public Builder toBuilder() {
+        return new Builder().stepConfig(this.stepConfig).callbackConfig(this.callbackConfig);
+    }
+
+    /** Builder for {@link WaitForCallbackConfig}. */
+    public static class Builder {
+        private StepConfig stepConfig;
+        private CallbackConfig callbackConfig;
+
+        public Builder() {}
+
+        /**
+         * Sets the step configuration for the composite operation.
+         *
+         * @param stepConfig the step configuration
+         * @return this builder for method chaining
+         */
+        public Builder stepConfig(StepConfig stepConfig) {
+            this.stepConfig = stepConfig;
+            return this;
+        }
+
+        /**
+         * Sets the callback configuration for the composite operation.
+         *
+         * @param callbackConfig the callback configuration
+         * @return this builder for method chaining
+         */
+        public Builder callbackConfig(CallbackConfig callbackConfig) {
+            this.callbackConfig = callbackConfig;
+            return this;
+        }
+
+        /** Builds the WaitForCallbackConfig instance. */
+        public WaitForCallbackConfig build() {
+            return new WaitForCallbackConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig$Builder.html new file mode 100644 index 000000000..eec15ee14 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig$Builder.html @@ -0,0 +1 @@ +WaitForConditionConfig.Builder

WaitForConditionConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 20100%0 of 0n/a040704
waitStrategy(WaitForConditionWaitStrategy)5100%n/a010201
serDes(SerDes)5100%n/a010201
initialState(Object)5100%n/a010201
build()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.html new file mode 100644 index 000000000..b49fc5712 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.html @@ -0,0 +1 @@ +WaitForConditionConfig

WaitForConditionConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 51100%0 of 2100%0701406
toBuilder()18100%n/a010501
WaitForConditionConfig(WaitForConditionConfig.Builder)15100%n/a010501
waitStrategy()8100%2100%020101
builder()4100%n/a010101
serDes()3100%n/a010101
initialState()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.java.html new file mode 100644 index 000000000..d21e7d5b2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.java.html @@ -0,0 +1,119 @@ +WaitForConditionConfig.java

WaitForConditionConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.config;
+
+import software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy;
+import software.amazon.lambda.durable.retry.WaitStrategies;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration for {@code waitForCondition} operations.
+ *
+ * <p>Holds only optional parameters for a waitForCondition call. Use {@link #builder()} to create instances.
+ *
+ * @param <T> the type of state being polled
+ */
+public class WaitForConditionConfig<T> {
+    private final WaitForConditionWaitStrategy<T> waitStrategy;
+    private final SerDes serDes;
+    private final T initialState;
+
+    private WaitForConditionConfig(Builder<T> builder) {
+        this.waitStrategy = builder.waitStrategy;
+        this.serDes = builder.serDes;
+        this.initialState = builder.initialState;
+    }
+
+    /**
+     * Returns the wait strategy that controls polling behavior. If no strategy was explicitly set, returns the default
+     * strategy from {@link WaitStrategies#defaultStrategy()}.
+     */
+    public WaitForConditionWaitStrategy<T> waitStrategy() {
+        return waitStrategy != null ? waitStrategy : WaitStrategies.defaultStrategy();
+    }
+
+    /** Returns the custom serializer, or null if not specified (uses default SerDes). */
+    public SerDes serDes() {
+        return serDes;
+    }
+
+    /** Returns the initial state object, or null if not specified. */
+    public T initialState() {
+        return initialState;
+    }
+
+    /**
+     * Returns a new builder initialized with the values from this config. Useful internally for injecting default
+     * SerDes.
+     *
+     * @return a new builder pre-populated with this config's values
+     */
+    public Builder<T> toBuilder() {
+        var b = new Builder<T>();
+        b.waitStrategy = this.waitStrategy;
+        b.serDes = this.serDes;
+        b.initialState = this.initialState;
+        return b;
+    }
+
+    /**
+     * Creates a new builder for {@code WaitForConditionConfig}. All fields are optional.
+     *
+     * @param <T> the type of state being polled
+     * @return a new builder instance
+     */
+    public static <T> Builder<T> builder() {
+        return new Builder<>();
+    }
+
+    public static class Builder<T> {
+        private WaitForConditionWaitStrategy<T> waitStrategy;
+        private SerDes serDes;
+        private T initialState;
+
+        private Builder() {}
+
+        /**
+         * Sets the wait strategy for the waitForCondition operation.
+         *
+         * <p>If not specified, the default exponential backoff strategy from {@link WaitStrategies#defaultStrategy()}
+         * is used.
+         *
+         * @param waitStrategy the strategy controlling polling intervals and termination
+         * @return this builder for method chaining
+         */
+        public Builder<T> waitStrategy(WaitForConditionWaitStrategy<T> waitStrategy) {
+            this.waitStrategy = waitStrategy;
+            return this;
+        }
+
+        /**
+         * Sets a custom serializer for the waitForCondition operation.
+         *
+         * <p>If not specified, the operation will use the default SerDes configured for the handler.
+         *
+         * @param serDes the custom serializer to use, or null to use the default
+         * @return this builder for method chaining
+         */
+        public Builder<T> serDes(SerDes serDes) {
+            this.serDes = serDes;
+            return this;
+        }
+
+        /**
+         * Sets the initial state for the waitForCondition operation. The initial state will be null if it's not set.
+         *
+         * @param initialState the initial state object to pass to the condition function
+         * @return this builder for method chaining
+         */
+        public Builder<T> initialState(T initialState) {
+            this.initialState = initialState;
+            return this;
+        }
+
+        public WaitForConditionConfig<T> build() {
+            return new WaitForConditionConfig<>(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.html new file mode 100644 index 000000000..c3e7f8483 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.config

software.amazon.lambda.durable.config

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total16 of 71297%3 of 3892%51114186292020
ParallelBranchConfig61571%n/a14161401
ParallelConfig.Builder53286%3562%37190301
InvokeConfig.Builder52784%n/a152121501
CompletionConfig90100%8100%0110130701
MapConfig53100%4100%080110601
StepConfig51100%4100%080100601
WaitForConditionConfig51100%2100%070140601
MapConfig.Builder44100%4100%070140501
WaitForCallbackConfig43100%4100%07090501
CallbackConfig41100%n/a060100601
InvokeConfig41100%n/a060100601
CallbackConfig.Builder38100%n/a050140501
StepConfig.Builder32100%n/a050120501
ParallelConfig32100%4100%06080401
RunInChildContextConfig21100%n/a04060401
WaitForConditionConfig.Builder20100%n/a04070401
WaitForCallbackConfig.Builder18100%n/a04060401
RunInChildContextConfig.Builder16100%n/a03060301
ParallelBranchConfig.Builder16100%n/a03060301
StepSemantics15100%n/a01030101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.source.html new file mode 100644 index 000000000..0ed6cab06 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.config

software.amazon.lambda.durable.config

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total16 of 71297%3 of 3892%51114186292020
ParallelBranchConfig.java63183%n/a171121702
InvokeConfig.java56893%n/a11122211102
ParallelConfig.java56492%3975%3131170702
MapConfig.java97100%8100%01502501102
CompletionConfig.java90100%8100%0110130701
StepConfig.java83100%4100%01302201102
CallbackConfig.java79100%n/a01102401102
WaitForConditionConfig.java71100%2100%01102101002
WaitForCallbackConfig.java61100%4100%0110150902
RunInChildContextConfig.java37100%n/a070120702
StepSemantics.java15100%n/a01030101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.html new file mode 100644 index 000000000..93cb2aeb1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.html @@ -0,0 +1 @@ +BaseContextImpl

BaseContextImpl

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 52100%0 of 0n/a0901809
BaseContextImpl(ExecutionManager, DurableConfig, Context, String, String, ThreadType)26100%n/a010901
getExecutionArn()4100%n/a010101
setExecutionMode()4100%n/a010201
getLambdaContext()3100%n/a010101
getDurableConfig()3100%n/a010101
getContextId()3100%n/a010101
getContextName()3100%n/a010101
getExecutionManager()3100%n/a010101
isReplaying()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.java.html new file mode 100644 index 000000000..6e06a8d30 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.java.html @@ -0,0 +1,113 @@ +BaseContextImpl.java

BaseContextImpl.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.context;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.execution.ThreadType;
+
+public abstract class BaseContextImpl implements AutoCloseable, BaseContext {
+    private final ExecutionManager executionManager;
+    private final DurableConfig durableConfig;
+    private final Context lambdaContext;
+    private final String contextId;
+    private final String contextName;
+    private final ThreadType threadType;
+
+    private boolean isReplaying;
+
+    /**
+     * Creates a new BaseContext instance.
+     *
+     * @param executionManager the execution manager for thread coordination and state management
+     * @param durableConfig the durable execution configuration
+     * @param lambdaContext the AWS Lambda runtime context
+     * @param contextId the context ID, null for root context, set for child contexts
+     * @param contextName the human-readable name for this context
+     * @param threadType the type of thread this context runs on
+     */
+    protected BaseContextImpl(
+            ExecutionManager executionManager,
+            DurableConfig durableConfig,
+            Context lambdaContext,
+            String contextId,
+            String contextName,
+            ThreadType threadType) {
+        this.executionManager = executionManager;
+        this.durableConfig = durableConfig;
+        this.lambdaContext = lambdaContext;
+        this.contextId = contextId;
+        this.contextName = contextName;
+        this.isReplaying = executionManager.hasOperationsForContext(contextId);
+        this.threadType = threadType;
+    }
+
+    // =============== accessors ================
+
+    /**
+     * Returns the AWS Lambda runtime context.
+     *
+     * @return the Lambda context
+     */
+    @Override
+    public Context getLambdaContext() {
+        return lambdaContext;
+    }
+
+    /**
+     * Returns metadata about the current durable execution.
+     *
+     * <p>The execution context provides information that remains constant throughout the execution lifecycle, such as
+     * the durable execution ARN. This is useful for tracking execution progress, correlating logs, and referencing this
+     * execution in external systems.
+     *
+     * @return the execution context
+     */
+    @Override
+    public String getExecutionArn() {
+        return executionManager.getDurableExecutionArn();
+    }
+
+    /**
+     * Returns the configuration for durable execution behavior.
+     *
+     * @return the durable configuration
+     */
+    @Override
+    public DurableConfig getDurableConfig() {
+        return durableConfig;
+    }
+
+    // ============= internal utilities ===============
+
+    /** Gets the context ID for this context. Null for root context, set for child contexts. */
+    @Override
+    public String getContextId() {
+        return contextId;
+    }
+
+    /** Gets the context name for this context. Null for root context. */
+    @Override
+    public String getContextName() {
+        return contextName;
+    }
+
+    public ExecutionManager getExecutionManager() {
+        return executionManager;
+    }
+
+    /** Returns whether this context is currently in replay mode. */
+    @Override
+    public boolean isReplaying() {
+        return isReplaying;
+    }
+
+    /**
+     * Transitions this context from replay to execution mode. Called when the first un-cached operation is encountered.
+     */
+    public void setExecutionMode() {
+        this.isReplaying = false;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.html new file mode 100644 index 000000000..0cf0db530 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.html @@ -0,0 +1 @@ +DurableContextImpl

DurableContextImpl

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 485100%4 of 2281%4310124020
mapAsync(String, Collection, TypeToken, DurableContext.MapFunction, MapConfig)55100%2100%0201401
invokeAsync(String, String, Object, TypeToken, InvokeConfig)52100%2250%2301401
waitForCallbackAsync(String, TypeToken, BiConsumer, WaitForCallbackConfig)47100%2100%0201401
waitForConditionAsync(String, TypeToken, BiFunction, WaitForConditionConfig)42100%1150%1201001
runInChildContextAsync(String, TypeToken, Function, RunInChildContextConfig, OperationSubType)41100%2100%0201001
stepAsync(String, TypeToken, Function, StepConfig)40100%2100%0201001
createCallback(String, TypeToken, CallbackConfig)31100%2100%020801
parallel(String, ParallelConfig)25100%n/a010701
getLogger()24100%1375%130601
waitAsync(String, Duration)22100%n/a010701
lambda$waitForCallbackAsync$1(String, TypeToken, WaitForCallbackConfig, BiConsumer, DurableContext)22100%n/a010501
DurableContextImpl(ExecutionManager, DurableConfig, Context, String, String)15100%n/a010301
createStepContext(String, String, int)13100%n/a010401
createChildContext(String, String)12100%n/a010201
createRootContext(ExecutionManager, DurableConfig, Context)9100%n/a010101
static {...}9100%n/a010201
runInChildContextAsync(String, TypeToken, Function, RunInChildContextConfig)8100%n/a010101
close()7100%2100%020301
lambda$waitForCallbackAsync$0(BiConsumer, DurableCallbackFuture, StepContext)7100%n/a010201
nextOperationId()4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.java.html new file mode 100644 index 000000000..67e62a92e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.java.html @@ -0,0 +1,391 @@ +DurableContextImpl.java

DurableContextImpl.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.context;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import java.time.Duration;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.lambda.durable.DurableCallbackFuture;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.ParallelDurableFuture;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.CallbackConfig;
+import software.amazon.lambda.durable.config.InvokeConfig;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.config.RunInChildContextConfig;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.WaitForCallbackConfig;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.execution.OperationIdGenerator;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.logging.DurableLogger;
+import software.amazon.lambda.durable.model.MapResult;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+import software.amazon.lambda.durable.operation.CallbackOperation;
+import software.amazon.lambda.durable.operation.ChildContextOperation;
+import software.amazon.lambda.durable.operation.InvokeOperation;
+import software.amazon.lambda.durable.operation.MapOperation;
+import software.amazon.lambda.durable.operation.ParallelOperation;
+import software.amazon.lambda.durable.operation.StepOperation;
+import software.amazon.lambda.durable.operation.WaitForConditionOperation;
+import software.amazon.lambda.durable.operation.WaitOperation;
+import software.amazon.lambda.durable.util.ParameterValidator;
+
+/**
+ * User-facing API for defining durable operations within a workflow.
+ *
+ * <p>Provides methods for creating steps, waits, chained invokes, callbacks, and child contexts. Each method creates a
+ * checkpoint-backed operation that survives Lambda interruptions.
+ */
+public class DurableContextImpl extends BaseContextImpl implements DurableContext {
+    private static final String WAIT_FOR_CALLBACK_CALLBACK_SUFFIX = "-callback";
+    private static final String WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX = "-submitter";
+    private static final int MAX_WAIT_FOR_CALLBACK_NAME_LENGTH = ParameterValidator.MAX_OPERATION_NAME_LENGTH
+            - Math.max(WAIT_FOR_CALLBACK_CALLBACK_SUFFIX.length(), WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX.length());
+    private final OperationIdGenerator operationIdGenerator;
+    private volatile DurableLogger logger;
+
+    /** Shared initialization β€” sets all fields. */
+    private DurableContextImpl(
+            ExecutionManager executionManager,
+            DurableConfig durableConfig,
+            Context lambdaContext,
+            String contextId,
+            String contextName) {
+        super(executionManager, durableConfig, lambdaContext, contextId, contextName, ThreadType.CONTEXT);
+        operationIdGenerator = new OperationIdGenerator(contextId);
+    }
+
+    /**
+     * Creates a root context (contextId = null)
+     *
+     * <p>The context itself always has a null contextId (making it a root context).
+     *
+     * @param executionManager the execution manager
+     * @param durableConfig the durable configuration
+     * @param lambdaContext the Lambda context
+     * @return a new root DurableContext
+     */
+    public static DurableContextImpl createRootContext(
+            ExecutionManager executionManager, DurableConfig durableConfig, Context lambdaContext) {
+        return new DurableContextImpl(executionManager, durableConfig, lambdaContext, null, null);
+    }
+
+    /**
+     * Creates a child context.
+     *
+     * @param childContextId the child context's ID (the CONTEXT operation's operation ID)
+     * @param childContextName the name of the child context
+     * @return a new DurableContext for the child context
+     */
+    public DurableContextImpl createChildContext(String childContextId, String childContextName) {
+        return new DurableContextImpl(
+                getExecutionManager(), getDurableConfig(), getLambdaContext(), childContextId, childContextName);
+    }
+
+    /**
+     * Creates a step context for executing step operations.
+     *
+     * @param stepOperationId the ID of the step operation (used for thread registration)
+     * @param stepOperationName the name of the step operation
+     * @param attempt the current retry attempt number (0-based)
+     * @return a new StepContext instance
+     */
+    public StepContextImpl createStepContext(String stepOperationId, String stepOperationName, int attempt) {
+        return new StepContextImpl(
+                getExecutionManager(),
+                getDurableConfig(),
+                getLambdaContext(),
+                stepOperationId,
+                stepOperationName,
+                attempt);
+    }
+
+    @Override
+    public <T> DurableFuture<T> stepAsync(
+            String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config) {
+        Objects.requireNonNull(config, "config cannot be null");
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        ParameterValidator.validateOperationName(name);
+
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+        var operationId = nextOperationId();
+
+        // Create and start step operation with TypeToken
+        var operation = new StepOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.STEP), func, resultType, config, this);
+
+        operation.execute(); // Start the step (returns immediately)
+
+        return operation;
+    }
+
+    @Override
+    public DurableFuture<Void> waitAsync(String name, Duration duration) {
+        ParameterValidator.validateDuration(duration, "Wait duration");
+        ParameterValidator.validateOperationName(name);
+
+        var operationId = nextOperationId();
+
+        // Create and start wait operation
+        var operation =
+                new WaitOperation(OperationIdentifier.of(operationId, name, OperationType.WAIT), duration, this);
+
+        operation.execute(); // Checkpoint the wait
+        return operation;
+    }
+
+    @Override
+    public <T, U> DurableFuture<T> invokeAsync(
+            String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config) {
+        Objects.requireNonNull(config, "config cannot be null");
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        ParameterValidator.validateOperationName(name);
+
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+        if (config.payloadSerDes() == null) {
+            config = config.toBuilder()
+                    .payloadSerDes(getDurableConfig().getSerDes())
+                    .build();
+        }
+        var operationId = nextOperationId();
+
+        // Create and start invoke operation
+        var operation = new InvokeOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.CHAINED_INVOKE),
+                functionName,
+                payload,
+                resultType,
+                config,
+                this);
+
+        operation.execute(); // checkpoint the invoke operation
+        return operation; // Block (will throw SuspendExecutionException if needed)
+    }
+
+    @Override
+    public <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType, CallbackConfig config) {
+        ParameterValidator.validateOperationName(name);
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+        var operationId = nextOperationId();
+
+        var operation = new CallbackOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.CALLBACK), resultType, config, this);
+        operation.execute();
+
+        return operation;
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @param config the configuration for the child context
+     * @return the DurableFuture wrapping the child context result
+     */
+    @Override
+    public <T> DurableFuture<T> runInChildContextAsync(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
+        return runInChildContextAsync(name, resultType, func, config, OperationSubType.RUN_IN_CHILD_CONTEXT);
+    }
+
+    private <T> DurableFuture<T> runInChildContextAsync(
+            String name,
+            TypeToken<T> resultType,
+            Function<DurableContext, T> func,
+            RunInChildContextConfig config,
+            OperationSubType subType) {
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        Objects.requireNonNull(config, "RunInChildContextConfig cannot be null");
+        ParameterValidator.validateOperationName(name);
+
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+
+        var operationId = nextOperationId();
+
+        var operation = new ChildContextOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, subType),
+                func,
+                resultType,
+                config,
+                this);
+
+        operation.execute();
+        return operation;
+    }
+
+    @Override
+    public <I, O> DurableFuture<MapResult<O>> mapAsync(
+            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config) {
+        Objects.requireNonNull(items, "items cannot be null");
+        Objects.requireNonNull(function, "function cannot be null");
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        Objects.requireNonNull(config, "config cannot be null");
+        ParameterValidator.validateOperationName(name);
+        ParameterValidator.validateOrderedCollection(items);
+
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+
+        // Convert to List for deterministic index-based access
+        var itemList = List.copyOf(items);
+        var operationId = nextOperationId();
+
+        var operation = new MapOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, OperationSubType.MAP),
+                itemList,
+                function,
+                resultType,
+                config,
+                this);
+        operation.execute();
+        return operation;
+    }
+
+    @Override
+    public ParallelDurableFuture parallel(String name, ParallelConfig config) {
+        Objects.requireNonNull(config, "config cannot be null");
+        var operationId = nextOperationId();
+
+        var parallelOp = new ParallelOperation(
+                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, OperationSubType.PARALLEL),
+                getDurableConfig().getSerDes(),
+                this,
+                config);
+
+        parallelOp.execute();
+
+        return parallelOp;
+    }
+
+    @Override
+    public <T> DurableFuture<T> waitForCallbackAsync(
+            String name,
+            TypeToken<T> resultType,
+            BiConsumer<String, StepContext> func,
+            WaitForCallbackConfig waitForCallbackConfig) {
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        Objects.requireNonNull(waitForCallbackConfig, "waitForCallbackConfig cannot be null");
+        // waitForCallback adds a suffix for the callback operation name and the submitter operation name so
+        // the length restriction of waitForCallback name is different from the other operations.
+        ParameterValidator.validateOperationName(name, MAX_WAIT_FOR_CALLBACK_NAME_LENGTH);
+
+        var finalWaitForCallbackConfig = waitForCallbackConfig.stepConfig().serDes() == null
+                ? waitForCallbackConfig.toBuilder()
+                        .stepConfig(waitForCallbackConfig.stepConfig().toBuilder()
+                                .serDes(getDurableConfig().getSerDes())
+                                .build())
+                        .build()
+                : waitForCallbackConfig;
+
+        return runInChildContextAsync(
+                name,
+                resultType,
+                childCtx -> {
+                    var callback = childCtx.createCallback(
+                            name + WAIT_FOR_CALLBACK_CALLBACK_SUFFIX,
+                            resultType,
+                            finalWaitForCallbackConfig.callbackConfig());
+                    childCtx.step(
+                            name + WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX,
+                            Void.class,
+                            stepCtx -> {
+                                func.accept(callback.callbackId(), stepCtx);
+                                return null;
+                            },
+                            finalWaitForCallbackConfig.stepConfig());
+                    return callback.get();
+                },
+                RunInChildContextConfig.builder()
+                        .serDes(finalWaitForCallbackConfig.stepConfig().serDes())
+                        .build(),
+                OperationSubType.WAIT_FOR_CALLBACK);
+    }
+
+    @Override
+    public <T> DurableFuture<T> waitForConditionAsync(
+            String name,
+            TypeToken<T> resultType,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            WaitForConditionConfig<T> config) {
+        Objects.requireNonNull(config, "config cannot be null");
+        Objects.requireNonNull(resultType, "resultType cannot be null");
+        Objects.requireNonNull(checkFunc, "checkFunc cannot be null");
+        ParameterValidator.validateOperationName(name);
+
+        if (config.serDes() == null) {
+            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
+        }
+        var operationId = nextOperationId();
+
+        var operation = new WaitForConditionOperation<>(operationId, name, checkFunc, resultType, config, this);
+
+        operation.execute();
+
+        return operation;
+    }
+
+    // =============== accessors ================
+    @Override
+    public DurableLogger getLogger() {
+        // lazy initialize logger
+        if (logger == null) {
+            synchronized (this) {
+                if (logger == null) {
+                    logger = new DurableLogger(LoggerFactory.getLogger(DurableContext.class), this);
+                }
+            }
+        }
+        return logger;
+    }
+
+    /**
+     * Clears the logger's thread properties. Called during context destruction to prevent memory leaks and ensure clean
+     * state for subsequent executions.
+     */
+    @Override
+    public void close() {
+        if (logger != null) {
+            logger.close();
+        }
+    }
+
+    /**
+     * Get the next operationId. Returns a globally unique operation ID by hashing a sequential operation counter. For
+     * root contexts, the counter value is hashed directly (e.g. "1", "2", "3"). For child contexts, the values are
+     * prefixed with the parent hashed contextId (e.g. "<hash>-1", "<hash>-2" inside parent context <hash>). This
+     * matches the Python SDK's stepPrefix convention and prevents ID collisions in checkpoint batches.
+     */
+    private String nextOperationId() {
+        return operationIdGenerator.nextOperationId();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.html new file mode 100644 index 000000000..6c505bfb8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.html @@ -0,0 +1 @@ +StepContextImpl

StepContextImpl

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 46100%2 of 666%2701304
getLogger()24100%2250%230601
StepContextImpl(ExecutionManager, DurableConfig, Context, String, String, int)12100%n/a010301
close()7100%2100%020301
getAttempt()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.java.html new file mode 100644 index 000000000..ffa785ade --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.java.html @@ -0,0 +1,71 @@ +StepContextImpl.java

StepContextImpl.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.context;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.logging.DurableLogger;
+
+/**
+ * Context available inside a step operation's user function.
+ *
+ * <p>Provides access to the current retry attempt number and a logger that includes execution metadata. Extends
+ * {@link BaseContext} for thread lifecycle management.
+ */
+public class StepContextImpl extends BaseContextImpl implements StepContext {
+    private volatile DurableLogger logger;
+    private final int attempt;
+
+    /**
+     * Creates a new StepContext instance for use in step operations.
+     *
+     * @param executionManager Manages durable execution state and operations
+     * @param durableConfig Configuration for durable execution behavior
+     * @param lambdaContext AWS Lambda runtime context
+     * @param stepOperationId Unique identifier for this context instance that equals to step operation id
+     * @param stepOperationName the name of the step operation
+     * @param attempt the current retry attempt number (0-based)
+     */
+    protected StepContextImpl(
+            ExecutionManager executionManager,
+            DurableConfig durableConfig,
+            Context lambdaContext,
+            String stepOperationId,
+            String stepOperationName,
+            int attempt) {
+        super(executionManager, durableConfig, lambdaContext, stepOperationId, stepOperationName, ThreadType.STEP);
+        this.attempt = attempt;
+    }
+
+    /** Returns the current retry attempt number (0-based). */
+    @Override
+    public int getAttempt() {
+        return attempt;
+    }
+
+    @Override
+    public DurableLogger getLogger() {
+        // lazy initialize logger
+        if (logger == null) {
+            synchronized (this) {
+                if (logger == null) {
+                    logger = new DurableLogger(LoggerFactory.getLogger(StepContext.class), this);
+                }
+            }
+        }
+        return logger;
+    }
+
+    /** Closes the logger for this context. */
+    @Override
+    public void close() {
+        if (logger != null) {
+            logger.close();
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.html new file mode 100644 index 000000000..511cbeb2d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.context

software.amazon.lambda.durable.context

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 583100%6 of 2878%647015503303
DurableContextImpl485100%41881%431012402001
BaseContextImpl52100%n/a090180901
StepContextImpl46100%2466%270130401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.source.html new file mode 100644 index 000000000..bfd0f22a3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.context

software.amazon.lambda.durable.context

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 583100%6 of 2878%647015503303
DurableContextImpl.java485100%41881%431012402001
BaseContextImpl.java52100%n/a090180901
StepContextImpl.java46100%2466%270130401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.html new file mode 100644 index 000000000..5947a0d0e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.html @@ -0,0 +1 @@ +CallbackException

CallbackException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 23100%0 of 0n/a030603
CallbackException(Operation, String, Throwable)14100%n/a010301
CallbackException(Operation, String)6100%n/a010201
getCallbackId()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.java.html new file mode 100644 index 000000000..c896554c0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.java.html @@ -0,0 +1,25 @@ +CallbackException.java

CallbackException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a callback operation encounters an error. */
+public class CallbackException extends DurableOperationException {
+    private final String callbackId;
+
+    public CallbackException(Operation operation, String message) {
+        this(operation, message, null);
+    }
+
+    public CallbackException(Operation operation, String message, Throwable cause) {
+        super(operation, operation.callbackDetails().error(), message, cause);
+        this.callbackId = operation.callbackDetails().callbackId();
+    }
+
+    /** Returns the callback ID associated with this exception. */
+    public String getCallbackId() {
+        return callbackId;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.html new file mode 100644 index 000000000..caa04ddfd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.html @@ -0,0 +1 @@ +CallbackFailedException

CallbackFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 2592%2 of 450%241702
buildMessage(ErrorObject)21588%2250%231501
CallbackFailedException(Operation)8100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.java.html new file mode 100644 index 000000000..fe3695b1a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.java.html @@ -0,0 +1,24 @@ +CallbackFailedException.java

CallbackFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Exception thrown when a callback fails due to an error from the external system. */
+public class CallbackFailedException extends CallbackException {
+    public CallbackFailedException(Operation operation) {
+        super(operation, buildMessage(operation.callbackDetails().error()));
+    }
+
+    private static String buildMessage(ErrorObject error) {
+        var errorType = error.errorType();
+        var errorMessage = error.errorMessage();
+
+        if (errorType != null && !errorType.isEmpty()) {
+            return errorType + ": " + errorMessage;
+        }
+        return errorMessage;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.html new file mode 100644 index 000000000..a55d45afa --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.html @@ -0,0 +1 @@ +CallbackSubmitterException

CallbackSubmitterException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 7100%0 of 0n/a010201
CallbackSubmitterException(Operation, StepException)7100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.java.html new file mode 100644 index 000000000..f5f7663fa --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.java.html @@ -0,0 +1,13 @@ +CallbackSubmitterException.java

CallbackSubmitterException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Exception thrown when a callback submitter step fails to submit a callback. */
+public class CallbackSubmitterException extends CallbackException {
+    public CallbackSubmitterException(Operation callbackOp, StepException stepEx) {
+        super(callbackOp, stepEx.getMessage(), stepEx);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.html new file mode 100644 index 000000000..51f2ffb59 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.html @@ -0,0 +1 @@ +CallbackTimeoutException

CallbackTimeoutException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 8100%0 of 0n/a010201
CallbackTimeoutException(Operation)8100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.java.html new file mode 100644 index 000000000..896b1280a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.java.html @@ -0,0 +1,13 @@ +CallbackTimeoutException.java

CallbackTimeoutException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Exception thrown when a callback times out. */
+public class CallbackTimeoutException extends CallbackException {
+    public CallbackTimeoutException(Operation operation) {
+        super(operation, "Callback timed out: " + operation.callbackDetails().callbackId());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.html new file mode 100644 index 000000000..7d966b8c1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.html @@ -0,0 +1 @@ +ChildContextFailedException

ChildContextFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 3791%2 of 450%251703
formatMessage(ErrorObject)21789%1150%121401
getError(Operation)1888%1150%120101
ChildContextFailedException(Operation)9100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.java.html new file mode 100644 index 000000000..2b6cc9f7d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.java.html @@ -0,0 +1,27 @@ +ChildContextFailedException.java

ChildContextFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Exception thrown when a child context fails and the original exception cannot be reconstructed. */
+public class ChildContextFailedException extends DurableOperationException {
+    public ChildContextFailedException(Operation operation) {
+        super(operation, getError(operation), formatMessage(getError(operation)));
+    }
+
+    private static ErrorObject getError(Operation operation) {
+        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
+    }
+
+    private static String formatMessage(ErrorObject errorObject) {
+        if (errorObject == null) {
+            return "Child context failed without an error";
+        }
+        return String.format(
+                "Child context failed with error of type %s. Message: %s",
+                errorObject.errorType(), errorObject.errorMessage());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.html new file mode 100644 index 000000000..92f5da3d5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.html @@ -0,0 +1 @@ +DurableExecutionException

DurableExecutionException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 22100%0 of 2100%040803
DurableExecutionException(String, Throwable, StackTraceElement[])10100%2100%020401
DurableExecutionException(String, Throwable)6100%n/a010201
DurableExecutionException(String)6100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.java.html new file mode 100644 index 000000000..a0bbb7e46 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.java.html @@ -0,0 +1,22 @@ +DurableExecutionException.java

DurableExecutionException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+/** Base exception for all durable execution errors. */
+public class DurableExecutionException extends RuntimeException {
+    public DurableExecutionException(String message, Throwable cause, StackTraceElement[] stackTrace) {
+        super(message, cause);
+        if (stackTrace != null) {
+            this.setStackTrace(stackTrace);
+        }
+    }
+
+    public DurableExecutionException(String message, Throwable cause) {
+        this(message, cause, null);
+    }
+
+    public DurableExecutionException(String message) {
+        this(message, null, null);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.html new file mode 100644 index 000000000..504290435 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.html @@ -0,0 +1 @@ +DurableOperationException

DurableOperationException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 58100%0 of 4100%01001508
DurableOperationException(Operation, ErrorObject, String, Throwable)14100%2100%020301
DurableOperationException(Operation, ErrorObject, String, StackTraceElement[], Throwable)12100%n/a010401
DurableOperationException(Operation, ErrorObject)11100%2100%020201
DurableOperationException(Operation, ErrorObject, String)7100%n/a010201
getOperationStatus()4100%n/a010101
getOperationId()4100%n/a010101
getErrorObject()3100%n/a010101
getOperation()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.java.html new file mode 100644 index 000000000..c648e91b4 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.java.html @@ -0,0 +1,64 @@ +DurableOperationException.java

DurableOperationException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/** Exception associated with a specific durable operation, carrying the operation and error details. */
+public class DurableOperationException extends DurableExecutionException {
+    private final Operation operation;
+    private final ErrorObject errorObject;
+
+    public DurableOperationException(Operation operation, ErrorObject errorObject) {
+        this(operation, errorObject, errorObject != null ? errorObject.errorMessage() : null);
+    }
+
+    public DurableOperationException(Operation operation, ErrorObject errorObject, String errorMessage) {
+        this(operation, errorObject, errorMessage, null);
+    }
+
+    public DurableOperationException(
+            Operation operation, ErrorObject errorObject, String errorMessage, Throwable cause) {
+        this(
+                operation,
+                errorObject,
+                errorMessage,
+                errorObject != null ? ExceptionHelper.deserializeStackTrace(errorObject.stackTrace()) : null,
+                cause);
+    }
+
+    public DurableOperationException(
+            Operation operation,
+            ErrorObject errorObject,
+            String errorMessage,
+            StackTraceElement[] stackTrace,
+            Throwable cause) {
+        super(errorMessage, cause, stackTrace);
+        this.operation = operation;
+        this.errorObject = errorObject;
+    }
+
+    /** Returns the error details from the failed operation. */
+    public ErrorObject getErrorObject() {
+        return errorObject;
+    }
+
+    /** Returns the operation that caused this exception. */
+    public Operation getOperation() {
+        return operation;
+    }
+
+    /** Returns the status of the operation that caused this exception. */
+    public OperationStatus getOperationStatus() {
+        return operation.status();
+    }
+
+    /** Returns the ID of the operation that caused this exception. */
+    public String getOperationId() {
+        return operation.id();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.html new file mode 100644 index 000000000..b0aa41144 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.html @@ -0,0 +1 @@ +IllegalDurableOperationException

IllegalDurableOperationException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 11100%0 of 0n/a010501
IllegalDurableOperationException(String)11100%n/a010501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.java.html new file mode 100644 index 000000000..8f42ef73e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.java.html @@ -0,0 +1,16 @@ +IllegalDurableOperationException.java

IllegalDurableOperationException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+
+/** An illegal operation is detected. The execution will be immediately terminated. */
+public class IllegalDurableOperationException extends UnrecoverableDurableExecutionException {
+    public IllegalDurableOperationException(String message) {
+        super(ErrorObject.builder()
+                .errorType(IllegalDurableOperationException.class.getName())
+                .errorMessage(message)
+                .build());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.html new file mode 100644 index 000000000..ea89940aa --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.html @@ -0,0 +1 @@ +InvokeException

InvokeException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total1 of 1291%1 of 250%121501
InvokeException(Operation)11191%1150%121501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.java.html new file mode 100644 index 000000000..39d932917 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.java.html @@ -0,0 +1,17 @@ +InvokeException.java

InvokeException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Base exception for chained invoke operation failures. */
+public class InvokeException extends DurableOperationException {
+    public InvokeException(Operation operation) {
+        super(
+                operation,
+                operation.chainedInvokeDetails() != null
+                        ? operation.chainedInvokeDetails().error()
+                        : null);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.html new file mode 100644 index 000000000..f4707b7f3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.html @@ -0,0 +1 @@ +InvokeFailedException

InvokeFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010201
InvokeFailedException(Operation)4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.java.html new file mode 100644 index 000000000..8188ce5e0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.java.html @@ -0,0 +1,14 @@ +InvokeFailedException.java

InvokeFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a chained invoke operation fails with an error in the invoked function. */
+public class InvokeFailedException extends InvokeException {
+
+    public InvokeFailedException(Operation operation) {
+        super(operation);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.html new file mode 100644 index 000000000..fe357c82d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.html @@ -0,0 +1 @@ +InvokeStoppedException

InvokeStoppedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010201
InvokeStoppedException(Operation)4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.java.html new file mode 100644 index 000000000..dd474c3cc --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.java.html @@ -0,0 +1,14 @@ +InvokeStoppedException.java

InvokeStoppedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a chained invoke operation is stopped before completion. */
+public class InvokeStoppedException extends InvokeException {
+
+    public InvokeStoppedException(Operation operation) {
+        super(operation);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.html new file mode 100644 index 000000000..58c64b80b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.html @@ -0,0 +1 @@ +InvokeTimedOutException

InvokeTimedOutException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010201
InvokeTimedOutException(Operation)4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.java.html new file mode 100644 index 000000000..d1001a713 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.java.html @@ -0,0 +1,14 @@ +InvokeTimedOutException.java

InvokeTimedOutException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a chained invoke operation exceeds its timeout. */
+public class InvokeTimedOutException extends InvokeException {
+
+    public InvokeTimedOutException(Operation operation) {
+        super(operation);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.html new file mode 100644 index 000000000..9fff2ae44 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.html @@ -0,0 +1 @@ +MapIterationFailedException

MapIterationFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 3791%2 of 450%251703
formatMessage(ErrorObject)21789%1150%121401
getError(Operation)1888%1150%120101
MapIterationFailedException(Operation)9100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.java.html new file mode 100644 index 000000000..cd2348620 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.java.html @@ -0,0 +1,27 @@ +MapIterationFailedException.java

MapIterationFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a map iteration fails and deserialization of the original exception also fails. */
+public class MapIterationFailedException extends DurableOperationException {
+    public MapIterationFailedException(Operation operation) {
+        super(operation, getError(operation), formatMessage(getError(operation)));
+    }
+
+    private static ErrorObject getError(Operation operation) {
+        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
+    }
+
+    private static String formatMessage(ErrorObject errorObject) {
+        if (errorObject == null) {
+            return "Map iteration failed without an error";
+        }
+        return String.format(
+                "Map iteration failed with error of type %s. Message: %s",
+                errorObject.errorType(), errorObject.errorMessage());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.html new file mode 100644 index 000000000..c8224ee10 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.html @@ -0,0 +1 @@ +NonDeterministicExecutionException

NonDeterministicExecutionException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 11100%0 of 0n/a010501
NonDeterministicExecutionException(String)11100%n/a010501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.java.html new file mode 100644 index 000000000..1e3cf9c07 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.java.html @@ -0,0 +1,19 @@ +NonDeterministicExecutionException.java

NonDeterministicExecutionException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+
+/**
+ * Exception thrown when non-deterministic code is detected during replay. This indicates that the workflow code has
+ * changed in a way that violates determinism requirements between the original execution and replay.
+ */
+public class NonDeterministicExecutionException extends UnrecoverableDurableExecutionException {
+    public NonDeterministicExecutionException(String message) {
+        super(ErrorObject.builder()
+                .errorMessage(message)
+                .errorType(NonDeterministicExecutionException.class.getName())
+                .build());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.html new file mode 100644 index 000000000..58c2ecb2d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.html @@ -0,0 +1 @@ +ParallelBranchFailedException

ParallelBranchFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 37100%0 of 4100%050703
formatMessage(ErrorObject)19100%2100%020401
ParallelBranchFailedException(Operation)9100%n/a010201
getError(Operation)9100%2100%020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.java.html new file mode 100644 index 000000000..0b6880993 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.java.html @@ -0,0 +1,27 @@ +ParallelBranchFailedException.java

ParallelBranchFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a parallel branch fails and deserialization of the original exception also fails. */
+public class ParallelBranchFailedException extends DurableOperationException {
+    public ParallelBranchFailedException(Operation operation) {
+        super(operation, getError(operation), formatMessage(getError(operation)));
+    }
+
+    private static ErrorObject getError(Operation operation) {
+        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
+    }
+
+    private static String formatMessage(ErrorObject errorObject) {
+        if (errorObject == null) {
+            return "Parallel branch failed without an error";
+        }
+        return String.format(
+                "Parallel branch failed with error of type %s. Message: %s",
+                errorObject.errorType(), errorObject.errorMessage());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.html new file mode 100644 index 000000000..aa2dd7a38 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.html @@ -0,0 +1 @@ +SerDesException

SerDesException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020402
SerDesException(String, Throwable)5100%n/a010201
SerDesException(String)4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.java.html new file mode 100644 index 000000000..9388c265f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.java.html @@ -0,0 +1,15 @@ +SerDesException.java

SerDesException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+/** Exception thrown when serialization or deserialization fails. */
+public class SerDesException extends DurableExecutionException {
+    public SerDesException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public SerDesException(String message) {
+        super(message);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.html new file mode 100644 index 000000000..275949d8b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.html @@ -0,0 +1 @@ +StepException

StepException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 6100%0 of 0n/a010201
StepException(Operation, ErrorObject, String)6100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.java.html new file mode 100644 index 000000000..78130d237 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.java.html @@ -0,0 +1,14 @@ +StepException.java

StepException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Base exception for step operation failures. */
+public class StepException extends DurableOperationException {
+    public StepException(Operation operation, ErrorObject errorObject, String errorMessage) {
+        super(operation, errorObject, errorMessage);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.html new file mode 100644 index 000000000..a121987dd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.html @@ -0,0 +1 @@ +StepFailedException

StepFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 30100%0 of 2100%030802
formatMessage(ErrorObject)19100%2100%020401
StepFailedException(Operation)11100%n/a010401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.java.html new file mode 100644 index 000000000..b00f3e09e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.java.html @@ -0,0 +1,25 @@ +StepFailedException.java

StepFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Thrown when a step operation fails after exhausting all retry attempts. */
+public class StepFailedException extends StepException {
+    public StepFailedException(Operation operation) {
+        super(
+                operation,
+                operation.stepDetails().error(),
+                formatMessage(operation.stepDetails().error()));
+    }
+
+    private static String formatMessage(ErrorObject errorObject) {
+        if (errorObject == null) {
+            return "Step failed without an error";
+        }
+        return String.format(
+                "Step failed with error of type %s. Message: %s", errorObject.errorType(), errorObject.errorMessage());
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.html new file mode 100644 index 000000000..a6f0ea95d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.html @@ -0,0 +1 @@ +StepInterruptedException

StepInterruptedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 51100%1 of 475%1601304
formatMessage(Operation)27100%1150%120501
isStepInterruptedException(ErrorObject)10100%2100%020301
StepInterruptedException(Operation)7100%n/a010201
toErrorObject()7100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.java.html new file mode 100644 index 000000000..667fb1eed --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.java.html @@ -0,0 +1,37 @@ +StepInterruptedException.java

StepInterruptedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/** Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion. */
+public class StepInterruptedException extends StepException {
+    public StepInterruptedException(Operation operation) {
+        super(operation, toErrorObject(), formatMessage(operation));
+    }
+
+    public static boolean isStepInterruptedException(ErrorObject errorObject) {
+        if (errorObject == null) {
+            return false;
+        }
+        return StepInterruptedException.toErrorObject().errorType().equals(errorObject.errorType());
+    }
+
+    private static ErrorObject toErrorObject() {
+        return ErrorObject.builder()
+                .errorType(StepInterruptedException.class.getName())
+                .build();
+    }
+
+    private static String formatMessage(Operation operation) {
+        var message = String.format(
+                "The step execution was initiated but failed to reach completion due to an interruption. Operation ID: %s",
+                operation.id());
+        if (operation.name() != null) {
+            message += String.format(", Step Name: %s", operation.name());
+        }
+        return message;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.html new file mode 100644 index 000000000..824a5cb4f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.html @@ -0,0 +1 @@ +UnrecoverableDurableExecutionException

UnrecoverableDurableExecutionException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 11100%0 of 0n/a020402
UnrecoverableDurableExecutionException(ErrorObject)8100%n/a010301
getErrorObject()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.java.html new file mode 100644 index 000000000..8d9a1de45 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.java.html @@ -0,0 +1,21 @@ +UnrecoverableDurableExecutionException.java

UnrecoverableDurableExecutionException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+
+/** Exception thrown when the execution is not recoverable. The durable execution will be immediately terminated. */
+public class UnrecoverableDurableExecutionException extends DurableExecutionException {
+    private final ErrorObject errorObject;
+
+    public UnrecoverableDurableExecutionException(ErrorObject errorObject) {
+        super(errorObject.errorMessage());
+        this.errorObject = errorObject;
+    }
+
+    /** Returns the error details for this unrecoverable exception. */
+    public ErrorObject getErrorObject() {
+        return errorObject;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.html new file mode 100644 index 000000000..1e498b95d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.html @@ -0,0 +1 @@ +WaitForConditionFailedException

WaitForConditionFailedException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total1 of 1894%1 of 250%130502
WaitForConditionFailedException(Operation)11191%1150%120301
WaitForConditionFailedException(String)6100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.java.html new file mode 100644 index 000000000..f1d7055b6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.java.html @@ -0,0 +1,25 @@ +WaitForConditionFailedException.java

WaitForConditionFailedException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.exception;
+
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/**
+ * Exception thrown when a {@code waitForCondition} operation fails.
+ *
+ * <p>This can occur when the maximum number of polling attempts is exceeded, or when the check function throws an
+ * error.
+ */
+public class WaitForConditionFailedException extends DurableOperationException {
+
+    public WaitForConditionFailedException(String message) {
+        super(null, null, message);
+    }
+
+    public WaitForConditionFailedException(Operation operation) {
+        super(
+                operation,
+                operation.stepDetails() != null ? operation.stepDetails().error() : null);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.html new file mode 100644 index 000000000..b95a924d1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.exception

software.amazon.lambda.durable.exception

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total10 of 42597%9 of 3271%9624118046021
MapIterationFailedException33491%2250%25170301
ChildContextFailedException33491%2250%25170301
CallbackFailedException22392%2250%24170201
WaitForConditionFailedException11794%1150%13050201
InvokeException11191%1150%12150101
DurableOperationException58100%4100%0100150801
StepInterruptedException51100%1375%160130401
ParallelBranchFailedException37100%4100%05070301
StepFailedException30100%2100%03080201
CallbackException23100%n/a03060301
DurableExecutionException22100%2100%04080301
IllegalDurableOperationException11100%n/a01050101
UnrecoverableDurableExecutionException11100%n/a02040201
NonDeterministicExecutionException11100%n/a01050101
SerDesException9100%n/a02040201
CallbackTimeoutException8100%n/a01020101
CallbackSubmitterException7100%n/a01020101
StepException6100%n/a01020101
InvokeStoppedException4100%n/a01020101
InvokeTimedOutException4100%n/a01020101
InvokeFailedException4100%n/a01020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.source.html new file mode 100644 index 000000000..257110c9e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.exception

software.amazon.lambda.durable.exception

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total10 of 42597%9 of 3271%9624118046021
ChildContextFailedException.java33491%2250%25170301
MapIterationFailedException.java33491%2250%25170301
CallbackFailedException.java22392%2250%24170201
WaitForConditionFailedException.java11794%1150%13050201
InvokeException.java11191%1150%12150101
DurableOperationException.java58100%4100%0100150801
StepInterruptedException.java51100%1375%160130401
ParallelBranchFailedException.java37100%4100%05070301
StepFailedException.java30100%2100%03080201
CallbackException.java23100%n/a03060301
DurableExecutionException.java22100%2100%04080301
NonDeterministicExecutionException.java11100%n/a01050101
IllegalDurableOperationException.java11100%n/a01050101
UnrecoverableDurableExecutionException.java11100%n/a02040201
SerDesException.java9100%n/a02040201
CallbackTimeoutException.java8100%n/a01020101
CallbackSubmitterException.java7100%n/a01020101
StepException.java6100%n/a01020101
InvokeTimedOutException.java4100%n/a01020101
InvokeStoppedException.java4100%n/a01020101
InvokeFailedException.java4100%n/a01020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher$Item.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher$Item.html new file mode 100644 index 000000000..d3bb75896 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher$Item.html @@ -0,0 +1 @@ +ApiRequestDelayedBatcher.Item

ApiRequestDelayedBatcher.Item

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ApiRequestDelayedBatcher.Item(Object, CompletableFuture)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.html new file mode 100644 index 000000000..d0d7fe91b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.html @@ -0,0 +1 @@ +ApiRequestDelayedBatcher

ApiRequestDelayedBatcher

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 269100%1 of 2295%11907008
flushQueue()115100%11794%11002901
submit(Object, Duration)44100%2100%020901
ApiRequestDelayedBatcher(int, int, Function, Consumer)32100%n/a0101001
flushDelayedBatch()22100%2100%020601
initializeDelayedBatch()21100%n/a010501
shutdown()20100%n/a010601
lambda$initializeDelayedBatch$0()11100%n/a010401
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.java.html new file mode 100644 index 000000000..474e6d14c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.java.html @@ -0,0 +1,197 @@ +ApiRequestDelayedBatcher.java

ApiRequestDelayedBatcher.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+/**
+ * Batches API requests to optimize throughput by grouping individual calls into batch operations. Batches are flushed
+ * when full, when size limits are reached, or after a timeout.
+ *
+ * <p>Uses a dedicated SDK thread pool for internal coordination, keeping checkpoint processing separate from
+ * customer-configured executors used for user-defined operations.
+ *
+ * @see InternalExecutor
+ * @param <T> Request type
+ */
+public class ApiRequestDelayedBatcher<T> {
+    private static final Duration MAX_DELAY = Duration.ofMinutes(60);
+
+    /** Maximum items allowed in a single batch */
+    private final int maxItemCount;
+    /** Maximum bytes allowed in a single batch */
+    private final int maxBatchBytes;
+    /** Calculates byte size of each request */
+    private final Function<T, Integer> calculateItemSize;
+    /** Executes the batch operation */
+    private final Consumer<List<T>> executeBatch;
+
+    /** Accumulated requests to be executed in future */
+    private final List<Item<T>> delayedBatch;
+
+    /** Time when the current batch must be flushed */
+    private long delayedBatchFlushTime;
+
+    /** Timer to auto-flush current batch */
+    private CompletableFuture<Void> delayedBatchFlushTimer;
+
+    /** Requests to be flushed */
+    private final ConcurrentLinkedQueue<Item<T>> flushingQueue;
+
+    /** Future of flushing items in queue */
+    private CompletableFuture<Void> flushingQueueFuture;
+
+    private record Item<T>(T request, CompletableFuture<Void> result) {}
+
+    /**
+     * Creates a new ApiRequestDelayedBatcher with the specified configuration.
+     *
+     * @param maxItemCount Maximum number of items per batch
+     * @param maxBatchBytes Maximum total size in bytes for all items in a batch
+     * @param calculateItemSize Function to calculate the size in bytes of each item
+     * @param executeBatch Function to execute the batch action
+     */
+    public ApiRequestDelayedBatcher(
+            int maxItemCount,
+            int maxBatchBytes,
+            Function<T, Integer> calculateItemSize,
+            Consumer<List<T>> executeBatch) {
+        this.maxItemCount = maxItemCount;
+        this.maxBatchBytes = maxBatchBytes;
+        this.calculateItemSize = calculateItemSize;
+        this.executeBatch = executeBatch;
+
+        this.flushingQueueFuture = CompletableFuture.allOf();
+        this.flushingQueue = new ConcurrentLinkedQueue<>();
+        this.delayedBatch = new ArrayList<>();
+
+        initializeDelayedBatch();
+    }
+
+    /**
+     * Submits request for delayed execution.
+     *
+     * @param request Request to batch
+     * @param flushDelay maximum delay of processing the request
+     * @return Future completed when batch executes
+     */
+    CompletableFuture<Void> submit(T request, Duration flushDelay) {
+        synchronized (delayedBatch) {
+            // add the request to the current batch
+            CompletableFuture<Void> future = new CompletableFuture<>();
+            delayedBatch.add(new Item<>(request, future));
+
+            // The flush time of the current batch is determined by the earliest flush time in the batch.
+            var delayInNano = flushDelay.toNanos();
+            long newFlushTime = System.nanoTime() + delayInNano;
+            if (newFlushTime < delayedBatchFlushTime) {
+                // Schedule a new timer if the batch needs to be completed earlier than previously scheduled
+                delayedBatchFlushTime = newFlushTime;
+                delayedBatchFlushTimer.completeOnTimeout(null, delayInNano, TimeUnit.NANOSECONDS);
+            }
+
+            return future;
+        }
+    }
+
+    /** Flushes pending batch and waits for completion */
+    void shutdown() {
+        synchronized (delayedBatch) {
+            // cancel the flush timer if it has not been triggered
+            this.delayedBatchFlushTimer.cancel(false);
+            // execute the current batch now
+            flushDelayedBatch();
+        }
+
+        // wait for previous batches to be flushed
+        flushingQueueFuture.join();
+    }
+
+    /** clear the current batch and creates a new batch */
+    private void initializeDelayedBatch() {
+        this.delayedBatch.clear();
+        // MAX_DELAY is longer than a single Lambda invocation
+        this.delayedBatchFlushTime = System.nanoTime() + MAX_DELAY.toNanos();
+
+        // the timer future is created initially without a timeout until an item is added to the batch
+        this.delayedBatchFlushTimer = new CompletableFuture<>();
+        this.delayedBatchFlushTimer.thenRun(() -> {
+            synchronized (delayedBatch) {
+                flushDelayedBatch();
+            }
+        });
+    }
+
+    /** Add the delayed batch to the flushing queue */
+    private void flushDelayedBatch() {
+        // All the items in the delayed batch are flushed altogether, no matter if the scheduled time for the item has
+        // arrived or not
+        flushingQueue.addAll(delayedBatch);
+        initializeDelayedBatch();
+
+        if (flushingQueue.isEmpty()) {
+            return;
+        }
+
+        // Schedule a new flushing future. If the items in this batch have been executed by the previous flushQueue
+        // future,
+        // the new future will just do nothing.
+        flushingQueueFuture = flushingQueueFuture.thenRunAsync(this::flushQueue, InternalExecutor.INSTANCE);
+    }
+    /** Call checkpoint API with items in the flushing queue */
+    private void flushQueue() {
+        // There could be more items to flush because
+        // - remaining items that didn't fit in the previous checkpoint call
+        // - new items being added when processing the previous items
+        // This allows the items being added when making the checkpoint request to be immediately processed
+        while (flushingQueue.peek() != null) {
+            var flushingSize = 0L;
+            var flushingItems = new ArrayList<Item<T>>();
+            while (true) {
+                var item = flushingQueue.peek();
+                if (item == null) {
+                    break;
+                }
+
+                var itemSizeInByte = calculateItemSize.apply(item.request);
+                var canFit = flushingSize + itemSizeInByte <= maxBatchBytes;
+
+                // Add the item if
+                // - it can fit in one checkpoint call, or
+                // - flushingItems is empty, so that we can try the big item even if it's bigger than the max batch size
+                if (!flushingItems.isEmpty() && (!canFit || flushingItems.size() >= maxItemCount)) {
+                    break;
+                }
+
+                flushingItems.add(flushingQueue.poll());
+                flushingSize += itemSizeInByte;
+            }
+            if (!flushingItems.isEmpty()) {
+                try {
+                    // requests might be null for polling requests
+                    var requests = flushingItems.stream()
+                            .map(Item::request)
+                            .filter(Objects::nonNull)
+                            .toList();
+                    executeBatch.accept(requests);
+                    for (Item<T> item : flushingItems) {
+                        item.result().complete(null);
+                    }
+                } catch (Throwable ex) {
+                    for (Item<T> item : flushingItems) {
+                        item.result().completeExceptionally(ex);
+                    }
+                }
+            }
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.html new file mode 100644 index 000000000..a5054c8b9 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.html @@ -0,0 +1 @@ +CheckpointManager

CheckpointManager

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 419100%1 of 2896%129089015
checkpointBatch(List)134100%10100%0602801
fetchAllPages(CheckpointUpdatedExecutionState)55100%1787%1501601
shutdown()36100%2100%020901
pollForUpdate(String, PollingStrategy)34100%n/a010901
lambda$pollForUpdateInternal$1(CompletableFuture, Instant, PollingStrategy, int, Void)32100%4100%030601
CheckpointManager(DurableConfig, String, String, Consumer)30100%n/a010801
estimateSize(OperationUpdate)29100%4100%030601
pollForUpdateInternal(CompletableFuture, int, Instant, PollingStrategy)21100%n/a010201
checkpoint(OperationUpdate)13100%n/a010201
lambda$shutdown$2(CompletableFuture)8100%n/a010101
pollForUpdate(String)7100%n/a010101
pollForUpdate(String, Instant)6100%n/a010101
lambda$checkpointBatch$3(Operation, CompletableFuture)5100%n/a010101
lambda$pollForUpdate$0(String)5100%n/a010101
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.java.html new file mode 100644 index 000000000..d423d453b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.java.html @@ -0,0 +1,234 @@ +CheckpointManager.java

CheckpointManager.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Consumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.retry.PollingStrategies;
+import software.amazon.lambda.durable.retry.PollingStrategy;
+
+/**
+ * Package-private checkpoint manager for batching and queueing checkpoint API calls.
+ *
+ * <p>Single responsibility: Queue and batch checkpoint requests efficiently. Uses a Consumer to notify when checkpoints
+ * complete, avoiding cyclic dependency.
+ */
+class CheckpointManager {
+    private static final int MAX_BATCH_SIZE_BYTES = 750 * 1024; // 750KB
+    private static final int MAX_ITEM_COUNT = 200; // max updates in one batch
+    private static final int FIRST_ATTEMPT = 1;
+    private static final Logger logger = LoggerFactory.getLogger(CheckpointManager.class);
+
+    private final Consumer<List<Operation>> callback;
+    private final String durableExecutionArn;
+    private final Map<String, List<CompletableFuture<Operation>>> pollingFutures = new ConcurrentHashMap<>();
+    private final ApiRequestDelayedBatcher<OperationUpdate> checkpointApiRequestDelayedBatcher;
+    private final DurableConfig config;
+    private String checkpointToken;
+
+    CheckpointManager(
+            DurableConfig config,
+            String durableExecutionArn,
+            String checkpointToken,
+            Consumer<List<Operation>> callback) {
+        this.config = config;
+        this.durableExecutionArn = durableExecutionArn;
+        this.callback = callback;
+        this.checkpointToken = checkpointToken;
+        this.checkpointApiRequestDelayedBatcher = new ApiRequestDelayedBatcher<>(
+                MAX_ITEM_COUNT, MAX_BATCH_SIZE_BYTES, CheckpointManager::estimateSize, this::checkpointBatch);
+    }
+
+    /**
+     * Queues a checkpoint request for batched execution
+     *
+     * @return a future that completes when the checkpoint request is executed
+     */
+    CompletableFuture<Void> checkpoint(OperationUpdate update) {
+        logger.debug("Checkpoint request received: Action {}", update.action());
+        return checkpointApiRequestDelayedBatcher.submit(update, config.getCheckpointDelay());
+    }
+
+    /**
+     * Polls for updates of the specified operation with preconfigured intervals
+     *
+     * @return a future that completes when the operation is updated
+     */
+    CompletableFuture<Operation> pollForUpdate(String operationId) {
+        return pollForUpdate(operationId, config.getPollingStrategy());
+    }
+
+    /**
+     * Polls for updates of the specified operation at the specified time. If the give time is at the past, SDK will
+     * immediately make a polling call.
+     *
+     * @param at the time to poll for the update
+     * @return a future that completes when the operation is updated
+     */
+    CompletableFuture<Operation> pollForUpdate(String operationId, Instant at) {
+        return pollForUpdate(operationId, PollingStrategies.at(at));
+    }
+
+    /**
+     * Polls for updates of the specified operation with specified polling strategy
+     *
+     * @return a future that completes when the operation is updated
+     */
+    CompletableFuture<Operation> pollForUpdate(String operationId, PollingStrategy pollingStrategy) {
+        logger.debug("Polling request received: operation id {}", operationId);
+        var future = new CompletableFuture<Operation>();
+        synchronized (pollingFutures) {
+            // register the future in pollingFutures, which will be completed by the polling thread
+            pollingFutures
+                    .computeIfAbsent(operationId, k -> Collections.synchronizedList(new ArrayList<>()))
+                    .add(future);
+        }
+        pollForUpdateInternal(future, FIRST_ATTEMPT, Instant.now(), pollingStrategy);
+        return future;
+    }
+
+    /**
+     * Recursively polls for updates of the specified operation with specified polling strategy
+     *
+     * @param future the future to complete
+     * @param attempt the attempt number
+     * @param startTime the start time of the current attempt
+     * @param pollingStrategy the polling strategy
+     * @return a completable future that completes when the polling is done
+     */
+    private CompletableFuture<Void> pollForUpdateInternal(
+            CompletableFuture<Operation> future, int attempt, Instant startTime, PollingStrategy pollingStrategy) {
+
+        // the delay is the polling interval minus the time already elapsed in the current attempt
+        var delay = pollingStrategy.computeDelay(attempt).minus(Duration.between(startTime, Instant.now()));
+        return checkpointApiRequestDelayedBatcher.submit(null, delay).thenCompose(v -> {
+            if (future.isDone()) {
+                return CompletableFuture.completedFuture(null);
+            }
+            var now = Instant.now();
+            if (Duration.between(startTime, now).compareTo(pollingStrategy.computeDelay(attempt)) > 0) {
+                // It has exceeded the previous attempt duration, starting a new attempt
+                return pollForUpdateInternal(future, attempt + 1, now, pollingStrategy);
+            } else {
+                // continue the previous attempt. The future was completed just because
+                // it was batched with other checkpoint API calls.
+                return pollForUpdateInternal(future, attempt, startTime, pollingStrategy);
+            }
+        });
+    }
+
+    /** Cancels all polling futures and waits for all pending checkpoint requests to complete */
+    void shutdown() {
+        // complete all polling futures with an exception
+        List<List<CompletableFuture<Operation>>> allFutures;
+        synchronized (pollingFutures) {
+            allFutures = new ArrayList<>(pollingFutures.values());
+            pollingFutures.clear();
+        }
+
+        for (var futures : allFutures) {
+            futures.forEach(f -> f.completeExceptionally(new IllegalStateException("CheckpointManager shutdown")));
+        }
+
+        // wait for all non-polling checkpoint requests to complete
+        checkpointApiRequestDelayedBatcher.shutdown();
+    }
+
+    /**
+     * Calling GetExecutionState API to get all pages of operations given CheckpointUpdatedExecutionState(operations,
+     * nextMarker)
+     */
+    List<Operation> fetchAllPages(CheckpointUpdatedExecutionState checkpointUpdatedExecutionState) {
+        List<Operation> operations = new ArrayList<>();
+        if (checkpointUpdatedExecutionState == null) {
+            return operations;
+        }
+        if (checkpointUpdatedExecutionState.operations() != null) {
+            operations.addAll(checkpointUpdatedExecutionState.operations());
+        }
+        var nextMarker = checkpointUpdatedExecutionState.nextMarker();
+        while (nextMarker != null && !nextMarker.isEmpty()) {
+            var startTime = System.nanoTime();
+            var response = config.getDurableExecutionClient()
+                    .getExecutionState(durableExecutionArn, checkpointToken, nextMarker);
+            logger.debug(
+                    "Durable getExecutionState API called (latency={}ns): {}.",
+                    System.nanoTime() - startTime,
+                    response);
+            operations.addAll(response.operations());
+            nextMarker = response.nextMarker();
+        }
+        return operations;
+    }
+
+    private void checkpointBatch(List<OperationUpdate> updates) {
+        synchronized (pollingFutures) {
+            // filter the null values from pollers
+            var request = updates.stream().filter(Objects::nonNull).toList();
+
+            if (pollingFutures.isEmpty() && request.isEmpty()) {
+                // ignore the batch if no pollers and no data to checkpoint
+                return;
+            }
+
+            var startTime = System.nanoTime();
+            logger.debug("Calling durable checkpoint API with {} updates: {}", updates.size(), request);
+            var response = config.getDurableExecutionClient().checkpoint(durableExecutionArn, checkpointToken, request);
+            logger.debug("Durable checkpoint API called (latency={}ns): {}.", System.nanoTime() - startTime, response);
+
+            // Notify callback of completion
+            checkpointToken = response.checkpointToken();
+            if (response.newExecutionState() != null) {
+                // fetch all pages of operations
+                var operations = fetchAllPages(response.newExecutionState());
+
+                var processStartTime = System.nanoTime();
+                int completedFutures = 0;
+                logger.debug(
+                        "Processing {} operations. ({} pending pollers)", operations.size(), pollingFutures.size());
+                // call the callback
+                callback.accept(operations);
+
+                // complete the registered pollingFutures
+                for (var operation : operations) {
+                    var pollers = pollingFutures.remove(operation.id());
+                    if (pollers != null) {
+                        completedFutures += pollers.size();
+                        pollers.forEach(poller -> poller.complete(operation));
+                    }
+                }
+                logger.debug(
+                        "{} operations processed and {} pollers completed (latency={}ns). ",
+                        operations.size(),
+                        completedFutures,
+                        System.nanoTime() - processStartTime);
+            }
+        }
+    }
+
+    private static int estimateSize(OperationUpdate update) {
+        if (update == null) {
+            return 0;
+        }
+        return update.id().length()
+                + update.type().toString().length()
+                + update.action().toString().length()
+                + (update.payload() != null ? update.payload().length() : 0)
+                + 100;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.html new file mode 100644 index 000000000..21d08a587 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.html @@ -0,0 +1 @@ +DurableExecutor

DurableExecutor

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total1 of 19199%1 of 1492%11605109
handleLargePayload(ExecutionManager, String)14297%1375%1301601
lambda$execute$1(DurableConfig, ExecutionManager, Object, Throwable)34100%4100%030901
execute(DurableExecutionInput, Context, TypeToken, BiFunction, DurableConfig)31100%n/a010801
lambda$execute$0(ExecutionManager, DurableConfig, TypeToken, Context, BiFunction)26100%n/a010601
buildErrorObject(Throwable, SerDes)22100%4100%030501
extractUserInput(Operation, SerDes, TypeToken)17100%2100%020401
lambda$wrap$2(TypeToken, BiFunction, DurableConfig, DurableExecutionInput, Context)7100%n/a010101
static {...}6100%n/a010201
wrap(TypeToken, BiFunction, DurableConfig)5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.java.html new file mode 100644 index 000000000..08d2e1659 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.java.html @@ -0,0 +1,156 @@ +DurableExecutor.java

DurableExecutor.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.BiFunction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.DurableOperationException;
+import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.model.DurableExecutionInput;
+import software.amazon.lambda.durable.model.DurableExecutionOutput;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Orchestrates the lifecycle of a durable execution.
+ *
+ * <p>Handles deserialization of user input, invocation of the user handler within a {@link DurableContext}, and
+ * production of the {@link DurableExecutionOutput} (success, failure, or pending suspension).
+ */
+public class DurableExecutor {
+    private static final String ROOT_THREAD_ID = null;
+    private static final Logger logger = LoggerFactory.getLogger(DurableExecutor.class);
+
+    // Lambda response size limit is 6MB minus small epsilon for envelope
+    private static final int LAMBDA_RESPONSE_SIZE_LIMIT = 6 * 1024 * 1024 - 50;
+
+    private DurableExecutor() {}
+
+    public static <I, O> DurableExecutionOutput execute(
+            DurableExecutionInput input,
+            Context lambdaContext,
+            TypeToken<I> inputType,
+            BiFunction<I, DurableContext, O> handler,
+            DurableConfig config) {
+        try (var executionManager = new ExecutionManager(input, config)) {
+            executionManager.registerActiveThread(null);
+            var handlerFuture = CompletableFuture.supplyAsync(
+                    () -> {
+                        executionManager.setCurrentThreadContext(new ThreadContext(null, ThreadType.CONTEXT));
+                        var userInput = extractUserInput(
+                                executionManager.getExecutionOperation(), config.getSerDes(), inputType);
+                        // use try-with-resources to clear logger properties
+                        try (var context =
+                                DurableContextImpl.createRootContext(executionManager, config, lambdaContext)) {
+                            return handler.apply(userInput, context);
+                        }
+                    },
+                    config.getExecutorService()); // Get executor from config for running user code
+
+            // Execute the handlerFuture in ExecutionManager. If it completes successfully, the output of user function
+            // will be returned. Otherwise, it will complete exceptionally with a SuspendExecutionException or a
+            // failure.
+            return executionManager
+                    .runUntilCompleteOrSuspend(handlerFuture)
+                    .handle((result, ex) -> {
+                        if (ex != null) {
+                            // an exception thrown from handlerFuture or suspension/termination occurred
+                            Throwable cause = ExceptionHelper.unwrapCompletableFuture(ex);
+                            if (cause instanceof SuspendExecutionException) {
+                                return DurableExecutionOutput.pending();
+                            }
+
+                            logger.debug("Execution failed: {}", cause.getMessage());
+                            return DurableExecutionOutput.failure(buildErrorObject(cause, config.getSerDes()));
+                        }
+                        // user handler complete successfully
+                        var outputPayload = config.getSerDes().serialize(result);
+
+                        logger.debug("Execution completed");
+                        return DurableExecutionOutput.success(handleLargePayload(executionManager, outputPayload));
+                    })
+                    .join();
+        }
+    }
+
+    private static String handleLargePayload(ExecutionManager executionManager, String outputPayload) {
+        // Check if the serialized payload exceeds Lambda response size limit
+        var payloadSize = outputPayload != null ? outputPayload.getBytes(StandardCharsets.UTF_8).length : 0;
+
+        if (payloadSize > LAMBDA_RESPONSE_SIZE_LIMIT) {
+            logger.debug(
+                    "Response size ({} bytes) exceeds Lambda limit ({} bytes). Checkpointing result.",
+                    payloadSize,
+                    LAMBDA_RESPONSE_SIZE_LIMIT);
+
+            // Checkpoint the large result and wait for it to complete
+            executionManager
+                    .sendOperationUpdate(OperationUpdate.builder()
+                            .type(OperationType.EXECUTION)
+                            .id(executionManager.getExecutionOperation().id())
+                            .action(OperationAction.SUCCEED)
+                            .payload(outputPayload)
+                            .build())
+                    .join();
+
+            // Return empty result, we checkpointed the data manually
+            logger.debug("Execution completed (large response checkpointed)");
+            return "";
+        }
+
+        // If response size is acceptable, return the result directly
+        return outputPayload;
+    }
+
+    private static ErrorObject buildErrorObject(Throwable e, SerDes serDes) {
+        // exceptions thrown from operations, e.g. Step
+        if (e instanceof DurableOperationException durableOperationException) {
+            return durableOperationException.getErrorObject();
+        }
+        if (e instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
+            return unrecoverableDurableExecutionException.getErrorObject();
+        }
+        // exceptions thrown from non-operation code
+        return ExceptionHelper.buildErrorObject(e, serDes);
+    }
+
+    private static <I> I extractUserInput(Operation executionOp, SerDes serDes, TypeToken<I> inputType) {
+        if (executionOp.executionDetails() == null) {
+            throw new IllegalDurableOperationException("EXECUTION operation missing executionDetails");
+        }
+
+        var inputPayload = executionOp.executionDetails().inputPayload();
+        return serDes.deserialize(inputPayload, inputType);
+    }
+
+    /**
+     * Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.
+     *
+     * @param inputType the type token for the input
+     * @param handler the handler function
+     * @param config the durable config
+     * @return a request handler that executes the durable function
+     * @param <I> the type of the input
+     * @param <O> the type of the output
+     */
+    public static <I, O> RequestHandler<DurableExecutionInput, DurableExecutionOutput> wrap(
+            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handler, DurableConfig config) {
+        return (input, context) -> execute(input, context, inputType, handler, config);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.html new file mode 100644 index 000000000..b554db780 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.html @@ -0,0 +1 @@ +ExecutionManager

ExecutionManager

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total22 of 53895%7 of 6288%7658115033
validateRunningThreads()95185%1990%1641601
registerActiveThread(String)42385%1150%121601
preSuspendCheck()31076%1150%121401
deregisterActiveThread(String)24395%6100%0411301
lambda$preSuspendCheck$4(Operation)23494%21083%280501
lambda$runUntilCompleteOrSuspend$6(CompletableFuture, Object)2675%1150%121301
ExecutionManager(DurableExecutionInput, DurableConfig)114100%4100%0302201
getOperationAndUpdateReplayState(String)29100%1787%150501
getChildOperations(String)28100%4100%030601
isTerminalStatus(OperationStatus)19100%10100%060101
runUntilCompleteOrSuspend(CompletableFuture)16100%n/a010101
lambda$onCheckpointComplete$2(Operation)16100%n/a010301
suspendExecution()14100%n/a010401
terminateExecution(UnrecoverableDurableExecutionException)10100%n/a010301
isReplaying()9100%2100%020101
registerOperation(BaseDurableOperation)8100%n/a010201
hasOperationsForContext(String)8100%n/a010101
static {...}8100%n/a010201
stopAllOperations(Exception)7100%n/a010201
pollForOperationUpdates(String, Instant)6100%n/a010101
close()6100%n/a010301
lambda$stopAllOperations$5(Exception, BaseDurableOperation)6100%n/a010101
onCheckpointComplete(List)5100%n/a010201
sendOperationUpdate(OperationUpdate)5100%n/a010101
pollForOperationUpdates(String)5100%n/a010101
lambda$hasOperationsForContext$3(String, Operation)5100%n/a010101
lambda$onCheckpointComplete$1(Operation, String, BaseDurableOperation)5100%n/a010201
setCurrentThreadContext(ThreadContext)4100%n/a010201
getCurrentThreadContext()4100%n/a010101
isExecutionCompletedExceptionally()4100%n/a010101
getDurableExecutionArn()3100%n/a010101
getExecutionOperation()3100%n/a010101
lambda$new$0(Operation)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.java.html new file mode 100644 index 000000000..2ee9f8637 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.java.html @@ -0,0 +1,377 @@ +ExecutionManager.java

ExecutionManager.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableConfig;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.model.DurableExecutionInput;
+import software.amazon.lambda.durable.operation.BaseDurableOperation;
+
+/**
+ * Central manager for durable execution coordination.
+ *
+ * <p>Consolidates:
+ *
+ * <ul>
+ *   <li>Execution state (operations, checkpoint token)
+ *   <li>Thread lifecycle (registration/deregistration)
+ *   <li>Checkpoint batching (via CheckpointManager)
+ *   <li>Checkpoint result handling (CheckpointManager callback)
+ *   <li>Polling (for waits and retries)
+ * </ul>
+ *
+ * <p>This is the single entry point for all execution coordination. Internal coordination (polling, checkpointing) uses
+ * a dedicated SDK thread pool, while user-defined operations run on a customer-configured executor.
+ *
+ * <p>Operations are keyed by their globally unique operation ID. Child context operations use prefixed IDs (e.g.,
+ * "1-1", "1-2") to avoid collisions with root-level operations.
+ *
+ * @see InternalExecutor
+ */
+public class ExecutionManager implements AutoCloseable {
+
+    private static final Logger logger = LoggerFactory.getLogger(ExecutionManager.class);
+
+    // ===== Execution State =====
+    private final Map<String, Operation> operationStorage;
+    private final Operation executionOp;
+    private final String durableExecutionArn;
+    private final AtomicReference<ExecutionMode> executionMode;
+    private final DurableConfig durableConfig;
+
+    // ===== Thread Coordination =====
+    private final Map<String, BaseDurableOperation> registeredOperations = Collections.synchronizedMap(new HashMap<>());
+    private final Set<String> activeThreads = Collections.synchronizedSet(new HashSet<>());
+    private static final ThreadLocal<ThreadContext> currentThreadContext = new ThreadLocal<>();
+    private final CompletableFuture<Void> executionExceptionFuture = new CompletableFuture<>();
+
+    // ===== Checkpoint Batching =====
+    private final CheckpointManager checkpointManager;
+
+    public ExecutionManager(DurableExecutionInput input, DurableConfig config) {
+        durableConfig = config;
+        this.durableExecutionArn = input.durableExecutionArn();
+
+        // Create checkpoint batcher for internal coordination
+        this.checkpointManager =
+                new CheckpointManager(config, durableExecutionArn, input.checkpointToken(), this::onCheckpointComplete);
+
+        this.operationStorage = checkpointManager.fetchAllPages(input.initialExecutionState()).stream()
+                .collect(Collectors.toConcurrentMap(Operation::id, op -> op));
+
+        // Start in REPLAY mode if we have more than just the initial EXECUTION operation
+        this.executionMode =
+                new AtomicReference<>(operationStorage.size() > 1 ? ExecutionMode.REPLAY : ExecutionMode.EXECUTION);
+
+        // parse durableExecutionArn and get the last part after / which is the invocation id
+        var durableExecutionArnParts = durableExecutionArn.split("/", -1);
+        var invocationId = durableExecutionArnParts[durableExecutionArnParts.length - 1];
+        executionOp = operationStorage.get(invocationId);
+
+        // Validate initial operation is an EXECUTION operation
+        if (executionOp == null) {
+            throw new IllegalStateException("EXECUTION operation not found");
+        }
+        logger.debug("DurableExecution.execute() called");
+        logger.debug("DurableExecutionArn: {}", durableExecutionArn);
+        logger.debug("Initial operations count: {}", operationStorage.size());
+        logger.debug("EXECUTION operation found: {}", executionOp.id());
+    }
+
+    // ===== State Management =====
+
+    /** Returns the ARN of the durable execution being managed. */
+    public String getDurableExecutionArn() {
+        return durableExecutionArn;
+    }
+
+    /** Returns {@code true} if the execution is currently replaying completed operations. */
+    public boolean isReplaying() {
+        return executionMode.get() == ExecutionMode.REPLAY;
+    }
+
+    /** Registers an operation so it can receive checkpoint completion notifications. */
+    public void registerOperation(BaseDurableOperation operation) {
+        registeredOperations.put(operation.getOperationId(), operation);
+    }
+
+    // ===== Checkpoint Completion Handler =====
+    /** Called by CheckpointManager when a checkpoint completes. Updates operationStorage and notify operations . */
+    private void onCheckpointComplete(List<Operation> newOperations) {
+        newOperations.forEach(op -> {
+            // Update operation storage
+            operationStorage.put(op.id(), op);
+            // call registered operation's onCheckpointComplete method for completed operations
+            registeredOperations.computeIfPresent(op.id(), (id, operation) -> {
+                operation.onCheckpointComplete(op);
+                return operation;
+            });
+        });
+    }
+
+    /**
+     * Gets all child operations for a given operationId.
+     *
+     * @param operationId the operationId to get children for
+     * @return List of child operations for the given operationId
+     */
+    public List<Operation> getChildOperations(String operationId) {
+        // todo: this is O(n) - consider an improvement if performance becomes an issue
+        var children = new ArrayList<Operation>();
+        for (Operation op : operationStorage.values()) {
+            if (Objects.equals(op.parentId(), operationId)) {
+                children.add(op);
+            }
+        }
+        return children;
+    }
+
+    /**
+     * Gets an operation by its globally unique operationId, and updates replay state. Transitions from REPLAY to
+     * EXECUTION mode if the operation is not found or is not in a terminal state (still in progress).
+     *
+     * @param operationId the globally unique operation ID (e.g., "1" for root, "1-1" for child context)
+     * @return the existing operation, or null if not found (first execution)
+     */
+    public Operation getOperationAndUpdateReplayState(String operationId) {
+        var existing = operationStorage.get(operationId);
+        if (executionMode.get() == ExecutionMode.REPLAY && (existing == null || !isTerminalStatus(existing.status()))) {
+            if (executionMode.compareAndSet(ExecutionMode.REPLAY, ExecutionMode.EXECUTION)) {
+                logger.debug("Transitioned to EXECUTION mode at operation '{}'", operationId);
+            }
+        }
+        return existing;
+    }
+
+    /** Returns the initial EXECUTION operation from the checkpoint state. */
+    public Operation getExecutionOperation() {
+        return executionOp;
+    }
+
+    /**
+     * Checks whether there are any cached operations for the given parent context ID. Used to initialize per-context
+     * replay state β€” a context starts in replay mode if the ExecutionManager has cached operations belonging to it.
+     *
+     * @param parentId the context ID to check (null for root context)
+     * @return true if at least one operation exists with the given parentId
+     */
+    public boolean hasOperationsForContext(String parentId) {
+        return operationStorage.values().stream().anyMatch(op -> Objects.equals(op.parentId(), parentId));
+    }
+
+    // ===== Thread Coordination =====
+    /** Sets the current thread's ThreadContext (threadId and threadType). Called when a user thread is started. */
+    public void setCurrentThreadContext(ThreadContext threadContext) {
+        currentThreadContext.set(threadContext);
+    }
+
+    /** Returns the current thread's ThreadContext (threadId and threadType), or null if not set. */
+    public ThreadContext getCurrentThreadContext() {
+        return currentThreadContext.get();
+    }
+
+    /**
+     * Registers a thread as active.
+     *
+     * @see ThreadContext
+     */
+    public void registerActiveThread(String threadId) {
+        synchronized (activeThreads) {
+            if (activeThreads.add(threadId)) {
+                logger.trace("Registered thread '{}' as active. Active threads: {}", threadId, activeThreads.size());
+            } else {
+                logger.warn("Thread '{}' already registered as active", threadId);
+            }
+        }
+    }
+
+    /**
+     * Mark a thread as inactive. If no threads remain, suspends the execution.
+     *
+     * @param threadId the thread ID to deregister
+     */
+    public void deregisterActiveThread(String threadId) {
+        // Skip if already suspended
+        if (executionExceptionFuture.isDone()) {
+            return;
+        }
+
+        // Add synchronized block to avoid remove then check race condition and make sure that
+        // the suspendExecution is called only once
+        synchronized (activeThreads) {
+            boolean removed = activeThreads.remove(threadId);
+            if (removed) {
+                logger.trace("Deregistered thread '{}' Active threads: {}", threadId, activeThreads.size());
+            } else {
+                logger.warn("Thread '{}' not active, cannot deregister", threadId);
+            }
+
+            if (activeThreads.isEmpty()) {
+                logger.info("No active threads remaining - suspending execution");
+                preSuspendCheck();
+                suspendExecution();
+            }
+        }
+    }
+
+    private void preSuspendCheck() {
+        var hasAnyPendingOperation = operationStorage.values().stream().anyMatch(o -> switch (o.type()) {
+            case STEP -> o.status() == OperationStatus.PENDING;
+            case WAIT, CALLBACK -> o.status() == OperationStatus.STARTED;
+            case CHAINED_INVOKE -> o.status() == OperationStatus.PENDING || o.status() == OperationStatus.STARTED;
+            default -> false;
+        });
+
+        if (!hasAnyPendingOperation) {
+            logger.warn("Invalid suspension. No operation is pending");
+        }
+    }
+
+    // ===== Checkpointing =====
+
+    // This method will checkpoint the operation updates to the durable backend and return a future which completes
+    // when the checkpoint completes.
+    public CompletableFuture<Void> sendOperationUpdate(OperationUpdate update) {
+        return checkpointManager.checkpoint(update);
+    }
+
+    // ===== Polling =====
+
+    // This method will poll the operation updates from the durable backend and return a future which completes
+    // when an update of the operation is received.
+    // This is useful for in-process waits. For example, we want to
+    // wait while another thread is still running, and we therefore are not
+    // re-invoked because we never suspended.
+    public CompletableFuture<Operation> pollForOperationUpdates(String operationId) {
+        return checkpointManager.pollForUpdate(operationId);
+    }
+
+    /**
+     * Pools for operation updates at a specific time
+     *
+     * @param operationId the operation id to poll for updates
+     * @param at the time to poll for updates
+     * @return a completable future that completes with the operation update
+     */
+    public CompletableFuture<Operation> pollForOperationUpdates(String operationId, Instant at) {
+        return checkpointManager.pollForUpdate(operationId, at);
+    }
+
+    // ===== Utilities =====
+    /** Shutdown the checkpoint batcher. */
+    @Override
+    public void close() {
+        validateRunningThreads();
+
+        checkpointManager.shutdown();
+    }
+
+    private void validateRunningThreads() {
+        // This will detect stuck user thread and thread leaks in the thread pool
+        for (BaseDurableOperation op : registeredOperations.values()) {
+            var userHandlerFuture = op.getRunningUserHandler();
+            if (userHandlerFuture != null && !userHandlerFuture.isDone()) {
+                // Some user threads can still be running because
+                // the operations that run them have never been waiting for and the execution has completed.
+                logger.info("Waiting for operation to complete before shutting down: {}", op.getOperationId());
+                try {
+                    userHandlerFuture.get();
+                } catch (InterruptedException | CancellationException e) {
+                    // if the user handler is stuck
+                    throw new IllegalStateException(
+                            "Stuck running user handler when shutting down: " + op.getOperationId());
+                } catch (Exception e) {
+                    // ok if the future completed exceptionally
+                }
+            }
+        }
+
+        // double check if the thread pool is empty
+        if (durableConfig.getExecutorService() instanceof ThreadPoolExecutor threadPoolExecutor) {
+            var threadCount = threadPoolExecutor.getActiveCount();
+            // This may or may not be a problem because getActiveCount doesn't return an accurate number
+            if (threadCount > 0) {
+                logger.warn("{} active threads in user executor pool when shutting down", threadCount);
+            }
+        }
+    }
+
+    /** Returns {@code true} if the given status represents a terminal (final) operation state. */
+    public static boolean isTerminalStatus(OperationStatus status) {
+        return status == OperationStatus.SUCCEEDED
+                || status == OperationStatus.FAILED
+                || status == OperationStatus.CANCELLED
+                || status == OperationStatus.TIMED_OUT
+                || status == OperationStatus.STOPPED;
+    }
+
+    /**
+     * Terminates the execution immediately with an unrecoverable error.
+     *
+     * @param exception the unrecoverable exception that caused termination
+     */
+    public void terminateExecution(UnrecoverableDurableExecutionException exception) {
+        stopAllOperations(exception);
+        executionExceptionFuture.completeExceptionally(exception);
+        throw exception;
+    }
+
+    /** Suspends the execution by completing the execution exception future with a {@link SuspendExecutionException}. */
+    public void suspendExecution() {
+        var ex = new SuspendExecutionException();
+        stopAllOperations(ex);
+        executionExceptionFuture.completeExceptionally(ex);
+        throw ex;
+    }
+
+    /**
+     * returns {@code true} if the execution is terminated exceptionally (with a {@link SuspendExecutionException} or an
+     * unrecoverable error).
+     */
+    public boolean isExecutionCompletedExceptionally() {
+        return executionExceptionFuture.isCompletedExceptionally();
+    }
+
+    private void stopAllOperations(Exception cause) {
+        registeredOperations.values().forEach(op -> op.getCompletionFuture().completeExceptionally(cause));
+    }
+
+    /**
+     * return a future that completes when userFuture completes successfully or the execution is terminated or
+     * suspended.
+     *
+     * @param userFuture user provided function
+     * @return a future of userFuture result if userFuture completes successfully, a user exception if userFuture
+     *     completes with an exception, a SuspendExecutionException if the execution is suspended, or an
+     *     UnrecoverableDurableExecutionException if the execution is terminated.
+     */
+    public <T> CompletableFuture<T> runUntilCompleteOrSuspend(CompletableFuture<T> userFuture) {
+        return CompletableFuture.anyOf(userFuture, executionExceptionFuture).thenApply(v -> {
+            // reaches here only if userFuture complete successfully
+            if (userFuture.isDone()) {
+                return userFuture.join();
+            }
+            return null;
+        });
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.html new file mode 100644 index 000000000..91be71438 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.html @@ -0,0 +1 @@ +ExecutionMode

ExecutionMode

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a010301
static {...}15100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.java.html new file mode 100644 index 000000000..739f53adc --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.java.html @@ -0,0 +1,12 @@ +ExecutionMode.java

ExecutionMode.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+/** Represents the current execution mode of a durable execution. */
+enum ExecutionMode {
+    /** Replaying completed operations from checkpoint log. */
+    REPLAY,
+    /** Executing new operations. */
+    EXECUTION
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.html new file mode 100644 index 000000000..5c5ab3263 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.html @@ -0,0 +1 @@ +InternalExecutor

InternalExecutor

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 22100%0 of 0n/a020502
lambda$static$0(Runnable)13100%n/a010301
static {...}9100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.java.html new file mode 100644 index 000000000..e25550635 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.java.html @@ -0,0 +1,35 @@ +InternalExecutor.java

InternalExecutor.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Shared executor for internal SDK coordination tasks.
+ *
+ * <p>This executor is used for SDK-internal operations such as checkpoint batching. It is separate from the
+ * user-configured executor (via {@code DurableConfig}) which runs user-defined operations.
+ *
+ * <p>Using a dedicated thread pool ensures SDK coordination tasks are isolated from user code.
+ */
+final class InternalExecutor {
+
+    private static final AtomicInteger THREAD_COUNTER = new AtomicInteger(0);
+
+    /**
+     * Shared executor for all SDK-internal coordination tasks. Uses a cached thread pool that creates threads on
+     * demand, reuses idle threads, and terminates threads after 60 seconds of inactivity by default.
+     */
+    static final Executor INSTANCE = Executors.newCachedThreadPool(runnable -> {
+        var thread = new Thread(runnable, "durable-sdk-internal-" + THREAD_COUNTER.getAndIncrement());
+        thread.setDaemon(true);
+        return thread;
+    });
+
+    private InternalExecutor() {
+        // Utility class
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.html new file mode 100644 index 000000000..06221fe5b --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.html @@ -0,0 +1 @@ +OperationIdGenerator

OperationIdGenerator

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 4885%0 of 2100%0421103
hashOperationId(String)71365%n/a012501
OperationIdGenerator(String)17100%2100%020401
nextOperationId()11100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.java.html new file mode 100644 index 000000000..253cf4306 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.java.html @@ -0,0 +1,49 @@ +OperationIdGenerator.java

OperationIdGenerator.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.HexFormat;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/** Generates operation IDs for the durable operations. */
+public class OperationIdGenerator {
+    private final AtomicInteger operationCounter;
+    private final String operationIdPrefix;
+
+    public OperationIdGenerator(String contextId) {
+        this.operationCounter = new AtomicInteger(0);
+        this.operationIdPrefix = contextId != null ? contextId + "-" : "";
+    }
+
+    /**
+     * Hashes the given string using SHA-256
+     *
+     * @param rawId the string to hash
+     * @return the hashed string
+     */
+    public static String hashOperationId(String rawId) {
+        try {
+            var messageDigest = MessageDigest.getInstance("SHA-256");
+            var hash = messageDigest.digest(rawId.getBytes(StandardCharsets.UTF_8));
+            return HexFormat.of().formatHex(hash);
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException("failed to get next operation id, SHA-256 not available", e);
+        }
+    }
+
+    /**
+     * Returns the next globally unique operation ID. Increments an internal counter, concatenates it with the context
+     * ID prefix ({@code contextId + "-" + counter}), and SHA-256 hashes the result. For root contexts the prefix is the
+     * EXECUTION operation ID; for child contexts it is the parent's hashed context ID. This produces IDs like
+     * {@code hash("execId-1")}, {@code hash("execId-2")} at the root level, and {@code hash("<parentHash>-1")},
+     * {@code hash("<parentHash>-2")} inside a child context.
+     */
+    public String nextOperationId() {
+        var counter = String.valueOf(operationCounter.incrementAndGet());
+        return hashOperationId(operationIdPrefix + counter);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.html new file mode 100644 index 000000000..35c2cd6dc --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.html @@ -0,0 +1 @@ +SuspendExecutionException

SuspendExecutionException

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010201
SuspendExecutionException()4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.java.html new file mode 100644 index 000000000..6931bfd64 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.java.html @@ -0,0 +1,11 @@ +SuspendExecutionException.java

SuspendExecutionException.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+/** Exception thrown to suspend execution during wait operations. This is an internal control flow mechanism. */
+public class SuspendExecutionException extends RuntimeException {
+    public SuspendExecutionException() {
+        super("Execution suspended for wait operation");
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.html new file mode 100644 index 000000000..6b363568f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.html @@ -0,0 +1 @@ +ThreadContext

ThreadContext

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a010101
ThreadContext(String, ThreadType)9100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.java.html new file mode 100644 index 000000000..571dbf4d1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.java.html @@ -0,0 +1,7 @@ +ThreadContext.java

ThreadContext.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+/** Holds the current thread's execution context. */
+public record ThreadContext(String threadId, ThreadType threadType) {}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.html new file mode 100644 index 000000000..62f5b32a6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.html @@ -0,0 +1 @@ +ThreadType

ThreadType

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 28100%0 of 0n/a030703
static {...}17100%n/a010301
ThreadType(String, int, String)8100%n/a010301
toString()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.java.html new file mode 100644 index 000000000..d97f28a89 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.java.html @@ -0,0 +1,25 @@ +ThreadType.java

ThreadType.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.execution;
+
+/**
+ * Thread type enum for tracking conceptual threads in durable execution.
+ *
+ * <p>These are not physical OS threads, but logical threads representing different types of work in the execution.
+ */
+public enum ThreadType {
+    CONTEXT("Context"),
+    STEP("Step");
+
+    private final String displayName;
+
+    ThreadType(String displayName) {
+        this.displayName = displayName;
+    }
+
+    @Override
+    public String toString() {
+        return displayName;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.html new file mode 100644 index 000000000..26a6f1f5e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.execution

software.amazon.lambda.durable.execution

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total30 of 1,55298%10 of 12892%1014210355077011
ExecutionManager2251695%75588%765811503301
OperationIdGenerator74185%2100%042110301
DurableExecutor19099%11392%1160510901
CheckpointManager419100%12796%12908901501
ApiRequestDelayedBatcher269100%12195%1190700801
ThreadType28100%n/a03070301
InternalExecutor22100%n/a02050201
ExecutionMode15100%n/a01030101
ThreadContext9100%n/a01010101
ApiRequestDelayedBatcher.Item9100%n/a01010101
SuspendExecutionException100%n/a01020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.source.html new file mode 100644 index 000000000..ca803ab52 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.execution

software.amazon.lambda.durable.execution

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total30 of 1,55298%10 of 12892%1014210355077011
ExecutionManager.java2251695%75588%765811503301
OperationIdGenerator.java74185%2100%042110301
DurableExecutor.java19099%11392%1160510901
CheckpointManager.java419100%12796%12908901501
ApiRequestDelayedBatcher.java278100%12195%1200710902
ThreadType.java28100%n/a03070301
InternalExecutor.java22100%n/a02050201
ExecutionMode.java15100%n/a01030101
ThreadContext.java9100%n/a01010101
SuspendExecutionException.java100%n/a01020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.html new file mode 100644 index 000000000..9c7c1c6df --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.html @@ -0,0 +1 @@ +DurableLogger

DurableLogger

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 170100%2 of 2090%226038016
DurableLogger(Logger, BaseContextImpl)69100%21285%2801901
shouldSuppress()15100%4100%030201
trace(String, Object[])7100%n/a010201
debug(String, Object[])7100%n/a010201
info(String, Object[])7100%n/a010201
warn(String, Object[])7100%n/a010201
error(String, Object[])7100%n/a010201
error(String, Throwable)7100%n/a010201
log(Runnable)6100%2100%020301
lambda$error$5(String, Throwable)6100%n/a010101
lambda$error$4(String, Object[])6100%n/a010101
lambda$warn$3(String, Object[])6100%n/a010101
lambda$info$2(String, Object[])6100%n/a010101
lambda$debug$1(String, Object[])6100%n/a010101
lambda$trace$0(String, Object[])6100%n/a010101
close()2100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.java.html new file mode 100644 index 000000000..19d808330 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.java.html @@ -0,0 +1,106 @@ +DurableLogger.java

DurableLogger.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.logging;
+
+import org.slf4j.Logger;
+import org.slf4j.MDC;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.context.BaseContextImpl;
+
+/**
+ * Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
+ * replay.
+ */
+public class DurableLogger {
+    static final String MDC_EXECUTION_ARN = "durableExecutionArn";
+    static final String MDC_REQUEST_ID = "requestId";
+    static final String MDC_OPERATION_ID = "operationId";
+    static final String MDC_CONTEXT_ID = "contextId";
+    static final String MDC_OPERATION_NAME = "operationName";
+    static final String MDC_CONTEXT_NAME = "contextName";
+    static final String MDC_ATTEMPT = "attempt";
+
+    private final Logger delegate;
+    private final BaseContextImpl context;
+
+    /**
+     * Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.
+     *
+     * @param delegate the SLF4J logger to wrap
+     * @param context the durable execution context providing MDC values
+     */
+    public DurableLogger(Logger delegate, BaseContextImpl context) {
+        this.delegate = delegate;
+        this.context = context;
+
+        // execution arn
+        MDC.put(MDC_EXECUTION_ARN, context.getExecutionArn());
+
+        // lambda request id
+        var requestId =
+                context.getLambdaContext() != null ? context.getLambdaContext().getAwsRequestId() : null;
+        if (requestId != null) {
+            MDC.put(MDC_REQUEST_ID, requestId);
+        }
+
+        if (context instanceof DurableContext) {
+            // context thread - context id and name
+            if (context.getContextId() != null) {
+                MDC.put(MDC_CONTEXT_ID, context.getContextId());
+            }
+            if (context.getContextName() != null) {
+                MDC.put(MDC_CONTEXT_NAME, context.getContextName());
+            }
+        } else if (context instanceof StepContext stepContext) {
+            // In step context, context id is the operation id, context name is the operation name
+            var operationId = context.getContextId();
+            MDC.put(MDC_OPERATION_ID, operationId);
+            if (context.getContextName() != null) {
+                MDC.put(MDC_OPERATION_NAME, context.getContextName());
+            }
+            MDC.put(MDC_ATTEMPT, String.valueOf(stepContext.getAttempt()));
+        }
+    }
+
+    /** Clears all MDC entries. User set MDC entries will also be removed as the thread will not be used anymore. */
+    public void close() {
+        MDC.clear();
+    }
+
+    public void trace(String format, Object... args) {
+        log(() -> delegate.trace(format, args));
+    }
+
+    public void debug(String format, Object... args) {
+        log(() -> delegate.debug(format, args));
+    }
+
+    public void info(String format, Object... args) {
+        log(() -> delegate.info(format, args));
+    }
+
+    public void warn(String format, Object... args) {
+        log(() -> delegate.warn(format, args));
+    }
+
+    public void error(String format, Object... args) {
+        log(() -> delegate.error(format, args));
+    }
+
+    public void error(String message, Throwable t) {
+        log(() -> delegate.error(message, t));
+    }
+
+    private boolean shouldSuppress() {
+        return context.getDurableConfig().getLoggerConfig().suppressReplayLogs()
+                && context.getExecutionManager().isReplaying();
+    }
+
+    private void log(Runnable logAction) {
+        if (!shouldSuppress()) {
+            logAction.run();
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.html new file mode 100644 index 000000000..00e4ce201 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.html @@ -0,0 +1 @@ +LoggerConfig

LoggerConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 1668%0 of 0n/a131313
withReplayLogging()50%n/a111111
LoggerConfig(boolean)6100%n/a010101
defaults()5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.java.html new file mode 100644 index 000000000..a6be0ee13 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.java.html @@ -0,0 +1,18 @@ +LoggerConfig.java

LoggerConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.logging;
+
+/** Configuration for DurableLogger behavior. */
+public record LoggerConfig(boolean suppressReplayLogs) {
+
+    /** Default configuration: suppress logs during replay. */
+    public static LoggerConfig defaults() {
+        return new LoggerConfig(true);
+    }
+
+    /** Configuration that allows logs during replay. */
+    public static LoggerConfig withReplayLogging() {
+        return new LoggerConfig(false);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.html new file mode 100644 index 000000000..fac7b4751 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.logging

software.amazon.lambda.durable.logging

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total5 of 18697%2 of 2090%32914111902
LoggerConfig51168%n/a13131301
DurableLogger170100%21890%22603801601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.source.html new file mode 100644 index 000000000..0492d9b71 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.logging

software.amazon.lambda.durable.logging

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total5 of 18697%2 of 2090%32914111902
LoggerConfig.java51168%n/a13131301
DurableLogger.java170100%21890%22603801601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.html new file mode 100644 index 000000000..6bcbe52ba --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.html @@ -0,0 +1 @@ +ConcurrencyCompletionStatus

ConcurrencyCompletionStatus

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 34100%0 of 4100%050603
static {...}21100%n/a010401
isSucceeded()10100%4100%030101
toString()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.java.html new file mode 100644 index 000000000..94125bcef --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.java.html @@ -0,0 +1,19 @@ +ConcurrencyCompletionStatus.java

ConcurrencyCompletionStatus.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+public enum ConcurrencyCompletionStatus {
+    ALL_COMPLETED,
+    MIN_SUCCESSFUL_REACHED,
+    FAILURE_TOLERANCE_EXCEEDED;
+
+    @Override
+    public String toString() {
+        return name();
+    }
+
+    public boolean isSucceeded() {
+        return this == ALL_COMPLETED || this == MIN_SUCCESSFUL_REACHED;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.html new file mode 100644 index 000000000..eea59dd79 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.html @@ -0,0 +1 @@ +DurableExecutionInput

DurableExecutionInput

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a010101
DurableExecutionInput(String, String, CheckpointUpdatedExecutionState)12100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.java.html new file mode 100644 index 000000000..a8e7b3273 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.java.html @@ -0,0 +1,16 @@ +DurableExecutionInput.java

DurableExecutionInput.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
+
+/**
+ * Input payload received by the Lambda handler from the Durable Functions backend.
+ *
+ * @param durableExecutionArn ARN identifying this durable execution
+ * @param checkpointToken token used to authenticate checkpoint API calls
+ * @param initialExecutionState snapshot of operations already completed in previous invocations
+ */
+public record DurableExecutionInput(
+        String durableExecutionArn, String checkpointToken, CheckpointUpdatedExecutionState initialExecutionState) {}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.html new file mode 100644 index 000000000..aefd62fa7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.html @@ -0,0 +1 @@ +DurableExecutionOutput

DurableExecutionOutput

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 33100%0 of 0n/a040404
DurableExecutionOutput(ExecutionStatus, String, ErrorObject)12100%n/a010101
success(String)7100%n/a010101
pending()7100%n/a010101
failure(ErrorObject)7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.java.html new file mode 100644 index 000000000..8fc14ed2d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.java.html @@ -0,0 +1,31 @@ +DurableExecutionOutput.java

DurableExecutionOutput.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+
+/**
+ * Output payload returned by the Lambda handler to the Durable Functions backend.
+ *
+ * @param status the execution status (SUCCEEDED, FAILED, or PENDING)
+ * @param result the serialized result on success, or null otherwise
+ * @param error the error details on failure, or null otherwise
+ */
+public record DurableExecutionOutput(ExecutionStatus status, String result, ErrorObject error) {
+
+    /** Creates a successful output with the given serialized result. */
+    public static DurableExecutionOutput success(String result) {
+        return new DurableExecutionOutput(ExecutionStatus.SUCCEEDED, result, null);
+    }
+
+    /** Creates a pending output indicating the execution was suspended. */
+    public static DurableExecutionOutput pending() {
+        return new DurableExecutionOutput(ExecutionStatus.PENDING, null, null);
+    }
+
+    /** Creates a failed output with the given error details. */
+    public static DurableExecutionOutput failure(ErrorObject errorObject) {
+        return new DurableExecutionOutput(ExecutionStatus.FAILED, null, errorObject);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.html new file mode 100644 index 000000000..43cae650f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.html @@ -0,0 +1 @@ +ExecutionStatus

ExecutionStatus

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 24100%0 of 0n/a020502
static {...}21100%n/a010401
toString()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.java.html new file mode 100644 index 000000000..af884f08d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.java.html @@ -0,0 +1,16 @@ +ExecutionStatus.java

ExecutionStatus.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+/** Terminal status of a durable execution. */
+public enum ExecutionStatus {
+    SUCCEEDED,
+    FAILED,
+    PENDING;
+
+    @Override
+    public String toString() {
+        return name();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapError.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapError.html new file mode 100644 index 000000000..892f3de14 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapError.html @@ -0,0 +1 @@ +MapResult.MapError

MapResult.MapError

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 24100%0 of 0n/a020302
MapResult.MapError(String, String, List)12100%n/a010101
of(Throwable)12100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem$Status.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem$Status.html new file mode 100644 index 000000000..80a378e4d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem$Status.html @@ -0,0 +1 @@ +MapResult.MapResultItem.Status

MapResult.MapResultItem.Status

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 0n/a010401
static {...}21100%n/a010401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem.html new file mode 100644 index 000000000..db171b184 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem.html @@ -0,0 +1 @@ +MapResult.MapResultItem

MapResult.MapResultItem

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 33100%0 of 0n/a040404
MapResult.MapResultItem(MapResult.MapResultItem.Status, Object, MapResult.MapError)12100%n/a010101
succeeded(Object)7100%n/a010101
failed(MapResult.MapError)7100%n/a010101
skipped()7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.html new file mode 100644 index 000000000..77034b57c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.html @@ -0,0 +1 @@ +MapResult

MapResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 10798%2 of 1080%218019013
MapResult(List, ConcurrencyCompletionStatus)22090%2250%230401
succeeded()9100%n/a010401
failed()9100%n/a010401
lambda$failed$2(MapResult.MapResultItem)8100%2100%020101
lambda$succeeded$1(MapResult.MapResultItem)8100%2100%020101
lambda$allSucceeded$0(MapResult.MapResultItem)8100%2100%020101
getResult(int)7100%n/a010101
getError(int)7100%n/a010101
results()7100%n/a010101
empty()6100%n/a010101
getItem(int)6100%n/a010101
allSucceeded()6100%n/a010101
size()4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.java.html new file mode 100644 index 000000000..6aa23273d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.java.html @@ -0,0 +1,138 @@ +MapResult.java

MapResult.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+import java.util.Collections;
+import java.util.List;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Result container for map operations.
+ *
+ * <p>Holds ordered results from a map operation. Each index corresponds to the input item at the same position. Each
+ * item is represented as a {@link MapResultItem} containing its status, result, and error. Includes the
+ * {@link ConcurrencyCompletionStatus} indicating why the operation completed.
+ *
+ * <p>Errors are stored as {@link MapError} rather than raw Throwable, so they survive serialization across
+ * checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.
+ *
+ * @param items ordered result items from the map operation
+ * @param completionReason why the operation completed
+ * @param <T> the result type of each item
+ */
+public record MapResult<T>(List<MapResultItem<T>> items, ConcurrencyCompletionStatus completionReason) {
+
+    /** Compact constructor that applies defensive copy and defaults. */
+    public MapResult {
+        items = items != null ? List.copyOf(items) : Collections.emptyList();
+        completionReason = completionReason != null ? completionReason : ConcurrencyCompletionStatus.ALL_COMPLETED;
+    }
+
+    /** Returns an empty MapResult with no items. */
+    public static <T> MapResult<T> empty() {
+        return new MapResult<>(Collections.emptyList(), ConcurrencyCompletionStatus.ALL_COMPLETED);
+    }
+
+    /** Returns the result item at the given index. */
+    public MapResultItem<T> getItem(int index) {
+        return items.get(index);
+    }
+
+    /** Returns the result at the given index, or null if that item failed or was not started. */
+    public T getResult(int index) {
+        return items.get(index).result();
+    }
+
+    /** Returns the error at the given index, or null if that item succeeded or was not started. */
+    public MapError getError(int index) {
+        return items.get(index).error();
+    }
+
+    /** Returns true if all items succeeded (no failures or not-started items). */
+    public boolean allSucceeded() {
+        return items.stream().allMatch(item -> item.status() == MapResultItem.Status.SUCCEEDED);
+    }
+
+    /** Returns the number of items in this result. */
+    public int size() {
+        return items.size();
+    }
+
+    /** Returns all results as an unmodifiable list (nulls for failed/not-started items). */
+    public List<T> results() {
+        return items.stream().map(MapResultItem::result).toList();
+    }
+
+    /** Returns results from items that succeeded (includes null results from successful items). */
+    public List<T> succeeded() {
+        return items.stream()
+                .filter(item -> item.status() == MapResultItem.Status.SUCCEEDED)
+                .map(MapResultItem::result)
+                .toList();
+    }
+
+    /** Returns errors from items that failed. */
+    public List<MapError> failed() {
+        return items.stream()
+                .filter(item -> item.status() == MapResultItem.Status.FAILED)
+                .map(MapResultItem::error)
+                .toList();
+    }
+
+    /**
+     * Represents the outcome of a single item in a map operation.
+     *
+     * <p>Each item either succeeds with a result, fails with an error, or was never started. The status field indicates
+     * which case applies.
+     *
+     * <p>Errors are stored as {@link MapError} (plain strings) rather than raw Throwable, so they survive serialization
+     * across checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.
+     *
+     * @param status the status of this item
+     * @param result the result value, or null if failed/not started
+     * @param error the error details, or null if succeeded/not started
+     * @param <T> the result type
+     */
+    public record MapResultItem<T>(Status status, T result, MapError error) {
+
+        /** Status of an individual map item. */
+        public enum Status {
+            SUCCEEDED,
+            FAILED,
+            SKIPPED
+        }
+
+        /** Creates a successful result item. */
+        public static <T> MapResultItem<T> succeeded(T result) {
+            return new MapResultItem<>(Status.SUCCEEDED, result, null);
+        }
+
+        /** Creates a failed result item. */
+        public static <T> MapResultItem<T> failed(MapError error) {
+            return new MapResultItem<>(Status.FAILED, null, error);
+        }
+
+        /** Creates a skipped result item. */
+        public static <T> MapResultItem<T> skipped() {
+            return new MapResultItem<>(Status.SKIPPED, null, null);
+        }
+    }
+
+    /**
+     * Error details for a failed map item.
+     *
+     * <p>Stores error information as plain strings so that {@link MapResult} can be serialized through the user's
+     * SerDes without requiring AWS SDK-specific Jackson modules.
+     *
+     * @param errorType the fully qualified exception class name
+     * @param errorMessage the error message
+     * @param stackTrace the stack trace frames, or null
+     */
+    public record MapError(String errorType, String errorMessage, List<String> stackTrace) {
+        public static MapError of(Throwable e) {
+            return new MapError(
+                    e.getClass().getName(), e.getMessage(), ExceptionHelper.serializeStackTrace(e.getStackTrace()));
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.html new file mode 100644 index 000000000..efb723b34 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.html @@ -0,0 +1 @@ +OperationIdentifier

OperationIdentifier

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 31100%0 of 0n/a030303
OperationIdentifier(String, String, OperationType, OperationSubType)15100%n/a010101
of(String, String, OperationType)8100%n/a010101
of(String, String, OperationType, OperationSubType)8100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.java.html new file mode 100644 index 000000000..ed164e043 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.java.html @@ -0,0 +1,29 @@ +OperationIdentifier.java

OperationIdentifier.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+import software.amazon.awssdk.services.lambda.model.OperationType;
+
+/**
+ * Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.
+ *
+ * @param operationId unique sequential identifier for the operation within an execution
+ * @param name human-readable name for the operation
+ * @param operationType the kind of operation (STEP, WAIT, CALLBACK, etc.)
+ * @param subType optional sub-type for operations that need further classification (e.g. child contexts)
+ */
+public record OperationIdentifier(
+        String operationId, String name, OperationType operationType, OperationSubType subType) {
+
+    /** Creates an identifier without a sub-type. */
+    public static OperationIdentifier of(String operationId, String name, OperationType type) {
+        return new OperationIdentifier(operationId, name, type, null);
+    }
+
+    /** Creates an identifier with a sub-type. */
+    public static OperationIdentifier of(
+            String operationId, String name, OperationType type, OperationSubType subType) {
+        return new OperationIdentifier(operationId, name, type, subType);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.html new file mode 100644 index 000000000..0f5392173 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.html @@ -0,0 +1 @@ +OperationSubType

OperationSubType

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 6695%0 of 0n/a1411314
toString()30%n/a111111
static {...}52100%n/a010801
OperationSubType(String, int, String)8100%n/a010301
getValue()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.java.html new file mode 100644 index 000000000..7b16e1ceb --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.java.html @@ -0,0 +1,36 @@ +OperationSubType.java

OperationSubType.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+/**
+ * Fine-grained classification of durable operations beyond the basic operation types.
+ *
+ * <p>Used as the {@code subType} field in checkpoint updates for {@code CONTEXT} operations. Matches the
+ * {@code OperationSubType} enum in the JavaScript and Python durable execution SDKs.
+ */
+public enum OperationSubType {
+    RUN_IN_CHILD_CONTEXT("RunInChildContext"),
+    MAP("Map"),
+    MAP_ITERATION("MapIteration"),
+    PARALLEL("Parallel"),
+    PARALLEL_BRANCH("ParallelBranch"),
+    WAIT_FOR_CALLBACK("WaitForCallback"),
+    WAIT_FOR_CONDITION("WaitForCondition");
+
+    private final String value;
+
+    OperationSubType(String value) {
+        this.value = value;
+    }
+
+    /** Returns the wire-format string value sent in checkpoint updates. */
+    public String getValue() {
+        return value;
+    }
+
+    @Override
+    public String toString() {
+        return value;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.html new file mode 100644 index 000000000..096636bc6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.html @@ -0,0 +1 @@ +ParallelResult

ParallelResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a010101
ParallelResult(int, int, int, ConcurrencyCompletionStatus)15100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.java.html new file mode 100644 index 000000000..c85a0537a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.java.html @@ -0,0 +1,12 @@ +ParallelResult.java

ParallelResult.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+/**
+ * Summary result of a parallel operation.
+ *
+ * <p>Captures the aggregate outcome of a parallel execution: how many branches were registered, how many succeeded, how
+ * many failed, and why the operation completed.
+ */
+public record ParallelResult(int size, int succeeded, int failed, ConcurrencyCompletionStatus completionStatus) {}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.html new file mode 100644 index 000000000..2966a52e1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.html @@ -0,0 +1 @@ +WaitForConditionResult

WaitForConditionResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 0n/a030303
WaitForConditionResult(Object, boolean)9100%n/a010101
stopPolling(Object)6100%n/a010101
continuePolling(Object)6100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.java.html new file mode 100644 index 000000000..ac7c8966f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.java.html @@ -0,0 +1,39 @@ +WaitForConditionResult.java

WaitForConditionResult.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.model;
+
+/**
+ * Result returned by a WaitForCondition check function to signal whether the condition is met.
+ *
+ * <p>When {@code isDone} is true, polling stops and {@code value} becomes the final result. When {@code isDone} is
+ * false, polling continues using the delay computed by the wait strategy.
+ *
+ * @param value the current state after evaluation
+ * @param isDone true if the condition is met and polling should stop, false to continue polling
+ * @param <T> the type of the state value
+ */
+public record WaitForConditionResult<T>(T value, boolean isDone) {
+
+    /**
+     * Creates a result indicating the condition is met and polling should stop.
+     *
+     * @param value the final state value
+     * @param <T> the type of the state value
+     * @return a WaitForConditionResult with isDone=true
+     */
+    public static <T> WaitForConditionResult<T> stopPolling(T value) {
+        return new WaitForConditionResult<>(value, true);
+    }
+
+    /**
+     * Creates a result indicating polling should continue with the given state.
+     *
+     * @param value the current state value to pass to the next check
+     * @param <T> the type of the state value
+     * @return a WaitForConditionResult with isDone=false
+     */
+    public static <T> WaitForConditionResult<T> continuePolling(T value) {
+        return new WaitForConditionResult<>(value, false);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.html new file mode 100644 index 000000000..4b59bf107 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.model

software.amazon.lambda.durable.model

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total5 of 42198%2 of 1485%348166141012
OperationSubType36395%n/a141131401
MapResult210598%2880%21801901301
ConcurrencyCompletionStatus34100%4100%05060301
MapResult.MapResultItem33100%n/a04040401
DurableExecutionOutput33100%n/a04040401
OperationIdentifier31100%n/a03030301
ExecutionStatus24100%n/a02050201
MapResult.MapError24100%n/a02030201
WaitForConditionResult21100%n/a03030301
MapResult.MapResultItem.Status21100%n/a01040101
ParallelResult15100%n/a01010101
DurableExecutionInput12100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.source.html new file mode 100644 index 000000000..a5d7c0e8f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.model

software.amazon.lambda.durable.model

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total5 of 42198%2 of 1485%348166141012
OperationSubType.java36395%n/a141131401
MapResult.java218398%2880%22503002004
ConcurrencyCompletionStatus.java34100%4100%05060301
DurableExecutionOutput.java33100%n/a04040401
OperationIdentifier.java31100%n/a03030301
ExecutionStatus.java24100%n/a02050201
WaitForConditionResult.java21100%n/a03030301
ParallelResult.java15100%n/a01010101
DurableExecutionInput.java12100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.html new file mode 100644 index 000000000..d45b5ed84 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.html @@ -0,0 +1 @@ +BaseDurableOperation

BaseDurableOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total71 of 54286%5 of 4488%65210116130
validateReplay(Operation)337770%21487%2921401
runUserHandler(Runnable, ThreadType)123775%1375%1331101
lambda$runUserHandler$1(String, ThreadType, Runnable)102772%2466%2421101
terminateExecutionWithIllegalDurableOperationException(String)70%n/a111111
waitForOperationCompletion()58894%6100%0412001
validateCurrentThreadType()42787%2100%021601
BaseDurableOperation(OperationIdentifier, DurableContextImpl, BaseDurableOperation)31100%n/a010901
sendOperationUpdateAsync(OperationUpdate.Builder)31100%2100%020501
execute()22100%4100%030801
markCompletionFutureCompleted()21100%2100%020401
onCheckpointComplete(Operation)14100%2100%020401
markAlreadyCompleted()10100%n/a010301
pollForOperationUpdates(Instant)7100%n/a010101
getOperation()6100%n/a010101
getChildOperations()6100%n/a010101
terminateExecution(UnrecoverableDurableExecutionException)6100%n/a010201
pollForOperationUpdates()6100%n/a010101
sendOperationUpdate(OperationUpdate.Builder)6100%n/a010201
registerActiveThread(String)5100%n/a010201
getRunningUserHandler()5100%n/a010101
lambda$waitForOperationCompletion$0(ThreadContext)5100%n/a010101
getSubType()4100%n/a010101
getOperationId()4100%n/a010101
getName()4100%n/a010101
getType()4100%n/a010101
isOperationCompleted()4100%n/a010101
getCurrentThreadContext()4100%n/a010101
static {...}4100%n/a010101
getCompletionFuture()3100%n/a010101
getContext()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.java.html new file mode 100644 index 000000000..8d6e88ffd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.java.html @@ -0,0 +1,413 @@ +BaseDurableOperation.java

BaseDurableOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.time.Instant;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
+import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.execution.ThreadContext;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Base class for all durable operations (STEP, WAIT, etc.).
+ *
+ * <p>Key methods:
+ *
+ * <ul>
+ *   <li>{@code execute()} starts the operation (returns immediately)
+ *   <li>{@code get()} blocks until complete and returns the result
+ * </ul>
+ *
+ * <p>The separation allows:
+ *
+ * <ul>
+ *   <li>Starting multiple async operations quickly
+ *   <li>Blocking on results later when needed
+ *   <li>Proper thread coordination via future
+ * </ul>
+ */
+public abstract class BaseDurableOperation {
+    private static final Logger logger = LoggerFactory.getLogger(BaseDurableOperation.class);
+
+    private final OperationIdentifier operationIdentifier;
+    protected final ExecutionManager executionManager;
+    protected final CompletableFuture<BaseDurableOperation> completionFuture;
+    protected final BaseDurableOperation parentOperation;
+    private final DurableContextImpl durableContext;
+    private final AtomicReference<CompletableFuture<Void>> runningUserHandler = new AtomicReference<>(null);
+
+    /**
+     * Constructs a new durable operation.
+     *
+     * @param operationIdentifier the unique identifier for this operation
+     * @param durableContext the parent context this operation belongs to
+     * @param parentOperation the parent operation if this is a branch/iteration of a ConcurrencyOperation
+     */
+    protected BaseDurableOperation(
+            OperationIdentifier operationIdentifier,
+            DurableContextImpl durableContext,
+            BaseDurableOperation parentOperation) {
+        this.operationIdentifier = operationIdentifier;
+        this.parentOperation = parentOperation;
+        this.durableContext = durableContext;
+        this.executionManager = durableContext.getExecutionManager();
+
+        this.completionFuture = new CompletableFuture<>();
+
+        // register this operation in ExecutionManager so that the operation can receive updates from ExecutionManager
+        executionManager.registerOperation(this);
+    }
+
+    public CompletableFuture<BaseDurableOperation> getCompletionFuture() {
+        return completionFuture;
+    }
+
+    /** Gets the operation sub-type (e.g. RUN_IN_CHILD_CONTEXT, WAIT_FOR_CALLBACK). */
+    public OperationSubType getSubType() {
+        return operationIdentifier.subType();
+    }
+
+    /** Gets the unique identifier for this operation. */
+    public String getOperationId() {
+        return operationIdentifier.operationId();
+    }
+
+    /** Gets the operation name (may be null). */
+    public String getName() {
+        return operationIdentifier.name();
+    }
+
+    /** Gets the parent context. */
+    protected DurableContextImpl getContext() {
+        return durableContext;
+    }
+
+    /** Gets the operation type. */
+    public OperationType getType() {
+        return operationIdentifier.operationType();
+    }
+
+    /**
+     * Starts the operation by checking for an existing checkpoint. If a checkpoint exists, validates and replays it;
+     * otherwise starts fresh execution.
+     */
+    public void execute() {
+        var existing = getOperation();
+
+        if (existing != null) {
+            validateReplay(existing);
+            replay(existing);
+        } else {
+            if (durableContext.isReplaying()) {
+                this.durableContext.setExecutionMode();
+            }
+            start();
+        }
+    }
+
+    /** Starts the operation on first execution (no existing checkpoint). */
+    protected abstract void start();
+
+    /**
+     * Replays the operation from an existing checkpoint.
+     *
+     * @param existing the checkpointed operation state
+     */
+    protected abstract void replay(Operation existing);
+
+    /**
+     * Gets the Operation from ExecutionManager and update the replay state from REPLAY to EXECUTE if operation is not
+     * found. Operation IDs are globally unique (prefixed for child contexts), so no parentId is needed for lookups.
+     *
+     * @return the operation if found, otherwise null
+     */
+    protected Operation getOperation() {
+        return executionManager.getOperationAndUpdateReplayState(getOperationId());
+    }
+
+    /**
+     * Gets the direct child Operations of this context operation
+     *
+     * @return list of the child Operations
+     */
+    protected List<Operation> getChildOperations() {
+        return executionManager.getChildOperations(getOperationId());
+    }
+
+    /**
+     * Checks if it's called from a Step.
+     *
+     * @throws IllegalDurableOperationException if it's in a step
+     */
+    private void validateCurrentThreadType() {
+        ThreadType current = getCurrentThreadContext().threadType();
+        if (current == ThreadType.STEP) {
+            var message = String.format(
+                    "Nested %s operation is not supported on %s from within a %s execution.",
+                    getType(), getName(), current);
+            // terminate execution and throw the exception
+            throw terminateExecutionWithIllegalDurableOperationException(message);
+        }
+    }
+
+    /** Returns true if this operation has completed (successfully or exceptionally). */
+    protected boolean isOperationCompleted() {
+        return completionFuture.isDone();
+    }
+
+    /**
+     * Waits for the operation to complete. Deregisters the current thread to allow Lambda suspension if the operation
+     * is still in progress, then re-registers when the operation completes.
+     *
+     * @return the completed operation
+     */
+    protected Operation waitForOperationCompletion() {
+
+        validateCurrentThreadType();
+
+        var threadContext = getCurrentThreadContext();
+
+        // It's important that we synchronize access to the future. Otherwise, a race condition could happen if the
+        // completionFuture is completed by a user thread (a step or child context thread) when the execution here
+        // is between `isOperationCompleted` and `thenRun`.
+        // If this operation is a branch/iteration of a ConcurrencyOperation (map or parallel), the branches/iterations
+        // must be completed sequentially to avoid race conditions.
+        synchronized (parentOperation == null ? completionFuture : parentOperation.completionFuture) {
+            if (!isOperationCompleted()) {
+                // Operation not done yet
+                logger.trace(
+                        "deregistering thread {} when waiting for operation {} ({}) to complete ({})",
+                        threadContext.threadId(),
+                        getOperation(),
+                        getType(),
+                        completionFuture);
+
+                // Add a completion stage to completionFuture so that when the completionFuture is completed,
+                // it will register the current Context thread synchronously to make sure it is always registered
+                // strictly before the execution thread (Step or child context) is deregistered.
+                completionFuture.thenRun(() -> registerActiveThread(threadContext.threadId()));
+
+                // Deregister the current thread to allow suspension
+                executionManager.deregisterActiveThread(threadContext.threadId());
+            }
+        }
+
+        // Block until operation completes. No-op if the future is already completed.
+        try {
+            completionFuture.join();
+        } catch (Throwable throwable) {
+            ExceptionHelper.sneakyThrow(ExceptionHelper.unwrapCompletableFuture(throwable));
+        }
+
+        // Get result based on status
+        var op = getOperation();
+        if (op == null) {
+            throw terminateExecutionWithIllegalDurableOperationException(
+                    String.format("%s operation not found: %s", getType(), getOperationId()));
+        }
+        return op;
+    }
+
+    protected void runUserHandler(Runnable runnable, ThreadType threadType) {
+        String operationId = getOperationId();
+        logger.debug("Starting user handler for operation {} ({})", operationId, threadType);
+        Runnable wrapped = () -> {
+            executionManager.setCurrentThreadContext(new ThreadContext(operationId, threadType));
+            try {
+                runnable.run();
+            } catch (Throwable throwable) {
+                // Operations always wrap the user's function and handles all possible exceptions except for
+                // SuspendExecutionException.
+                if (!executionManager.isExecutionCompletedExceptionally()
+                        && !(throwable instanceof SuspendExecutionException)) {
+                    logger.error("An unhandled exception is thrown from user function: ", throwable);
+                    throw terminateExecutionWithIllegalDurableOperationException(
+                            "An unhandled exception is thrown from user function: " + throwable);
+                }
+            } finally {
+                if (operationId != null) {
+                    try {
+                        // if this is a child context or a step context, we need to
+                        // deregister the context's thread from the execution manager
+                        executionManager.deregisterActiveThread(operationId);
+                    } catch (SuspendExecutionException e) {
+                        // Expected when this is the last active thread. Must catch here because:
+                        // 1/ This runs in a worker thread detached from handlerFuture
+                        // 2/ Uncaught exception would prevent stepAsync().get() from resume
+                        // Suspension/Termination is already signaled via
+                        // suspendExecutionFuture/terminateExecutionFuture
+                        // before the throw.
+                    }
+                }
+            }
+        };
+
+        // runUserHandler is used to ensure that only one user handler is running at a time
+        if (runningUserHandler.get() != null && !runningUserHandler.get().isDone()) {
+            logger.error("User handler already running for operation {} ({})", getOperationId(), threadType);
+            throw terminateExecutionWithIllegalDurableOperationException(
+                    "User handler already running: " + getOperationId());
+        }
+
+        // Thread registration is intentionally split across two threads:
+        // 1. registerActiveThread on the PARENT thread β€” ensures the child is tracked before the
+        //    parent can deregister and trigger suspension (race prevention).
+        // 2. setCurrentContext on the CHILD thread β€” sets the ThreadLocal so operations inside
+        //    the child context know which context they belong to.
+        // registerActiveThread is idempotent (no-op if already registered).
+        registerActiveThread(operationId);
+
+        runningUserHandler.set(CompletableFuture.runAsync(
+                wrapped, getContext().getDurableConfig().getExecutorService()));
+    }
+
+    /**
+     * Receives operation updates from ExecutionManager. Completes the internal future when the operation reaches a
+     * terminal status, unblocking any threads waiting on this operation.
+     *
+     * @param operation the updated operation state
+     */
+    public void onCheckpointComplete(Operation operation) {
+        if (ExecutionManager.isTerminalStatus(operation.status())) {
+            // This method handles only terminal status updates. Override this method if a DurableOperation needs to
+            // handle other updates.
+            logger.trace("In onCheckpointComplete, completing operation {} ({})", getOperationId(), completionFuture);
+
+            markCompletionFutureCompleted();
+        }
+    }
+
+    /** Marks the operation as already completed (in replay). */
+    protected void markAlreadyCompleted() {
+        // When the operation is already completed in a replay, we complete completionFuture immediately
+        // so that the `get` method will be unblocked and the context thread will be registered
+        logger.trace("In markAlreadyCompleted, completing operation: {} ({}).", getOperationId(), completionFuture);
+        markCompletionFutureCompleted();
+    }
+
+    private void markCompletionFutureCompleted() {
+        // It's important that we synchronize access to the future, otherwise the processing could happen
+        // on someone else's thread and cause a race condition.
+        synchronized (parentOperation == null ? completionFuture : parentOperation.completionFuture) {
+            // Completing the future here will also run any other completion stages that have been attached
+            // to the future. In our case, other contexts may have attached a function to reactivate themselves,
+            // so they will definitely have a chance to reactivate before we finish completing and deactivating
+            // whatever operations were just checkpointed.
+            completionFuture.complete(this);
+        }
+    }
+
+    /**
+     * Terminates the execution with the given exception.
+     *
+     * @param exception the unrecoverable exception
+     * @return never returns normally; always throws
+     */
+    protected RuntimeException terminateExecution(UnrecoverableDurableExecutionException exception) {
+        executionManager.terminateExecution(exception);
+        // Exception is already thrown from above. Keep the throw statement below to make tests happy
+        throw exception;
+    }
+
+    /**
+     * Terminates the execution with an {@link IllegalDurableOperationException}.
+     *
+     * @param message the error message
+     * @return never returns normally; always throws
+     */
+    protected RuntimeException terminateExecutionWithIllegalDurableOperationException(String message) {
+        return terminateExecution(new IllegalDurableOperationException(message));
+    }
+
+    /**
+     * Registers a thread as active in the execution manager.
+     *
+     * @param threadId the thread identifier to register
+     */
+    protected void registerActiveThread(String threadId) {
+        executionManager.registerActiveThread(threadId);
+    }
+
+    /** Returns the current thread's context from the execution manager. */
+    protected ThreadContext getCurrentThreadContext() {
+        return executionManager.getCurrentThreadContext();
+    }
+
+    /** Polls the backend for updates to this operation. */
+    protected CompletableFuture<Operation> pollForOperationUpdates() {
+        return executionManager.pollForOperationUpdates(getOperationId());
+    }
+
+    /**
+     * Polls the backend for updates to this operation at a specific time.
+     *
+     * @param at the time to poll for updates
+     * @return a future that completes with the updated operation
+     */
+    protected CompletableFuture<Operation> pollForOperationUpdates(Instant at) {
+        return executionManager.pollForOperationUpdates(getOperationId(), at);
+    }
+
+    /** Sends an operation update synchronously (blocks until the update is acknowledged). */
+    protected void sendOperationUpdate(OperationUpdate.Builder builder) {
+        sendOperationUpdateAsync(builder).join();
+    }
+
+    /** Sends an operation update asynchronously. */
+    protected CompletableFuture<Void> sendOperationUpdateAsync(OperationUpdate.Builder builder) {
+        var updateBuilder =
+                builder.id(getOperationId()).name(getName()).type(getType()).parentId(durableContext.getContextId());
+        if (getSubType() != null) {
+            updateBuilder.subType(getSubType().getValue());
+        }
+        return executionManager.sendOperationUpdate(updateBuilder.build());
+    }
+
+    /** Validates that current operation matches checkpointed operation during replay. */
+    protected void validateReplay(Operation checkpointed) {
+        if (checkpointed == null || checkpointed.type() == null) {
+            return; // First execution, no validation needed
+        }
+
+        if (!checkpointed.type().equals(getType())) {
+            throw terminateExecution(new NonDeterministicExecutionException(String.format(
+                    "Operation type mismatch for \"%s\". Expected %s, got %s",
+                    getOperationId(), checkpointed.type(), getType())));
+        }
+
+        if (!Objects.equals(checkpointed.name(), getName())) {
+            throw terminateExecution(new NonDeterministicExecutionException(String.format(
+                    "Operation name mismatch for \"%s\". Expected \"%s\", got \"%s\"",
+                    getOperationId(), checkpointed.name(), getName())));
+        }
+
+        if ((getSubType() == null && checkpointed.subType() != null)
+                || getSubType() != null
+                        && !Objects.equals(checkpointed.subType(), getSubType().getValue())) {
+            throw terminateExecution(new NonDeterministicExecutionException(String.format(
+                    "Operation subType mismatch for \"%s\". Expected \"%s\", got \"%s\"",
+                    getOperationId(), checkpointed.subType(), getSubType())));
+        }
+    }
+
+    public CompletableFuture<Void> getRunningUserHandler() {
+        return runningUserHandler.get();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.html new file mode 100644 index 000000000..c5a0a928f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.html @@ -0,0 +1 @@ +CallbackOperation

CallbackOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total14 of 13089%3 of 1376%31443306
get()72678%1375%142701
replay(Operation)71973%1266%132901
buildCallbackOptions()35100%1583%140701
start()22100%n/a010601
CallbackOperation(OperationIdentifier, TypeToken, CallbackConfig, DurableContextImpl)11100%n/a010301
callbackId()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.java.html new file mode 100644 index 000000000..5cc74a467 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.java.html @@ -0,0 +1,101 @@ +CallbackOperation.java

CallbackOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import software.amazon.awssdk.services.lambda.model.CallbackOptions;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableCallbackFuture;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.CallbackConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.CallbackFailedException;
+import software.amazon.lambda.durable.exception.CallbackTimeoutException;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+
+/** Durable operation for creating and waiting on external callbacks. */
+public class CallbackOperation<T> extends SerializableDurableOperation<T> implements DurableCallbackFuture<T> {
+
+    private final CallbackConfig config;
+
+    private String callbackId;
+
+    public CallbackOperation(
+            OperationIdentifier operationIdentifier,
+            TypeToken<T> resultTypeToken,
+            CallbackConfig config,
+            DurableContextImpl durableContext) {
+        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
+        this.config = config;
+    }
+
+    public String callbackId() {
+        return callbackId;
+    }
+
+    /** Starts the operation. */
+    @Override
+    protected void start() {
+        // First execution: checkpoint and get callback ID
+        var update = OperationUpdate.builder().action(OperationAction.START).callbackOptions(buildCallbackOptions());
+
+        sendOperationUpdate(update);
+
+        // Get the callback ID from the updated operation
+        var op = getOperation();
+        callbackId = op.callbackDetails().callbackId();
+
+        pollForOperationUpdates();
+    }
+
+    /** Replays the operation. */
+    @Override
+    protected void replay(Operation existing) {
+        // Replay: use existing callback ID
+        callbackId = existing.callbackDetails().callbackId();
+
+        switch (existing.status()) {
+            case SUCCEEDED, FAILED, TIMED_OUT -> {
+                // Terminal state - complete the operation immediately
+                markAlreadyCompleted();
+                return;
+            }
+            case STARTED -> {
+                // Still waiting - continue to polling
+            }
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected callback status: " + existing.status());
+        }
+        pollForOperationUpdates();
+    }
+
+    @Override
+    public T get() {
+        var op = waitForOperationCompletion();
+
+        return switch (op.status()) {
+            case SUCCEEDED -> deserializeResult(op.callbackDetails().result());
+            case FAILED -> throw new CallbackFailedException(op);
+            case TIMED_OUT -> throw new CallbackTimeoutException(op);
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected callback status: " + op.status());
+        };
+    }
+
+    private CallbackOptions buildCallbackOptions() {
+        var builder = CallbackOptions.builder();
+        if (config != null) {
+            if (config.timeout() != null) {
+                builder.timeoutSeconds((int) config.timeout().toSeconds());
+            }
+            if (config.heartbeatTimeout() != null) {
+                builder.heartbeatTimeoutSeconds((int) config.heartbeatTimeout().toSeconds());
+            }
+        }
+        return builder.build();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.html new file mode 100644 index 000000000..eecac0642 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.html @@ -0,0 +1 @@ +ChildContextOperation

ChildContextOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total43 of 39689%12 of 6280%12478103013
get()156380%31280%31031801
handleWaitForCallbackFailure()146983%6960%6922201
handleChildContextFailure(Throwable)74486%1990%1611301
replay(Operation)73282%2675%2621201
checkpointSuccess(Object)46100%8100%0501301
lambda$executeChildContext$0(String)21100%n/a010701
ChildContextOperation(OperationIdentifier, Function, TypeToken, RunInChildContextConfig, DurableContextImpl, ConcurrencyOperation)18100%n/a010401
handleChildContextSuccess(Object)14100%2100%020501
executeChildContext()12100%n/a010401
ChildContextOperation(OperationIdentifier, Function, TypeToken, RunInChildContextConfig, DurableContextImpl)9100%n/a010201
start()9100%n/a010301
lambda$handleWaitForCallbackFailure$2(Operation)8100%2100%020101
lambda$handleWaitForCallbackFailure$1(Operation)8100%2100%020101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.java.html new file mode 100644 index 000000000..bccb7ecd6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.java.html @@ -0,0 +1,268 @@ +ChildContextOperation.java

ChildContextOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import static software.amazon.lambda.durable.execution.ExecutionManager.isTerminalStatus;
+
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+import software.amazon.awssdk.services.lambda.model.ContextOptions;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.RunInChildContextConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.CallbackFailedException;
+import software.amazon.lambda.durable.exception.CallbackSubmitterException;
+import software.amazon.lambda.durable.exception.CallbackTimeoutException;
+import software.amazon.lambda.durable.exception.ChildContextFailedException;
+import software.amazon.lambda.durable.exception.DurableOperationException;
+import software.amazon.lambda.durable.exception.MapIterationFailedException;
+import software.amazon.lambda.durable.exception.ParallelBranchFailedException;
+import software.amazon.lambda.durable.exception.StepFailedException;
+import software.amazon.lambda.durable.exception.StepInterruptedException;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Manages the lifecycle of a child execution context.
+ *
+ * <p>A child context runs a user function in a separate thread with its own operation counter and checkpoint log.
+ * Operations within the child context use the child's context ID as their parentId.
+ *
+ * <p>When created as part of a {@link ConcurrencyOperation} (e.g., parallel execution), the child notifies its parent
+ * on completion via {@code onItemComplete()} BEFORE closing its own child context. It also skips checkpointing if the
+ * parent operation has already succeeded.
+ */
+public class ChildContextOperation<T> extends SerializableDurableOperation<T> {
+
+    private static final int LARGE_RESULT_THRESHOLD = 256 * 1024;
+
+    private final Function<DurableContext, T> function;
+    private final AtomicBoolean replayChildren = new AtomicBoolean(false);
+    private T reconstructedResult;
+
+    public ChildContextOperation(
+            OperationIdentifier operationIdentifier,
+            Function<DurableContext, T> function,
+            TypeToken<T> resultTypeToken,
+            RunInChildContextConfig config,
+            DurableContextImpl durableContext) {
+        this(operationIdentifier, function, resultTypeToken, config, durableContext, null);
+    }
+
+    public ChildContextOperation(
+            OperationIdentifier operationIdentifier,
+            Function<DurableContext, T> function,
+            TypeToken<T> resultTypeToken,
+            RunInChildContextConfig config,
+            DurableContextImpl durableContext,
+            ConcurrencyOperation<?> parentOperation) {
+        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext, parentOperation);
+        this.function = function;
+    }
+
+    /** Starts the operation. */
+    @Override
+    protected void start() {
+        // First execution: fire-and-forget START checkpoint, then run
+        sendOperationUpdateAsync(OperationUpdate.builder().action(OperationAction.START));
+        executeChildContext();
+    }
+
+    /** Replays the operation. */
+    @Override
+    protected void replay(Operation existing) {
+        switch (existing.status()) {
+            case SUCCEEDED -> {
+                if (existing.contextDetails() != null
+                        && Boolean.TRUE.equals(existing.contextDetails().replayChildren())) {
+                    // Large result: re-execute child context to reconstruct result
+                    replayChildren.set(true);
+                    executeChildContext();
+                } else {
+                    markAlreadyCompleted();
+                }
+            }
+            case FAILED -> markAlreadyCompleted();
+            case STARTED -> executeChildContext();
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected child context status: " + existing.status());
+        }
+    }
+
+    private void executeChildContext() {
+        // The operationId is already globally unique (prefixed by parent context path via
+        // DurableContext.nextOperationId), so we use it directly as the contextId.
+        // E.g., first level child context "hash(1)",
+        //       second level child context "hash(hash(1)-2)",
+        //       third level child context "hash(hash(hash(1)-2)-1)".
+        var contextId = getOperationId();
+
+        Runnable userHandler = () -> {
+            // use a try-with-resources to
+            // - add thread id/type to thread local when the step starts
+            // - clear logger properties when the step finishes
+            //
+            // When this child is part of a ConcurrencyOperation (parentOperation != null),
+            // we notify the parent BEFORE closing the child context. This ensures the parent
+            // can trigger the next queued branch while the current child context is still valid.
+            try (var childContext = getContext().createChildContext(contextId, getName())) {
+                try {
+                    T result = function.apply(childContext);
+
+                    handleChildContextSuccess(result);
+                } catch (Throwable e) {
+                    handleChildContextFailure(e);
+                }
+            }
+        };
+
+        // Execute user provided child context code in user-configured executor
+        runUserHandler(userHandler, ThreadType.CONTEXT);
+    }
+
+    private void handleChildContextSuccess(T result) {
+        if (replayChildren.get()) {
+            // Replaying a SUCCEEDED child with replayChildren=true β€” skip checkpointing.
+            // Mark the completableFuture completed so get() doesn't block waiting for a checkpoint response.
+            this.reconstructedResult = result;
+            markAlreadyCompleted();
+        } else {
+            checkpointSuccess(result);
+        }
+    }
+
+    private void checkpointSuccess(T result) {
+        // Skip checkpointing if parent ConcurrencyOperation has already completed β€”
+        // prevents race conditions where a child finishes after the parent has already completed.
+        if (parentOperation != null && parentOperation.isOperationCompleted()) {
+            return;
+        }
+
+        var serialized = serializeResult(result);
+
+        if (serialized == null || serialized.getBytes(StandardCharsets.UTF_8).length < LARGE_RESULT_THRESHOLD) {
+            sendOperationUpdate(
+                    OperationUpdate.builder().action(OperationAction.SUCCEED).payload(serialized));
+        } else {
+            // Large result: checkpoint with empty payload + ReplayChildren flag.
+            // Store the result so get() can return it directly without deserializing the empty payload.
+            this.reconstructedResult = result;
+            sendOperationUpdate(OperationUpdate.builder()
+                    .action(OperationAction.SUCCEED)
+                    .payload("")
+                    .contextOptions(
+                            ContextOptions.builder().replayChildren(true).build()));
+        }
+    }
+
+    private void handleChildContextFailure(Throwable exception) {
+        exception = ExceptionHelper.unwrapCompletableFuture(exception);
+        if (exception instanceof SuspendExecutionException suspendExecutionException) {
+            // Rethrow Error immediately β€” do not checkpoint
+            throw suspendExecutionException;
+        }
+        if (exception instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
+            // terminate the execution and throw the exception if it's not recoverable
+            throw terminateExecution(unrecoverableDurableExecutionException);
+        }
+
+        // Skip checkpointing if parent ConcurrencyOperation has already completed β€”
+        // prevents race conditions where a child finishes after the parent has already succeeded.
+        if (parentOperation != null && parentOperation.isOperationCompleted()) {
+            return;
+        }
+
+        final ErrorObject errorObject;
+        if (exception instanceof DurableOperationException opEx) {
+            errorObject = opEx.getErrorObject();
+        } else {
+            errorObject = serializeException(exception);
+        }
+
+        sendOperationUpdate(
+                OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject));
+    }
+
+    @Override
+    public T get() {
+        var op = waitForOperationCompletion();
+
+        if (op.status() == OperationStatus.SUCCEEDED) {
+            if (reconstructedResult != null) {
+                return reconstructedResult;
+            }
+            var contextDetails = op.contextDetails();
+            var result = (contextDetails != null) ? contextDetails.result() : null;
+            return deserializeResult(result);
+        } else {
+            var contextDetails = op.contextDetails();
+            var errorObject = (contextDetails != null) ? contextDetails.error() : null;
+
+            // Attempt to reconstruct and throw the original exception
+            Throwable original = deserializeException(errorObject);
+            if (original != null) {
+                ExceptionHelper.sneakyThrow(original);
+            }
+
+            // throw a general failed exception if a user exception is not reconstructed
+            return switch (getSubType()) {
+                case WAIT_FOR_CALLBACK -> handleWaitForCallbackFailure();
+                case MAP_ITERATION -> throw new MapIterationFailedException(op);
+                case PARALLEL_BRANCH -> throw new ParallelBranchFailedException(op);
+                case RUN_IN_CHILD_CONTEXT -> throw new ChildContextFailedException(op);
+
+                // the following subtypes should not be able to reach here
+                case PARALLEL, MAP, WAIT_FOR_CONDITION ->
+                    throw new IllegalStateException("Unexpected sub-type: " + getSubType());
+            };
+        }
+    }
+
+    private T handleWaitForCallbackFailure() {
+        var childrenOps = getChildOperations();
+        var callbackOp = childrenOps.stream()
+                .filter(o -> o.type() == OperationType.CALLBACK)
+                .findFirst()
+                .orElse(null);
+        var submitterOp = childrenOps.stream()
+                .filter(o -> o.type() == OperationType.STEP)
+                .findFirst()
+                .orElse(null);
+        if (callbackOp != null) {
+            // if callback failed
+            if (isTerminalStatus(callbackOp.status())) {
+                switch (callbackOp.status()) {
+                    case FAILED -> throw new CallbackFailedException(callbackOp);
+                    case TIMED_OUT -> throw new CallbackTimeoutException(callbackOp);
+                }
+            }
+
+            // if submitter failed
+            if (submitterOp != null
+                    && isTerminalStatus(submitterOp.status())
+                    && submitterOp.status() != OperationStatus.SUCCEEDED) {
+                var stepError = submitterOp.stepDetails().error();
+                if (StepInterruptedException.isStepInterruptedException(stepError)) {
+                    throw new CallbackSubmitterException(callbackOp, new StepInterruptedException(submitterOp));
+                } else {
+                    throw new CallbackSubmitterException(callbackOp, new StepFailedException(submitterOp));
+                }
+            }
+        }
+
+        throw new IllegalStateException("Unknown waitForCallback status");
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.html new file mode 100644 index 000000000..20f2191f7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.html @@ -0,0 +1 @@ +ConcurrencyOperation

ConcurrencyOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total56 of 49288%9 of 4680%83914114016
handleException(Throwable)211134%3125%234701
waitForChildCompletion(AtomicInteger, AtomicInteger, Set)137885%2675%2542201
lambda$executeItems$0(AtomicInteger, AtomicInteger, Set)129088%31381%3942701
join()102066%1375%132701
ConcurrencyOperation(OperationIdentifier, TypeToken, SerDes, DurableContextImpl, int, Integer, Integer)56100%n/a0101101
canComplete(AtomicInteger, AtomicInteger, Set)41100%14100%080901
enqueueItem(String, Function, TypeToken, SerDes, OperationSubType)33100%n/a010701
onItemComplete(AtomicInteger, AtomicInteger, ChildContextOperation)31100%n/a010901
executeItems()25100%n/a010601
createItem(String, String, Function, TypeToken, SerDes, OperationSubType, DurableContextImpl)17100%n/a010301
notifyConsumerThread()16100%n/a010401
lambda$waitForChildCompletion$2(ThreadContext)5100%n/a010101
static {...}4100%n/a010101
getBranches()3100%n/a010101
lambda$waitForChildCompletion$3(Object)3100%n/a010101
lambda$waitForChildCompletion$1(int)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.java.html new file mode 100644 index 000000000..1cb0fdbbd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.java.html @@ -0,0 +1,343 @@ +ConcurrencyOperation.java

ConcurrencyOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.RunInChildContextConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.execution.OperationIdGenerator;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Abstract base class for concurrent execution of multiple child context operations.
+ *
+ * <p>Encapsulates shared concurrency logic: queue-based concurrency control, success/failure counting, and completion
+ * checking. Both {@code ParallelOperation} and {@code MapOperation} extend this base.
+ *
+ * <p>Key design points:
+ *
+ * <ul>
+ *   <li>Does NOT register its own thread β€” child context threads handle all suspension
+ *   <li>Uses a pending queue + running counter for concurrency control
+ *   <li>Completion is determined by subclass-specific logic via abstract {@code canComplete()} and
+ *       {@code validateItemCount()}
+ *   <li>When a child suspends, the running count is NOT decremented
+ * </ul>
+ *
+ * @param <T> the result type of this operation
+ */
+public abstract class ConcurrencyOperation<T> extends SerializableDurableOperation<T> {
+
+    private static final Logger logger = LoggerFactory.getLogger(ConcurrencyOperation.class);
+
+    private final int maxConcurrency;
+    private final Integer minSuccessful;
+    private final Integer toleratedFailureCount;
+    private final OperationIdGenerator operationIdGenerator;
+    private final DurableContextImpl rootContext;
+
+    // access by context thread only
+    private final List<ChildContextOperation<?>> branches = Collections.synchronizedList(new ArrayList<>());
+
+    // put only by context thread and consume only by consumer thread
+    private final Queue<ChildContextOperation<?>> pendingQueue = new ConcurrentLinkedDeque<>();
+
+    // set by context thread and used by consumer thread
+    protected final AtomicBoolean isJoined = new AtomicBoolean(false);
+
+    // used to wake up consumer thread for either new items or checking completion condition (isJoined changed)
+    private final AtomicReference<CompletableFuture<BaseDurableOperation>> consumerThreadListener;
+
+    protected ConcurrencyOperation(
+            OperationIdentifier operationIdentifier,
+            TypeToken<T> resultTypeToken,
+            SerDes resultSerDes,
+            DurableContextImpl durableContext,
+            int maxConcurrency,
+            Integer minSuccessful,
+            Integer toleratedFailureCount) {
+        super(operationIdentifier, resultTypeToken, resultSerDes, durableContext);
+        this.maxConcurrency = maxConcurrency;
+        this.minSuccessful = minSuccessful;
+        this.toleratedFailureCount = toleratedFailureCount;
+        this.operationIdGenerator = new OperationIdGenerator(getOperationId());
+        this.rootContext = durableContext.createChildContext(getOperationId(), getName());
+        this.consumerThreadListener = new AtomicReference<>(new CompletableFuture<>());
+    }
+
+    // ========== Template methods for subclasses ==========
+
+    /**
+     * Creates a child context operation for a single item (branch or iteration).
+     *
+     * @param operationId the unique operation ID for this item
+     * @param name the name of this item
+     * @param function the user function to execute
+     * @param resultType the result type token
+     * @param branchSubType the sub-type of the branch operation
+     * @param parentContext the parent durable context
+     * @param <R> the result type of the child operation
+     * @return a new ChildContextOperation
+     */
+    protected <R> ChildContextOperation<R> createItem(
+            String operationId,
+            String name,
+            Function<DurableContext, R> function,
+            TypeToken<R> resultType,
+            SerDes serDes,
+            OperationSubType branchSubType,
+            DurableContextImpl parentContext) {
+        return new ChildContextOperation<>(
+                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, branchSubType),
+                function,
+                resultType,
+                RunInChildContextConfig.builder().serDes(serDes).build(),
+                parentContext,
+                this);
+    }
+
+    /** Called when the concurrency operation completes. Subclasses define checkpointing behavior. */
+    protected abstract void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus);
+
+    // ========== Concurrency control ==========
+
+    /**
+     * Creates and enqueues an item without starting execution. Use {@link #executeItems()} to begin execution after all
+     * items have been enqueued. This prevents early termination from blocking item creation when all items are known
+     * upfront (e.g., map operations).
+     */
+    protected <R> ChildContextOperation<R> enqueueItem(
+            String name,
+            Function<DurableContext, R> function,
+            TypeToken<R> resultType,
+            SerDes serDes,
+            OperationSubType branchSubType) {
+        var operationId = this.operationIdGenerator.nextOperationId();
+        var childOp = createItem(operationId, name, function, resultType, serDes, branchSubType, this.rootContext);
+        branches.add(childOp);
+        pendingQueue.add(childOp);
+        logger.debug("Item enqueued {}", name);
+        // notify the consumer thread a new item is available
+        notifyConsumerThread();
+        return childOp;
+    }
+
+    private void notifyConsumerThread() {
+        synchronized (completionFuture) {
+            consumerThreadListener.get().complete(null);
+        }
+    }
+
+    /** Starts execution of all enqueued items. */
+    protected void executeItems() {
+        // variables accessed only by the consumer thread. Put them here to avoid accidentally used by other threads
+        Set<BaseDurableOperation> runningChildren = new HashSet<>();
+        AtomicInteger succeededCount = new AtomicInteger(0);
+        AtomicInteger failedCount = new AtomicInteger(0);
+
+        Runnable consumer = () -> {
+            try {
+                while (true) {
+                    // Set a new future if it's completed so that it will be able to receive a notification of
+                    // new items when the thread is checking completion condition and processing
+                    // the queued items below.
+                    synchronized (completionFuture) {
+                        if (consumerThreadListener.get() != null
+                                && consumerThreadListener.get().isDone()) {
+                            consumerThreadListener.set(new CompletableFuture<>());
+                        }
+                    }
+
+                    // Process completion condition. Quit the loop if the condition is met.
+                    if (isOperationCompleted()) {
+                        return;
+                    }
+                    var completionStatus = canComplete(succeededCount, failedCount, runningChildren);
+                    if (completionStatus != null) {
+                        handleCompletion(completionStatus);
+                        return;
+                    }
+
+                    // process new items in the queue
+                    while (runningChildren.size() < maxConcurrency && !pendingQueue.isEmpty()) {
+                        var next = pendingQueue.poll();
+                        runningChildren.add(next);
+                        logger.debug("Executing operation {}", next.getName());
+                        next.execute();
+                    }
+
+                    // If consumerThreadListener has been completed when processing above, waitForChildCompletion will
+                    // immediately return null and repeat the above again
+                    var child = waitForChildCompletion(succeededCount, failedCount, runningChildren);
+
+                    // child may be null if the consumer thread is woken up due to new items added or completion
+                    // condition
+                    // changed
+                    if (child != null) {
+                        if (runningChildren.contains(child)) {
+                            runningChildren.remove(child);
+                            onItemComplete(succeededCount, failedCount, (ChildContextOperation<?>) child);
+                        } else {
+                            throw new IllegalStateException("Unexpected completion: " + child);
+                        }
+                    }
+                }
+            } catch (Throwable ex) {
+                handleException(ex);
+            }
+        };
+        // run consumer in the user thread pool, although it's not a real user thread
+        runUserHandler(consumer, ThreadType.CONTEXT);
+    }
+
+    private void handleException(Throwable ex) {
+        Throwable throwable = ExceptionHelper.unwrapCompletableFuture(ex);
+        if (throwable instanceof SuspendExecutionException suspendExecutionException) {
+            // Rethrow Error immediately β€” do not checkpoint
+            throw suspendExecutionException;
+        }
+        if (throwable instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
+            throw terminateExecution(unrecoverableDurableExecutionException);
+        }
+
+        throw terminateExecutionWithIllegalDurableOperationException(
+                String.format("Unexpected exception in concurrency operation: %s", throwable));
+    }
+
+    private BaseDurableOperation waitForChildCompletion(
+            AtomicInteger succeededCount, AtomicInteger failedCount, Set<BaseDurableOperation> runningChildren) {
+        var threadContext = getCurrentThreadContext();
+        CompletableFuture<Object> future;
+
+        synchronized (completionFuture) {
+            // check again in synchronized block to prevent race conditions
+            if (isOperationCompleted()) {
+                return null;
+            }
+            var completionStatus = canComplete(succeededCount, failedCount, runningChildren);
+            if (completionStatus != null) {
+                return null;
+            }
+            ArrayList<CompletableFuture<BaseDurableOperation>> futures;
+            futures = new ArrayList<>(runningChildren.stream()
+                    .map(BaseDurableOperation::getCompletionFuture)
+                    .toList());
+            if (futures.size() < maxConcurrency) {
+                // add a future to listen to the new items if there is a vacancy
+                consumerThreadListener.compareAndSet(null, new CompletableFuture<>());
+                futures.add(consumerThreadListener.get());
+            }
+
+            // future will be completed immediately if any future of the list is already completed
+            future = CompletableFuture.anyOf(futures.toArray(CompletableFuture[]::new));
+            // skip deregistering the current thread if there is more completed future to process
+            if (!future.isDone()) {
+                future.thenRun(() -> registerActiveThread(threadContext.threadId()));
+                // Deregister the current thread to allow suspension
+                executionManager.deregisterActiveThread(threadContext.threadId());
+            }
+        }
+        try {
+            return future.thenApply(o -> (BaseDurableOperation) o).join();
+        } catch (Throwable throwable) {
+            ExceptionHelper.sneakyThrow(ExceptionHelper.unwrapCompletableFuture(throwable));
+            throw throwable;
+        }
+    }
+
+    /**
+     * Called by a ChildContextOperation BEFORE it closes its child context. Updates counters, checks completion
+     * criteria, and either triggers the next queued item or completes the operation.
+     *
+     * @param child the child operation that completed
+     */
+    private void onItemComplete(
+            AtomicInteger succeededCount, AtomicInteger failedCount, ChildContextOperation<?> child) {
+        // Evaluate child result outside the lock β€” child.get() may block waiting for a checkpoint response.
+        logger.debug("OnItemComplete called by {}, Id: {}", child.getName(), child.getOperationId());
+        try {
+            child.get();
+            logger.debug("Result succeeded - {}", child.getName());
+            succeededCount.incrementAndGet();
+        } catch (Throwable e) {
+            logger.debug("Child operation {} failed: {}", child.getOperationId(), e.getMessage());
+            failedCount.incrementAndGet();
+        }
+    }
+
+    // ========== Completion logic ==========
+    /**
+     * Checks whether the concurrency operation can be considered complete.
+     *
+     * @return the completion status if the operation is complete, or null if it should continue
+     */
+    private ConcurrencyCompletionStatus canComplete(
+            AtomicInteger succeededCount, AtomicInteger failedCount, Set<BaseDurableOperation> runningChildren) {
+        int succeeded = succeededCount.get();
+        int failed = failedCount.get();
+
+        // If we've met the minimum successful count, we're done
+        if (minSuccessful != null && succeeded >= minSuccessful) {
+            return ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED;
+        }
+
+        // If we've exceeded the failure tolerance, we're done
+        if (toleratedFailureCount != null && failed > toleratedFailureCount) {
+            return ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED;
+        }
+
+        // All items finished β€” complete
+        // This condition relies on isJoined, so the consumer will wake up and check this again when
+        // isJoined is set to true.
+        if (isJoined.get() && pendingQueue.isEmpty() && runningChildren.isEmpty()) {
+            return ConcurrencyCompletionStatus.ALL_COMPLETED;
+        }
+
+        return null;
+    }
+
+    /**
+     * Blocks the calling thread until the concurrency operation reaches a terminal state. Validates item count, handles
+     * zero-branch case, then delegates to {@code waitForOperationCompletion()} from BaseDurableOperation.
+     */
+    protected void join() {
+        if (minSuccessful != null && minSuccessful > branches.size()) {
+            throw new IllegalStateException("minSuccessful (" + minSuccessful
+                    + ") exceeds the number of registered items (" + branches.size() + ")");
+        }
+        isJoined.set(true);
+
+        // Notify the consumer thread this concurrency operation is joined. Consumer thread need to check the
+        // completion condition again.
+        notifyConsumerThread();
+        waitForOperationCompletion();
+    }
+
+    protected List<ChildContextOperation<?>> getBranches() {
+        return branches;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.html new file mode 100644 index 000000000..be22b7d68 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.html @@ -0,0 +1 @@ +InvokeOperation

InvokeOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 12294%2 of 1283%21323305
replay(Operation)61470%1266%132601
get()14397%1685%160901
InvokeOperation(OperationIdentifier, String, Object, TypeToken, InvokeConfig, DurableContextImpl)27100%2100%020601
startInvocation()25100%n/a010901
start()6100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.java.html new file mode 100644 index 000000000..71dcf3813 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.java.html @@ -0,0 +1,98 @@ +InvokeOperation.java

InvokeOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import software.amazon.awssdk.services.lambda.model.ChainedInvokeOptions;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.InvokeConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.InvokeException;
+import software.amazon.lambda.durable.exception.InvokeFailedException;
+import software.amazon.lambda.durable.exception.InvokeStoppedException;
+import software.amazon.lambda.durable.exception.InvokeTimedOutException;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Durable operation that invokes another Lambda function and waits for its result.
+ *
+ * @param <T> the result type from the invoked function
+ * @param <I> the payload type sent to the invoked function
+ */
+public class InvokeOperation<T, I> extends SerializableDurableOperation<T> {
+    private final String functionName;
+    private final I payload;
+    private final InvokeConfig invokeConfig;
+    private final SerDes payloadSerDes;
+
+    public InvokeOperation(
+            OperationIdentifier operationIdentifier,
+            String functionName,
+            I payload,
+            TypeToken<T> resultTypeToken,
+            InvokeConfig config,
+            DurableContextImpl durableContext) {
+        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
+
+        this.functionName = functionName;
+        this.payload = payload;
+        this.invokeConfig = config;
+        this.payloadSerDes = config.payloadSerDes() != null ? config.payloadSerDes() : config.serDes();
+    }
+
+    /** Starts the operation. */
+    @Override
+    protected void start() {
+        startInvocation();
+        pollForOperationUpdates();
+    }
+
+    /** Replays the operation. */
+    @Override
+    protected void replay(Operation existing) {
+        switch (existing.status()) {
+            // The result isn't ready. Need to wait more
+            case STARTED -> pollForOperationUpdates();
+            case SUCCEEDED, FAILED, TIMED_OUT, STOPPED -> markAlreadyCompleted();
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected invoke status: " + existing.statusAsString());
+        }
+    }
+
+    private void startInvocation() {
+        var update = OperationUpdate.builder()
+                .action(OperationAction.START)
+                .chainedInvokeOptions(ChainedInvokeOptions.builder()
+                        .functionName(functionName)
+                        .tenantId(invokeConfig.tenantId())
+                        .build())
+                .payload(payloadSerDes.serialize(this.payload));
+
+        sendOperationUpdate(update);
+    }
+
+    /**
+     * Blocks until the operation completes and returns the result.
+     *
+     * @return the operation result
+     */
+    @Override
+    public T get() {
+        var op = waitForOperationCompletion();
+        var invokeDetails = op.chainedInvokeDetails();
+        var result = invokeDetails != null ? invokeDetails.result() : null;
+        return switch (op.status()) {
+            case SUCCEEDED -> deserializeResult(result);
+            case FAILED -> throw new InvokeFailedException(op);
+            case TIMED_OUT -> throw new InvokeTimedOutException(op);
+            case STOPPED -> throw new InvokeStoppedException(op);
+            // Unexpected status which should not happen. This is added for forward-compatibility.
+            default -> throw new InvokeException(op);
+        };
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation$1.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation$1.html new file mode 100644 index 000000000..b6e4a8906 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation$1.html @@ -0,0 +1 @@ +MapOperation.new TypeToken() {...}

MapOperation.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 3100%0 of 0n/a010101
{...}3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.html new file mode 100644 index 000000000..073b474ac --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.html @@ -0,0 +1 @@ +MapOperation

MapOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total35 of 35990%9 of 4580%93199508
handleCompletion(ConcurrencyCompletionStatus)1211090%2880%2633101
MapOperation(OperationIdentifier, List, DurableContext.MapFunction, TypeToken, MapConfig, DurableContextImpl)104882%1375%1321501
replay(Operation)103276%3666%3641501
addAllItems()23995%1375%130601
get()3096%1583%140801
getToleratedFailureCount(CompletionConfig, int)38100%1990%1601101
start()20100%2100%020801
lambda$addAllItems$0(Object, int, DurableContext)7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.java.html new file mode 100644 index 000000000..9a94eac51 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.java.html @@ -0,0 +1,219 @@ +MapOperation.java

MapOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import software.amazon.awssdk.services.lambda.model.ContextOptions;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.CompletionConfig;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
+import software.amazon.lambda.durable.model.MapResult;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
+ * own child context.
+ *
+ * <p>Extends {@link ConcurrencyOperation} following the same pattern as {@link ParallelOperation}. All branches are
+ * created upfront in {@code start()}/{@code replay()}, and results are aggregated into a {@link MapResult} in
+ * {@code get()}.
+ *
+ * @param <I> the input item type
+ * @param <O> the output result type per item
+ */
+public class MapOperation<I, O> extends ConcurrencyOperation<MapResult<O>> {
+
+    private static final int LARGE_RESULT_THRESHOLD = 256 * 1024;
+
+    private final List<I> items;
+    private final DurableContext.MapFunction<I, O> function;
+    private final TypeToken<O> itemResultType;
+    private final SerDes serDes;
+    private boolean replayFromPayload;
+    private volatile MapResult<O> cachedResult;
+
+    public MapOperation(
+            OperationIdentifier operationIdentifier,
+            List<I> items,
+            DurableContext.MapFunction<I, O> function,
+            TypeToken<O> itemResultType,
+            MapConfig config,
+            DurableContextImpl durableContext) {
+        super(
+                operationIdentifier,
+                new TypeToken<>() {},
+                config.serDes(),
+                durableContext,
+                config.maxConcurrency(),
+                config.completionConfig().minSuccessful(),
+                getToleratedFailureCount(config.completionConfig(), items.size()));
+        if (config.completionConfig().minSuccessful() != null
+                && config.completionConfig().minSuccessful() > items.size()) {
+            throw new IllegalArgumentException("minSuccessful cannot be greater than total items: "
+                    + config.completionConfig().minSuccessful() + " > " + items.size());
+        }
+        this.items = List.copyOf(items);
+        this.function = function;
+        this.itemResultType = itemResultType;
+        this.serDes = config.serDes();
+
+        addAllItems();
+    }
+
+    private void addAllItems() {
+        // Enqueue all items first, then start execution. This prevents early termination
+        // criteria (e.g., minSuccessful) from completing the operation mid-loop on replay,
+        // which would cause subsequent enqueue calls to fail with "completed operation".
+        var branchPrefix = getName() == null ? "map-iteration-" : getName() + "-iteration-";
+        for (int i = 0; i < items.size(); i++) {
+            var index = i;
+            var item = items.get(i);
+            enqueueItem(
+                    branchPrefix + i,
+                    childCtx -> function.apply(item, index, childCtx),
+                    itemResultType,
+                    serDes,
+                    OperationSubType.MAP_ITERATION);
+        }
+    }
+
+    private static Integer getToleratedFailureCount(CompletionConfig completionConfig, int totalItems) {
+        if (completionConfig == null
+                || (completionConfig.toleratedFailureCount() == null
+                        && completionConfig.toleratedFailurePercentage() == null)) {
+            // neither toleratedFailureCount nor toleratedFailurePercentage is specified.
+            return null;
+        }
+        int toleratedFailureCount = completionConfig.toleratedFailureCount() != null
+                ? completionConfig.toleratedFailureCount()
+                : Integer.MAX_VALUE;
+
+        // convert percentage to count
+        int toleratedFailureCountFromPercentage = completionConfig.toleratedFailurePercentage() != null
+                ? (int) Math.floor(totalItems * completionConfig.toleratedFailurePercentage())
+                : Integer.MAX_VALUE;
+        // minimum of two if both count and percentage is specified
+        return Math.min(toleratedFailureCount, toleratedFailureCountFromPercentage);
+    }
+
+    @Override
+    protected void start() {
+        if (items.isEmpty()) {
+            markAlreadyCompleted();
+            return;
+        }
+        sendOperationUpdateAsync(OperationUpdate.builder()
+                .action(OperationAction.START)
+                .subType(getSubType().getValue()));
+
+        executeItems();
+    }
+
+    @Override
+    protected void replay(Operation existing) {
+        if (items.isEmpty()) {
+            markAlreadyCompleted();
+            return;
+        }
+        switch (existing.status()) {
+            case SUCCEEDED -> {
+                if (existing.contextDetails() != null
+                        && Boolean.TRUE.equals(existing.contextDetails().replayChildren())) {
+                    // Large result: re-execute children to reconstruct MapResult
+                    executeItems();
+                } else {
+                    // Small result: MapResult is in the payload, skip child replay
+                    replayFromPayload = true;
+                    markAlreadyCompleted();
+                }
+            }
+            case STARTED -> {
+                // Map was in progress when interrupted β€” re-create children without sending
+                // another START (the backend rejects duplicate START for existing operations)
+                executeItems();
+            }
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected map operation status: " + existing.status());
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    protected void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus) {
+        var children = getBranches();
+        var resultItems = new ArrayList<MapResult.MapResultItem<O>>(Collections.nCopies(items.size(), null));
+
+        for (int i = 0; i < children.size(); i++) {
+            var branch = (ChildContextOperation<O>) children.get(i);
+            if (!branch.isOperationCompleted()) {
+                resultItems.set(i, MapResult.MapResultItem.skipped());
+            } else {
+                try {
+                    resultItems.set(i, MapResult.MapResultItem.succeeded(branch.get()));
+                } catch (Throwable exception) {
+                    Throwable throwable = ExceptionHelper.unwrapCompletableFuture(exception);
+                    if (throwable instanceof SuspendExecutionException suspendExecutionException) {
+                        // Rethrow Error immediately β€” do not checkpoint
+                        throw suspendExecutionException;
+                    }
+                    if (throwable
+                            instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
+                        // terminate the execution and throw the exception if it's not recoverable
+                        throw terminateExecution(unrecoverableDurableExecutionException);
+                    }
+                    resultItems.set(i, MapResult.MapResultItem.failed(MapResult.MapError.of(throwable)));
+                }
+            }
+        }
+
+        this.cachedResult = new MapResult<>(resultItems, concurrencyCompletionStatus);
+        var serialized = serializeResult(cachedResult);
+        var serializedBytes = serialized.getBytes(java.nio.charset.StandardCharsets.UTF_8);
+
+        if (serializedBytes.length < LARGE_RESULT_THRESHOLD) {
+            sendOperationUpdate(OperationUpdate.builder()
+                    .action(OperationAction.SUCCEED)
+                    .subType(getSubType().getValue())
+                    .payload(serialized));
+        } else {
+            // Large result: checkpoint with empty payload + replayChildren flag
+            sendOperationUpdate(OperationUpdate.builder()
+                    .action(OperationAction.SUCCEED)
+                    .subType(getSubType().getValue())
+                    .payload("")
+                    .contextOptions(
+                            ContextOptions.builder().replayChildren(true).build()));
+        }
+    }
+
+    @Override
+    public MapResult<O> get() {
+        if (items.isEmpty()) {
+            return MapResult.empty();
+        }
+        if (replayFromPayload) {
+            // Small result replay: deserialize MapResult directly from checkpoint payload
+            var op = waitForOperationCompletion();
+            var result = (op.contextDetails() != null) ? op.contextDetails().result() : null;
+            return deserializeResult(result);
+        }
+        // First execution or large result replay: wait for children, then aggregate
+        join();
+        return cachedResult;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.html new file mode 100644 index 000000000..8029ecae0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.html @@ -0,0 +1 @@ +ParallelOperation

ParallelOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 15596%1 of 1693%11714309
branch(String, TypeToken, Function, ParallelBranchConfig)52382%1375%131401
handleCompletion(ConcurrencyCompletionStatus)50100%2100%0201601
ParallelOperation(OperationIdentifier, SerDes, DurableContextImpl, ParallelConfig)19100%n/a010701
start()13100%n/a010501
lambda$handleCompletion$1(ChildContextOperation)12100%4100%030101
lambda$handleCompletion$0(ChildContextOperation)12100%4100%030101
replay(Operation)8100%n/a010301
close()8100%2100%020401
get()5100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.java.html new file mode 100644 index 000000000..8ffd3c359 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.java.html @@ -0,0 +1,131 @@ +ParallelOperation.java

ParallelOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.util.function.Function;
+import software.amazon.awssdk.services.lambda.model.ContextOptions;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.ParallelDurableFuture;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.ParallelBranchConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.execution.ExecutionManager;
+import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.model.ParallelResult;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Manages parallel execution of multiple branches as child context operations.
+ *
+ * <p>Extends {@link ConcurrencyOperation} to provide parallel-specific behavior:
+ *
+ * <ul>
+ *   <li>Creates branches as {@link ChildContextOperation} with {@link OperationSubType#PARALLEL_BRANCH}
+ *   <li>Checkpoints SUCCESS on the parallel context when completion criteria are met
+ *   <li>Returns a {@link ParallelResult} summarising branch outcomes
+ * </ul>
+ *
+ * <p>Context hierarchy:
+ *
+ * <pre>
+ * DurableContext (root)
+ *   └── ParallelOperation context (ChildContextOperation with PARALLEL subtype)
+ *         β”œβ”€β”€ Branch 1 context (ChildContextOperation with PARALLEL_BRANCH)
+ *         β”œβ”€β”€ Branch 2 context (ChildContextOperation with PARALLEL_BRANCH)
+ *         └── Branch N context (ChildContextOperation with PARALLEL_BRANCH)
+ * </pre>
+ */
+public class ParallelOperation extends ConcurrencyOperation<ParallelResult> implements ParallelDurableFuture {
+
+    // this field could be written and read in different threads
+    private volatile boolean skipCheckpoint = false;
+    private volatile ParallelResult cachedResult;
+
+    public ParallelOperation(
+            OperationIdentifier operationIdentifier,
+            SerDes resultSerDes,
+            DurableContextImpl durableContext,
+            ParallelConfig config) {
+        super(
+                operationIdentifier,
+                TypeToken.get(ParallelResult.class),
+                resultSerDes,
+                durableContext,
+                config.maxConcurrency(),
+                config.completionConfig().minSuccessful(),
+                config.completionConfig().toleratedFailureCount());
+    }
+
+    @Override
+    protected void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus) {
+        var items = getBranches();
+        int succeededCount = Math.toIntExact(items.stream()
+                .filter(item ->
+                        item.getOperation() != null && item.getOperation().status() == OperationStatus.SUCCEEDED)
+                .count());
+        int failedCount = Math.toIntExact(items.stream()
+                .filter(item ->
+                        item.getOperation() != null && item.getOperation().status() != OperationStatus.SUCCEEDED)
+                .count());
+        this.cachedResult = new ParallelResult(items.size(), succeededCount, failedCount, concurrencyCompletionStatus);
+        if (skipCheckpoint) {
+            // Do not send checkpoint during replay
+            markAlreadyCompleted();
+            return;
+        }
+        sendOperationUpdate(OperationUpdate.builder()
+                .action(OperationAction.SUCCEED)
+                .subType(getSubType().getValue())
+                .contextOptions(ContextOptions.builder().replayChildren(true).build()));
+    }
+
+    @Override
+    protected void start() {
+        sendOperationUpdateAsync(OperationUpdate.builder()
+                .action(OperationAction.START)
+                .subType(getSubType().getValue()));
+
+        executeItems();
+    }
+
+    @Override
+    protected void replay(Operation existing) {
+        // No-op: child branches handle their own replay via ChildContextOperation.replay().
+        // Set replaying=true so handleSuccess() skips re-checkpointing the already-completed parallel context.
+        skipCheckpoint = ExecutionManager.isTerminalStatus(existing.status());
+        executeItems();
+    }
+
+    @Override
+    public ParallelResult get() {
+        join();
+        return cachedResult;
+    }
+
+    /** Calls {@link #get()} if not already called. Guarantees that the context is closed. */
+    @Override
+    public void close() {
+        if (isJoined.get()) {
+            return;
+        }
+        join();
+    }
+
+    public <T> DurableFuture<T> branch(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config) {
+        if (isJoined.get()) {
+            throw new IllegalStateException("Cannot add branches after join() has been called");
+        }
+        var serDes = config.serDes() == null ? getContext().getDurableConfig().getSerDes() : config.serDes();
+        return enqueueItem(name, func, resultType, serDes, OperationSubType.PARALLEL_BRANCH);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.html new file mode 100644 index 000000000..ebbb5dfc3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.html @@ -0,0 +1 @@ +SerializableDurableOperation

SerializableDurableOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total31 of 13577%3 of 1070%31364018
validateCurrentThreadType()310%20%226611
deserializeException(ErrorObject)53100%1787%1501901
deserializeResult(String)17100%n/a010601
SerializableDurableOperation(OperationIdentifier, TypeToken, SerDes, DurableContextImpl, BaseDurableOperation)12100%n/a010401
SerializableDurableOperation(OperationIdentifier, TypeToken, SerDes, DurableContextImpl)8100%n/a010201
serializeResult(Object)5100%n/a010101
serializeException(Throwable)5100%n/a010101
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.java.html new file mode 100644 index 000000000..7229a2649 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.java.html @@ -0,0 +1,163 @@ +SerializableDurableOperation.java

SerializableDurableOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
+import software.amazon.lambda.durable.exception.SerDesException;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.serde.SerDes;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Base class for all durable operations (STEP, WAIT, etc.).
+ *
+ * <p>Key methods:
+ *
+ * <ul>
+ *   <li>{@code execute()} starts the operation (returns immediately)
+ *   <li>{@code get()} blocks until complete and returns the result
+ * </ul>
+ *
+ * <p>The separation allows:
+ *
+ * <ul>
+ *   <li>Starting multiple async operations quickly
+ *   <li>Blocking on results later when needed
+ *   <li>Proper thread coordination via future
+ * </ul>
+ */
+public abstract class SerializableDurableOperation<T> extends BaseDurableOperation implements DurableFuture<T> {
+    private static final Logger logger = LoggerFactory.getLogger(SerializableDurableOperation.class);
+
+    private final TypeToken<T> resultTypeToken;
+    private final SerDes resultSerDes;
+
+    /**
+     * Constructs a new durable operation.
+     *
+     * @param operationIdentifier the unique identifier for this operation
+     * @param resultTypeToken the type token for deserializing the result
+     * @param resultSerDes the serializer/deserializer for the result
+     * @param durableContext the parent context this operation belongs to
+     */
+    protected SerializableDurableOperation(
+            OperationIdentifier operationIdentifier,
+            TypeToken<T> resultTypeToken,
+            SerDes resultSerDes,
+            DurableContextImpl durableContext) {
+        this(operationIdentifier, resultTypeToken, resultSerDes, durableContext, null);
+    }
+
+    protected SerializableDurableOperation(
+            OperationIdentifier operationIdentifier,
+            TypeToken<T> resultTypeToken,
+            SerDes resultSerDes,
+            DurableContextImpl durableContext,
+            BaseDurableOperation parentOperation) {
+        super(operationIdentifier, durableContext, parentOperation);
+        this.resultTypeToken = resultTypeToken;
+        this.resultSerDes = resultSerDes;
+    }
+
+    /**
+     * Checks if it's called from a Step.
+     *
+     * @throws IllegalDurableOperationException if it's in a step
+     */
+    private void validateCurrentThreadType() {
+        ThreadType current = getCurrentThreadContext().threadType();
+        if (current == ThreadType.STEP) {
+            var message = String.format(
+                    "Nested %s operation is not supported on %s from within a %s execution.",
+                    getType(), getName(), current);
+            // terminate execution and throw the exception
+            throw terminateExecutionWithIllegalDurableOperationException(message);
+        }
+    }
+
+    /**
+     * Deserializes a result string into the operation's result type.
+     *
+     * @param result the serialized result string
+     * @return the deserialized result
+     * @throws SerDesException if deserialization fails
+     */
+    protected T deserializeResult(String result) {
+        try {
+            return resultSerDes.deserialize(result, resultTypeToken);
+        } catch (SerDesException e) {
+            logger.warn(
+                    "Failed to deserialize {} result for operation name '{}'. Ensure the result is properly encoded.",
+                    getType(),
+                    getName());
+            throw e;
+        }
+    }
+
+    /**
+     * Serializes the result to a string.
+     *
+     * @param result the result to serialize
+     * @return the serialized string
+     */
+    protected String serializeResult(T result) {
+        return resultSerDes.serialize(result);
+    }
+
+    /**
+     * Serializes a throwable into an {@link ErrorObject} for checkpointing.
+     *
+     * @param throwable the exception to serialize
+     * @return the serialized error object
+     */
+    protected ErrorObject serializeException(Throwable throwable) {
+        return ExceptionHelper.buildErrorObject(throwable, resultSerDes);
+    }
+
+    /**
+     * Deserializes an {@link ErrorObject} back into a throwable, reconstructing the original exception type and stack
+     * trace when possible. Falls back to null if the exception class is not found or deserialization fails.
+     *
+     * @param errorObject the serialized error object
+     * @return the reconstructed throwable, or null if reconstruction is not possible
+     */
+    protected Throwable deserializeException(ErrorObject errorObject) {
+        Throwable original = null;
+        if (errorObject == null) {
+            return original;
+        }
+        var errorType = errorObject.errorType();
+        var errorData = errorObject.errorData();
+
+        if (errorType == null) {
+            return original;
+        }
+        try {
+
+            Class<?> exceptionClass = Class.forName(errorType);
+            if (Throwable.class.isAssignableFrom(exceptionClass)) {
+                original =
+                        resultSerDes.deserialize(errorData, TypeToken.get(exceptionClass.asSubclass(Throwable.class)));
+
+                if (original != null) {
+                    original.setStackTrace(ExceptionHelper.deserializeStackTrace(errorObject.stackTrace()));
+                }
+            }
+        } catch (ClassNotFoundException e) {
+            logger.warn("Cannot re-construct original exception type. Falling back to generic StepFailedException.");
+        } catch (SerDesException e) {
+            logger.warn("Cannot deserialize original exception data. Falling back to generic StepFailedException.", e);
+        }
+        return original;
+    }
+
+    public abstract T get();
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.html new file mode 100644 index 000000000..5ac9ba785 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.html @@ -0,0 +1 @@ +StepOperation

StepOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total28 of 34191%7 of 4383%736887013
replay(Operation)136282%41173%41041701
handleStepFailure(Throwable, int)98690%11191%1722401
get()34393%1787%1511201
lambda$pollReadyAndExecuteStepLogic$0(Instant, Operation)3872%1150%121301
checkpointStarted()27100%6100%040701
lambda$executeStepLogic$2(int)26100%n/a010801
StepOperation(OperationIdentifier, Function, TypeToken, StepConfig, DurableContextImpl)14100%n/a010401
pollReadyAndExecuteStepLogic(Instant, int)13100%n/a010401
handleStepSucceeded(Object)12100%n/a010301
executeStepLogic(int)9100%n/a010301
start()5100%n/a010201
lambda$pollReadyAndExecuteStepLogic$1(int)4100%n/a010101
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.java.html new file mode 100644 index 000000000..305072957 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.java.html @@ -0,0 +1,221 @@ +StepOperation.java

StepOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.time.Instant;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.awssdk.services.lambda.model.StepOptions;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.StepSemantics;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.DurableOperationException;
+import software.amazon.lambda.durable.exception.StepFailedException;
+import software.amazon.lambda.durable.exception.StepInterruptedException;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Durable operation that executes a user-provided function with retry support.
+ *
+ * <p>Steps are the primary unit of work in a durable execution. Each step is checkpointed before and after execution,
+ * enabling automatic retry on failure and replay on re-invocation.
+ *
+ * @param <T> the result type of the step function
+ */
+public class StepOperation<T> extends SerializableDurableOperation<T> {
+    private static final Integer FIRST_ATTEMPT = 1;
+
+    private final Function<StepContext, T> function;
+    private final StepConfig config;
+
+    public StepOperation(
+            OperationIdentifier operationIdentifier,
+            Function<StepContext, T> function,
+            TypeToken<T> resultTypeToken,
+            StepConfig config,
+            DurableContextImpl durableContext) {
+        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
+
+        this.function = function;
+        this.config = config;
+    }
+
+    /** Starts the operation. */
+    @Override
+    protected void start() {
+        executeStepLogic(FIRST_ATTEMPT);
+    }
+
+    /** Replays the operation. */
+    @Override
+    protected void replay(Operation existing) {
+        var attempt = existing.stepDetails() != null && existing.stepDetails().attempt() != null
+                ? existing.stepDetails().attempt() + 1
+                : FIRST_ATTEMPT;
+        switch (existing.status()) {
+            case SUCCEEDED, FAILED -> markAlreadyCompleted();
+            case STARTED -> {
+                if (config.semantics() == StepSemantics.AT_MOST_ONCE_PER_RETRY) {
+                    // AT_MOST_ONCE: treat as interrupted, go through retry logic
+                    handleStepFailure(new StepInterruptedException(existing), attempt);
+                } else {
+                    // AT_LEAST_ONCE: re-execute the step
+                    executeStepLogic(attempt);
+                }
+            }
+            // Step is pending retry - Start polling for PENDING -> READY transition
+            case PENDING -> {
+                if (existing.stepDetails() != null && existing.stepDetails().nextAttemptTimestamp() != null) {
+                    pollReadyAndExecuteStepLogic(existing.stepDetails().nextAttemptTimestamp(), attempt);
+                } else {
+                    throw terminateExecutionWithIllegalDurableOperationException(
+                            "Unexpected PENDING step without nextAttemptTimestamp: " + getOperationId());
+                }
+            }
+            // Execute with current attempt
+            case READY -> executeStepLogic(attempt);
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected step status: " + existing.status());
+        }
+    }
+
+    private void pollReadyAndExecuteStepLogic(Instant nextAttemptInstant, int attempt) {
+        pollForOperationUpdates(nextAttemptInstant)
+                .thenCompose(op -> op.status() == OperationStatus.READY
+                        ? CompletableFuture.completedFuture(op)
+                        : pollForOperationUpdates(nextAttemptInstant))
+                .thenRun(() -> executeStepLogic(attempt));
+    }
+
+    private void executeStepLogic(int attempt) {
+        Runnable userHandler = () -> {
+            // use a try-with-resources to
+            // - add thread id/type to thread local when the step starts
+            // - clear logger properties when the step finishes
+            try (StepContext stepContext = getContext().createStepContext(getOperationId(), getName(), attempt)) {
+                try {
+                    checkpointStarted();
+
+                    // Execute the function
+                    T result = function.apply(stepContext);
+
+                    handleStepSucceeded(result);
+                } catch (Throwable e) {
+                    handleStepFailure(e, attempt);
+                }
+            }
+        };
+
+        // Execute user provided step code in user-configured executor
+        runUserHandler(userHandler, ThreadType.STEP);
+    }
+
+    private void checkpointStarted() {
+        // Check if we need to send START
+        var existing = getOperation();
+        if (existing == null || existing.status() != OperationStatus.STARTED) {
+            var startUpdate = OperationUpdate.builder().action(OperationAction.START);
+
+            if (config.semantics() == StepSemantics.AT_MOST_ONCE_PER_RETRY) {
+                // AT_MOST_ONCE: await START checkpoint before executing user code
+                sendOperationUpdate(startUpdate);
+            } else {
+                // AT_LEAST_ONCE: fire-and-forget START checkpoint
+                sendOperationUpdateAsync(startUpdate);
+            }
+        }
+    }
+
+    private void handleStepSucceeded(T result) {
+        // Send SUCCEED
+        var successUpdate =
+                OperationUpdate.builder().action(OperationAction.SUCCEED).payload(serializeResult(result));
+
+        // sendOperationUpdate must be synchronous here. When waiting for the return of this call,
+        // the context threads waiting for the result of this step operation will be wakened up and registered.
+        sendOperationUpdate(successUpdate);
+    }
+
+    private void handleStepFailure(Throwable exception, int attempt) {
+        exception = ExceptionHelper.unwrapCompletableFuture(exception);
+        if (exception instanceof SuspendExecutionException suspendExecutionException) {
+            throw suspendExecutionException;
+        }
+        if (exception instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
+            // terminate the execution and throw the exception if it's not recoverable
+            throw terminateExecution(unrecoverableDurableExecutionException);
+        }
+
+        final ErrorObject errorObject;
+        if (exception instanceof DurableOperationException durableOperationException) {
+            errorObject = durableOperationException.getErrorObject();
+        } else {
+            errorObject = serializeException(exception);
+        }
+
+        var isRetryable = !(exception instanceof StepInterruptedException);
+        var retryDecision = config.retryStrategy().makeRetryDecision(exception, attempt);
+
+        if (isRetryable && retryDecision.shouldRetry()) {
+            // Send RETRY
+            var retryDelayInSeconds = Math.toIntExact(retryDecision.delay().toSeconds());
+            var retryUpdate = OperationUpdate.builder()
+                    .action(OperationAction.RETRY)
+                    .error(errorObject)
+                    .stepOptions(StepOptions.builder()
+                            // RetryDecisions always produce integer number of seconds greater or equals to
+                            // 1 (no sub-second numbers)
+                            .nextAttemptDelaySeconds(retryDelayInSeconds)
+                            .build());
+            sendOperationUpdate(retryUpdate);
+
+            // Poll for READY status and then execute the step again
+            pollReadyAndExecuteStepLogic(Instant.now().plusSeconds(retryDelayInSeconds), attempt + 1);
+        } else {
+            // Send FAIL - retries exhausted
+            var failUpdate =
+                    OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject);
+            sendOperationUpdate(failUpdate);
+        }
+    }
+
+    @Override
+    public T get() {
+        var op = waitForOperationCompletion();
+
+        if (op.status() == OperationStatus.SUCCEEDED) {
+            var stepDetails = op.stepDetails();
+            var result = (stepDetails != null) ? stepDetails.result() : null;
+
+            return deserializeResult(result);
+        } else {
+            var errorObject = op.stepDetails().error();
+
+            // Throw StepInterruptedException directly for AT_MOST_ONCE interrupted steps
+            if (StepInterruptedException.isStepInterruptedException(errorObject)) {
+                throw new StepInterruptedException(op);
+            }
+
+            // Attempt to reconstruct and throw the original exception
+            Throwable original = deserializeException(errorObject);
+            if (original != null) {
+                ExceptionHelper.sneakyThrow(original);
+            }
+            // Fallback: wrap in StepFailedException
+            throw new StepFailedException(op);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.html new file mode 100644 index 000000000..9a6495c1e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.html @@ -0,0 +1 @@ +WaitForConditionOperation

WaitForConditionOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total25 of 32192%8 of 3476%831584013
handleCheckFailure(Throwable)123272%2466%2421101
resumeCheckLoop(Operation)33792%3562%350801
get()33592%1583%1411001
lambda$executeCheckLogic$1(Operation)3770%1150%121301
replay(Operation)22492%4100%040701
lambda$pollReadyAndResumeCheckLoop$0(Operation)2880%1150%121301
lambda$executeCheckLogic$3(int, Object)97100%6100%0402901
WaitForConditionOperation(String, String, BiFunction, TypeToken, WaitForConditionConfig, DurableContextImpl)18100%n/a010601
executeCheckLogic(Object, int)10100%n/a010301
pollReadyAndResumeCheckLoop(Operation)9100%n/a010301
start()8100%n/a010201
lambda$executeCheckLogic$2(Object, int)7100%n/a010101
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.java.html new file mode 100644 index 000000000..f87b53808 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.java.html @@ -0,0 +1,191 @@ +WaitForConditionOperation.java

WaitForConditionOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.time.Duration;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.BiFunction;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationType;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.awssdk.services.lambda.model.StepOptions;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.exception.DurableOperationException;
+import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
+import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
+import software.amazon.lambda.durable.execution.SuspendExecutionException;
+import software.amazon.lambda.durable.execution.ThreadType;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+import software.amazon.lambda.durable.model.OperationSubType;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
+ * determine polling intervals and termination.
+ *
+ * <p>Uses {@link OperationType#STEP} with {@link OperationSubType#WAIT_FOR_CONDITION} subtype. Each polling iteration
+ * is checkpointed as a RETRY on the same STEP operation.
+ *
+ * @param <T> the type of state being polled
+ */
+public class WaitForConditionOperation<T> extends SerializableDurableOperation<T> {
+    private static final Integer FIRST_ATTEMPT = 1;
+
+    private final BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc;
+    private final WaitForConditionConfig<T> config;
+
+    public WaitForConditionOperation(
+            String operationId,
+            String name,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            TypeToken<T> resultTypeToken,
+            WaitForConditionConfig<T> config,
+            DurableContextImpl durableContext) {
+        super(
+                OperationIdentifier.of(operationId, name, OperationType.STEP, OperationSubType.WAIT_FOR_CONDITION),
+                resultTypeToken,
+                config.serDes(),
+                durableContext);
+
+        this.checkFunc = checkFunc;
+        this.config = config;
+    }
+
+    @Override
+    protected void start() {
+        executeCheckLogic(config.initialState(), FIRST_ATTEMPT);
+    }
+
+    @Override
+    protected void replay(Operation existing) {
+        switch (existing.status()) {
+            case SUCCEEDED, FAILED -> markAlreadyCompleted(); // Check if already completed / failed
+            case PENDING -> pollReadyAndResumeCheckLoop(existing); // Check if pending retry
+            case STARTED, READY -> resumeCheckLoop(existing);
+            default ->
+                throw terminateExecutionWithIllegalDurableOperationException(
+                        "Unexpected waitForCondition status: " + existing.status());
+        }
+    }
+
+    @Override
+    public T get() {
+        var op = waitForOperationCompletion();
+
+        if (op.status() == OperationStatus.SUCCEEDED) {
+            var stepDetails = op.stepDetails();
+            var result = (stepDetails != null) ? stepDetails.result() : null;
+            return deserializeResult(result);
+        } else {
+            var errorObject = op.stepDetails().error();
+
+            // Attempt to reconstruct and throw the original exception
+            Throwable original = deserializeException(errorObject);
+            if (original != null) {
+                ExceptionHelper.sneakyThrow(original);
+            }
+            // Fallback: wrap in WaitForConditionFailedException
+            throw new WaitForConditionFailedException(op);
+        }
+    }
+
+    private void resumeCheckLoop(Operation existing) {
+        var stepDetails = existing.stepDetails();
+        int attempt =
+                (stepDetails != null && stepDetails.attempt() != null) ? stepDetails.attempt() + 1 : FIRST_ATTEMPT;
+        var checkpointData = stepDetails != null ? stepDetails.result() : null;
+        T currentState; // Get current state
+        if (checkpointData != null) {
+            currentState = deserializeResult(checkpointData);
+        } else {
+            currentState = config.initialState();
+        }
+        executeCheckLogic(currentState, attempt);
+    }
+
+    private CompletableFuture<Void> pollReadyAndResumeCheckLoop(Operation existing) {
+        return pollForOperationUpdates()
+                .thenCompose(op -> op.status() == OperationStatus.READY
+                        ? CompletableFuture.completedFuture(op)
+                        : pollForOperationUpdates())
+                .thenAccept(this::resumeCheckLoop);
+    }
+
+    private void executeCheckLogic(T currentState, int attempt) {
+        Runnable userHandler = () -> {
+            try (var stepContext = getContext().createStepContext(getOperationId(), getName(), attempt)) {
+                try {
+                    // Checkpoint START if not already started
+                    var existing = getOperation();
+                    if (existing == null || existing.status() != OperationStatus.STARTED) {
+                        var startUpdate = OperationUpdate.builder().action(OperationAction.START);
+                        sendOperationUpdateAsync(startUpdate);
+                    }
+
+                    // Execute check function in user executor
+                    WaitForConditionResult<T> result = checkFunc.apply(currentState, stepContext);
+
+                    // Serialize/deserialize round-trip on the value to ensure state is checkpoint-safe
+                    var serializedState = serializeResult(result.value());
+                    T deserializedValue = deserializeResult(serializedState);
+
+                    if (result.isDone()) {
+                        // Condition met β€” checkpoint SUCCEED
+                        var successUpdate = OperationUpdate.builder()
+                                .action(OperationAction.SUCCEED)
+                                .payload(serializedState);
+                        sendOperationUpdate(successUpdate);
+                    } else {
+                        // Compute delay from strategy
+                        Duration delay = config.waitStrategy().evaluate(deserializedValue, attempt);
+
+                        // Checkpoint RETRY with delay
+                        var retryUpdate = OperationUpdate.builder()
+                                .action(OperationAction.RETRY)
+                                .payload(serializedState)
+                                .stepOptions(StepOptions.builder()
+                                        .nextAttemptDelaySeconds(Math.toIntExact(delay.toSeconds()))
+                                        .build());
+                        sendOperationUpdate(retryUpdate);
+
+                        // Poll for READY, then continue the loop
+                        pollForOperationUpdates()
+                                .thenCompose(op -> op.status() == OperationStatus.READY
+                                        ? CompletableFuture.completedFuture(op)
+                                        : pollForOperationUpdates())
+                                .thenRun(() -> executeCheckLogic(deserializedValue, attempt + 1));
+                    }
+                } catch (Throwable e) {
+                    handleCheckFailure(e);
+                }
+            }
+        };
+
+        runUserHandler(userHandler, ThreadType.STEP);
+    }
+
+    private void handleCheckFailure(Throwable exception) {
+        exception = ExceptionHelper.unwrapCompletableFuture(exception);
+        if (exception instanceof SuspendExecutionException suspendExecutionException) {
+            throw suspendExecutionException;
+        }
+        if (exception instanceof UnrecoverableDurableExecutionException unrecoverable) {
+            throw terminateExecution(unrecoverable);
+        }
+
+        final var errorObject = (exception instanceof DurableOperationException durableOpEx)
+                ? durableOpEx.getErrorObject()
+                : serializeException(exception);
+
+        // Checkpoint FAIL
+        var failUpdate = OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject);
+        sendOperationUpdate(failUpdate);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.html new file mode 100644 index 000000000..e8e80a035 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.html @@ -0,0 +1 @@ +WaitOperation

WaitOperation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 75100%2 of 875%21002706
pollForWaitExpiration()27100%2466%240801
start()20100%n/a010801
replay(Operation)10100%2100%020501
WaitOperation(OperationIdentifier, Duration, DurableContextImpl)9100%n/a010301
get()5100%n/a010201
static {...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.java.html new file mode 100644 index 000000000..74ea80baf --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.java.html @@ -0,0 +1,80 @@ +WaitOperation.java

WaitOperation.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.operation;
+
+import java.time.Duration;
+import java.time.Instant;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.lambda.model.Operation;
+import software.amazon.awssdk.services.lambda.model.OperationAction;
+import software.amazon.awssdk.services.lambda.model.OperationStatus;
+import software.amazon.awssdk.services.lambda.model.OperationUpdate;
+import software.amazon.awssdk.services.lambda.model.WaitOptions;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.context.DurableContextImpl;
+import software.amazon.lambda.durable.model.OperationIdentifier;
+
+/**
+ * Durable operation that suspends execution for a specified duration without consuming compute.
+ *
+ * <p>The wait is checkpointed and the Lambda is suspended. On re-invocation after the wait period, execution resumes
+ * from where it left off.
+ */
+public class WaitOperation extends BaseDurableOperation implements DurableFuture<Void> {
+
+    private static final Logger logger = LoggerFactory.getLogger(WaitOperation.class);
+
+    private final Duration duration;
+
+    public WaitOperation(
+            OperationIdentifier operationIdentifier, Duration duration, DurableContextImpl durableContext) {
+        super(operationIdentifier, durableContext, null);
+        this.duration = duration;
+    }
+
+    /** Starts the operation. */
+    @Override
+    protected void start() {
+        // First execution - checkpoint with full duration
+        var update = OperationUpdate.builder()
+                .action(OperationAction.START)
+                .waitOptions(WaitOptions.builder()
+                        .waitSeconds((int) duration.toSeconds())
+                        .build());
+
+        sendOperationUpdate(update);
+        pollForWaitExpiration();
+    }
+
+    /** Replays the operation. */
+    @Override
+    protected void replay(Operation existing) {
+        if (existing.status() == OperationStatus.SUCCEEDED) {
+            // Wait already completed
+            markAlreadyCompleted();
+            return;
+        }
+
+        pollForWaitExpiration();
+    }
+
+    private void pollForWaitExpiration() {
+        var scheduledEndTimestamp = Instant.now().plusMillis(duration.toMillis());
+        var existing = getOperation();
+        if (existing != null
+                && existing.waitDetails() != null
+                && existing.waitDetails().scheduledEndTimestamp() != null) {
+            scheduledEndTimestamp = existing.waitDetails().scheduledEndTimestamp();
+        }
+        pollForOperationUpdates(scheduledEndTimestamp);
+    }
+
+    @Override
+    public Void get() {
+        waitForOperationCompletion();
+
+        return null;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.html new file mode 100644 index 000000000..4e9d478d7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.operation

software.amazon.lambda.durable.operation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total315 of 3,07189%61 of 33381%61304677762128012
BaseDurableOperation7147186%53988%6521011613001
ConcurrencyOperation5643688%93780%8391411401601
ChildContextOperation4335389%125080%1247810301301
MapOperation3532490%93680%9319950801
SerializableDurableOperation3110477%3770%3136401801
StepOperation2831391%73683%73688701301
WaitForConditionOperation2529692%82676%83158401301
CallbackOperation1411689%31076%3144330601
InvokeOperation711594%21083%2132330501
ParallelOperation515096%11593%1171430901
WaitOperation75100%2675%2100270601
MapOperation.new TypeToken() {...}100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.source.html new file mode 100644 index 000000000..a31947e46 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.operation

software.amazon.lambda.durable.operation

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total315 of 3,07189%61 of 33381%61304677762128012
BaseDurableOperation.java7147186%53988%6521011613001
ConcurrencyOperation.java5643688%93780%8391411401601
ChildContextOperation.java4335389%125080%1247810301301
MapOperation.java3532790%93680%9329960902
SerializableDurableOperation.java3110477%3770%3136401801
StepOperation.java2831391%73683%73688701301
WaitForConditionOperation.java2529692%82676%83158401301
CallbackOperation.java1411689%31076%3144330601
InvokeOperation.java711594%21083%2132330501
ParallelOperation.java515096%11593%1171430901
WaitOperation.java75100%2675%2100270601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$1.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$1.html new file mode 100644 index 000000000..eb8ab4258 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$1.html @@ -0,0 +1 @@ +JitterStrategy.new JitterStrategy() {...}

JitterStrategy.new JitterStrategy() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 7100%0 of 0n/a020202
{...}5100%n/a010101
apply(double)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$2.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$2.html new file mode 100644 index 000000000..6ef445c7e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$2.html @@ -0,0 +1 @@ +JitterStrategy.new JitterStrategy() {...}

JitterStrategy.new JitterStrategy() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020202
{...}5100%n/a010101
apply(double)4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$3.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$3.html new file mode 100644 index 000000000..dd6dca1ba --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$3.html @@ -0,0 +1 @@ +JitterStrategy.new JitterStrategy() {...}

JitterStrategy.new JitterStrategy() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a020202
apply(double)10100%n/a010101
{...}5100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.html new file mode 100644 index 000000000..0b4c79bb4 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.html @@ -0,0 +1 @@ +JitterStrategy

JitterStrategy

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 0n/a010401
static {...}21100%n/a010401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.java.html new file mode 100644 index 000000000..c4e51920e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.java.html @@ -0,0 +1,51 @@ +JitterStrategy.java

JitterStrategy.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.retry;
+
+/**
+ * Jitter strategy for retry delays to prevent thundering herd problems.
+ *
+ * <p>Jitter reduces simultaneous retry attempts by spreading retries out over a randomized delay interval, which helps
+ * prevent overwhelming services when many clients retry at the same time.
+ */
+public enum JitterStrategy {
+
+    /**
+     * No jitter - use exact calculated delay. This provides predictable timing but may cause thundering herd issues.
+     */
+    NONE {
+        @Override
+        public double apply(double baseDelay) {
+            return baseDelay;
+        }
+    },
+    /**
+     * Full jitter - random delay between 0 and calculated delay. This provides maximum spread but may result in very
+     * short delays.
+     */
+    FULL {
+        @Override
+        public double apply(double baseDelay) {
+            return Math.random() * baseDelay;
+        }
+    },
+    /**
+     * Half jitter - random delay between 50% and 100% of calculated delay. This provides good spread while maintaining
+     * reasonable minimum delays.
+     */
+    HALF {
+        @Override
+        public double apply(double baseDelay) {
+            return baseDelay / 2 + Math.random() * (baseDelay / 2);
+        }
+    };
+
+    /**
+     * Applies jitter to the given base delay.
+     *
+     * @param baseDelay the calculated delay before jitter
+     * @return the delay after applying jitter
+     */
+    public abstract double apply(double baseDelay);
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies$Presets.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies$Presets.html new file mode 100644 index 000000000..3252c544c --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies$Presets.html @@ -0,0 +1 @@ +PollingStrategies.Presets

PollingStrategies.Presets

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 1275%0 of 0n/a121312
PollingStrategies.Presets()30%n/a111111
static {...}9100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.html new file mode 100644 index 000000000..9dc8b4bb4 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.html @@ -0,0 +1 @@ +PollingStrategies

PollingStrategies

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 11397%0 of 16100%11512417
PollingStrategies()30%n/a111111
exponentialBackoff(Duration, double, JitterStrategy, Duration)49100%10100%0601001
lambda$exponentialBackoff$0(Duration, double, JitterStrategy, Duration, int)23100%n/a010301
fixedDelay(Duration)18100%4100%030401
lambda$at$2(Instant, int)11100%2100%020401
at(Instant)7100%n/a010201
lambda$fixedDelay$1(Duration, int)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.java.html new file mode 100644 index 000000000..484d7803d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.java.html @@ -0,0 +1,91 @@ +PollingStrategies.java

PollingStrategies.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.retry;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.Objects;
+
+/** Factory class for creating common polling strategies. */
+public class PollingStrategies {
+
+    /** Preset polling strategies for common use cases. */
+    public static class Presets {
+
+        /**
+         * Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
+         * second
+         */
+        public static final PollingStrategy DEFAULT =
+                exponentialBackoff(Duration.ofMillis(1000), 2.0, JitterStrategy.FULL, Duration.ofSeconds(10));
+    }
+
+    /**
+     * Creates an exponential backoff polling strategy.
+     *
+     * <p>The delay calculation follows the formula: delay = jitter(baseInterval Γ— backoffRate^(attempt-1))
+     *
+     * @param baseInterval Base delay before first poll
+     * @param backoffRate Multiplier for exponential backoff (must be positive)
+     * @param jitter Jitter strategy to apply to delays
+     * @param maxInterval Maximum delay between polls
+     * @return PollingStrategy implementing exponential backoff with jitter
+     */
+    public static PollingStrategy exponentialBackoff(
+            Duration baseInterval, double backoffRate, JitterStrategy jitter, Duration maxInterval) {
+        Objects.requireNonNull(jitter, "jitter must not be null");
+        Objects.requireNonNull(baseInterval, "base interval must not be null");
+        Objects.requireNonNull(maxInterval, "max interval must not be null");
+        if (backoffRate <= 0) {
+            throw new IllegalArgumentException("backoffRate must be positive");
+        }
+
+        if (baseInterval.isNegative() || baseInterval.isZero()) {
+            throw new IllegalArgumentException("baseInterval must be positive");
+        }
+
+        if (maxInterval.isNegative() || maxInterval.isZero()) {
+            throw new IllegalArgumentException("maxInterval must be positive");
+        }
+
+        return (attempt) -> {
+            // attempt is 1-based
+            double delayMs = baseInterval.toMillis() * Math.pow(backoffRate, attempt - 1);
+            delayMs = Math.min(jitter.apply(delayMs), maxInterval.toMillis());
+            return Duration.ofMillis(Math.round(delayMs));
+        };
+    }
+
+    /**
+     * Creates a fixed-delay polling strategy that uses the same interval for every attempt.
+     *
+     * @param interval Fixed delay between polls
+     * @return PollingStrategy with fixed delay
+     */
+    public static PollingStrategy fixedDelay(Duration interval) {
+        Objects.requireNonNull(interval, "interval must not be null");
+        if (interval.isNegative() || interval.isZero()) {
+            throw new IllegalArgumentException("interval must be positive");
+        }
+        return (attempt) -> interval;
+    }
+
+    /**
+     * Creates a polling strategy that polls at a specific instant in time.
+     *
+     * @param instant The instant to poll at
+     * @return PollingStrategy that calculates delay until the specified instant
+     */
+    public static PollingStrategy at(Instant instant) {
+        Objects.requireNonNull(instant, "instant must not be null");
+        return (attempt) -> {
+            var duration = Duration.between(Instant.now(), instant);
+            if (duration.isNegative()) {
+                // as soon as possible
+                return Duration.ZERO;
+            }
+            return duration;
+        };
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.html new file mode 100644 index 000000000..156fe0602 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.html @@ -0,0 +1 @@ +RetryDecision

RetryDecision

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 46100%0 of 4100%080906
toString()15100%2100%020101
RetryDecision(boolean, Duration)13100%2100%020401
retry(Duration)6100%n/a010101
fail()6100%n/a010101
shouldRetry()3100%n/a010101
delay()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.java.html new file mode 100644 index 000000000..062059908 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.java.html @@ -0,0 +1,51 @@ +RetryDecision.java

RetryDecision.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.retry;
+
+import java.time.Duration;
+
+/** Represents a decision about whether to retry a failed operation and how long to wait. */
+public class RetryDecision {
+    private final boolean shouldRetry;
+    private final Duration delay;
+
+    private RetryDecision(boolean shouldRetry, Duration delay) {
+        this.shouldRetry = shouldRetry;
+        this.delay = delay != null ? delay : Duration.ZERO;
+    }
+
+    /**
+     * Creates a retry decision indicating the operation should be retried after the specified delay.
+     *
+     * @param delay the duration to wait before retrying
+     * @return a RetryDecision indicating retry with the specified delay
+     */
+    public static RetryDecision retry(Duration delay) {
+        return new RetryDecision(true, delay);
+    }
+
+    /**
+     * Creates a retry decision indicating the operation should not be retried.
+     *
+     * @return a RetryDecision indicating no retry should be attempted
+     */
+    public static RetryDecision fail() {
+        return new RetryDecision(false, Duration.ZERO);
+    }
+
+    /** @return true if the operation should be retried, false otherwise */
+    public boolean shouldRetry() {
+        return shouldRetry;
+    }
+
+    /** @return the duration to wait before retrying, or Duration.ZERO if no retry */
+    public Duration delay() {
+        return delay;
+    }
+
+    @Override
+    public String toString() {
+        return shouldRetry ? String.format("RetryDecision{retry after %s}", delay) : "RetryDecision{fail}";
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies$Presets.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies$Presets.html new file mode 100644 index 000000000..b4a8cf0c8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies$Presets.html @@ -0,0 +1 @@ +RetryStrategies.Presets

RetryStrategies.Presets

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 1782%0 of 0n/a131513
RetryStrategies.Presets()30%n/a111111
static {...}12100%n/a010401
lambda$static$0(Throwable, int)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.html new file mode 100644 index 000000000..8705f3c4d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.html @@ -0,0 +1 @@ +RetryStrategies

RetryStrategies

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 9196%0 of 10100%11012315
RetryStrategies()30%n/a111111
lambda$exponentialBackoff$0(int, Duration, Duration, double, JitterStrategy, Throwable, int)37100%2100%020801
exponentialBackoff(int, Duration, Duration, double, JitterStrategy)29100%4100%030701
fixedDelay(int, Duration)14100%2100%020401
lambda$fixedDelay$1(int, Duration, Throwable, int)8100%2100%020301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.java.html new file mode 100644 index 000000000..8ce6bfc83 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.java.html @@ -0,0 +1,103 @@ +RetryStrategies.java

RetryStrategies.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.retry;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.util.ParameterValidator;
+
+/**
+ * Factory class for creating common retry strategies.
+ *
+ * <p>This class provides preset retry strategies for common use cases, as well as factory methods for creating custom
+ * retry strategies with exponential backoff and jitter.
+ */
+public class RetryStrategies {
+
+    /** Preset retry strategies for common use cases. */
+    public static class Presets {
+
+        /**
+         * Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
+         * seconds - Backoff rate: 2x - Jitter: FULL
+         */
+        public static final RetryStrategy DEFAULT = exponentialBackoff(
+                6, // maxAttempts
+                Duration.ofSeconds(5), // initialDelay
+                Duration.ofSeconds(60), // maxDelay
+                2.0, // backoffRate
+                JitterStrategy.FULL // jitter
+                );
+
+        /** No retry strategy - fails immediately on first error. Use this for operations that should not be retried. */
+        public static final RetryStrategy NO_RETRY = (error, attempt) -> RetryDecision.fail();
+    }
+
+    /**
+     * Creates an exponential backoff retry strategy.
+     *
+     * <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)
+     *
+     * @param maxAttempts Maximum number of attempts (including initial attempt)
+     * @param initialDelay Initial delay before first retry
+     * @param maxDelay Maximum delay between retries
+     * @param backoffRate Multiplier for exponential backoff
+     * @param jitter Jitter strategy to apply to delays
+     * @return RetryStrategy implementing exponential backoff with jitter
+     */
+    public static RetryStrategy exponentialBackoff(
+            int maxAttempts, Duration initialDelay, Duration maxDelay, double backoffRate, JitterStrategy jitter) {
+
+        if (maxAttempts <= 0) {
+            throw new IllegalArgumentException("maxAttempts must be positive");
+        }
+        ParameterValidator.validateDuration(initialDelay, "initialDelay");
+        ParameterValidator.validateDuration(maxDelay, "maxDelay");
+        if (backoffRate <= 0) {
+            throw new IllegalArgumentException("backoffRate must be positive");
+        }
+
+        return (error, attempt) -> {
+            // Check if we've exceeded max attempts (attemptNumber is 1-based)
+            if (attempt >= maxAttempts) {
+                return RetryDecision.fail();
+            }
+
+            // Calculate delay with exponential backoff
+            double initialDelaySeconds = initialDelay.toSeconds();
+            double maxDelaySeconds = maxDelay.toSeconds();
+
+            double baseDelay = Math.min(initialDelaySeconds * Math.pow(backoffRate, attempt - 1), maxDelaySeconds);
+
+            // Apply jitter
+            double delayWithJitter = jitter.apply(baseDelay);
+
+            // Round to nearest second, minimum 1
+            // Same rounding logic as TS SDK: https://tinyurl.com/4ntxsefu
+            long finalDelaySeconds = Math.max(1, Math.round(delayWithJitter));
+
+            return RetryDecision.retry(Duration.ofSeconds(finalDelaySeconds));
+        };
+    }
+
+    /**
+     * Creates a simple retry strategy that retries a fixed number of times with a fixed delay.
+     *
+     * @param maxAttempts Maximum number of attempts (including initial attempt)
+     * @param fixedDelay Fixed delay between retries
+     * @return RetryStrategy with fixed delay
+     */
+    public static RetryStrategy fixedDelay(int maxAttempts, Duration fixedDelay) {
+        if (maxAttempts <= 0) {
+            throw new IllegalArgumentException("maxAttempts must be positive");
+        }
+        ParameterValidator.validateDuration(fixedDelay, "fixedDelay");
+
+        return (error, attempt) -> {
+            if (attempt >= maxAttempts) {
+                return RetryDecision.fail();
+            }
+            return RetryDecision.retry(fixedDelay);
+        };
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies$Presets.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies$Presets.html new file mode 100644 index 000000000..600449681 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies$Presets.html @@ -0,0 +1 @@ +WaitStrategies.Presets

WaitStrategies.Presets

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 1376%0 of 0n/a121312
WaitStrategies.Presets()30%n/a111111
static {...}10100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.html new file mode 100644 index 000000000..09d2f67fd --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.html @@ -0,0 +1 @@ +WaitStrategies

WaitStrategies

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total9 of 10991%1 of 1291%21222616
fixedDelay(int, Duration)6960%1150%121401
WaitStrategies()30%n/a111111
lambda$exponentialBackoff$0(int, Duration, Duration, double, JitterStrategy, Object, int)40100%2100%020801
exponentialBackoff(int, Duration, Duration, double, JitterStrategy)38100%6100%040901
lambda$fixedDelay$1(int, Duration, Object, int)11100%2100%020301
defaultStrategy()2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.java.html new file mode 100644 index 000000000..3019ab395 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.java.html @@ -0,0 +1,107 @@ +WaitStrategies.java

WaitStrategies.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.retry;
+
+import java.time.Duration;
+import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
+import software.amazon.lambda.durable.util.ParameterValidator;
+
+/**
+ * Factory class for creating common {@link WaitForConditionWaitStrategy} implementations.
+ *
+ * <p>This class provides preset wait strategies (for use with waitForCondition) for common use cases, as well as
+ * factory methods for creating custom retry strategies with exponential backoff and jitter.
+ */
+public final class WaitStrategies {
+
+    /** Preset wait strategies for common use cases. */
+    public static class Presets {
+
+        /**
+         * Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
+         * backoff rate, and FULL jitter.
+         */
+        @SuppressWarnings("rawtypes")
+        public static final WaitForConditionWaitStrategy DEFAULT =
+                exponentialBackoff(60, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, JitterStrategy.FULL);
+    }
+
+    /**
+     * Returns the default wait strategy.
+     *
+     * @param <T> the type of state being polled
+     * @return the default wait strategy
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> WaitForConditionWaitStrategy<T> defaultStrategy() {
+        return Presets.DEFAULT;
+    }
+
+    /**
+     * Creates an exponential backoff wait strategy.
+     *
+     * <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)
+     *
+     * @param maxAttempts maximum number of attempts before throwing {@link WaitForConditionFailedException}
+     * @param initialDelay initial delay before first retry
+     * @param maxDelay maximum delay between retries
+     * @param backoffRate multiplier for exponential backoff (must be >= 1.0)
+     * @param jitter jitter strategy to apply to delays
+     * @param <T> the type of state being polled
+     * @return a {@link WaitForConditionWaitStrategy} implementing exponential backoff with jitter
+     */
+    public static <T> WaitForConditionWaitStrategy<T> exponentialBackoff(
+            int maxAttempts, Duration initialDelay, Duration maxDelay, double backoffRate, JitterStrategy jitter) {
+        if (maxAttempts <= 0) {
+            throw new IllegalArgumentException("maxAttempts must be positive, got: " + maxAttempts);
+        }
+        ParameterValidator.validateDuration(initialDelay, "initialDelay");
+        ParameterValidator.validateDuration(maxDelay, "maxDelay");
+        if (backoffRate < 1.0) {
+            throw new IllegalArgumentException("backoffRate must be >= 1.0, got: " + backoffRate);
+        }
+        if (jitter == null) {
+            throw new IllegalArgumentException("jitter cannot be null");
+        }
+
+        return (state, attempt) -> {
+            // attempt is 1-based
+            if (attempt >= maxAttempts) {
+                throw new WaitForConditionFailedException(
+                        "waitForCondition exceeded maximum attempts (" + maxAttempts + ")");
+            }
+
+            double initialDelaySeconds = initialDelay.toSeconds();
+            double maxDelaySeconds = maxDelay.toSeconds();
+            double baseDelay = Math.min(initialDelaySeconds * Math.pow(backoffRate, attempt - 1), maxDelaySeconds);
+            double delayWithJitter = jitter.apply(baseDelay);
+            long finalDelaySeconds = Math.max(1, Math.round(delayWithJitter));
+
+            return Duration.ofSeconds(finalDelaySeconds);
+        };
+    }
+
+    /**
+     * Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.
+     *
+     * @param maxAttempts maximum number of attempts before throwing {@link WaitForConditionFailedException}
+     * @param fixedDelay the constant delay between polling attempts
+     * @param <T> the type of state being polled
+     * @return a {@link WaitForConditionWaitStrategy} with fixed delay
+     */
+    public static <T> WaitForConditionWaitStrategy<T> fixedDelay(int maxAttempts, Duration fixedDelay) {
+        if (maxAttempts <= 0) {
+            throw new IllegalArgumentException("maxAttempts must be positive, got: " + maxAttempts);
+        }
+        ParameterValidator.validateDuration(fixedDelay, "fixedDelay");
+
+        return (state, attempt) -> {
+            if (attempt >= maxAttempts) {
+                throw new WaitForConditionFailedException(
+                        "waitForCondition exceeded maximum attempts (" + maxAttempts + ")");
+            }
+            return fixedDelay;
+        };
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.html new file mode 100644 index 000000000..e98e54f82 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.retry

software.amazon.lambda.durable.retry

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total24 of 45394%1 of 4297%7597100638011
WaitStrategies910091%11191%2122261601
PollingStrategies311097%16100%1151241701
RetryStrategies38896%10100%1101231501
RetryStrategies.Presets31482%n/a13151301
WaitStrategies.Presets31076%n/a12131201
PollingStrategies.Presets3975%n/a12131201
RetryDecision46100%4100%08090601
JitterStrategy21100%n/a01040101
JitterStrategy.new JitterStrategy() {...}15100%n/a02020201
JitterStrategy.new JitterStrategy() {...}9100%n/a02020201
JitterStrategy.new JitterStrategy() {...}7100%n/a02020201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.source.html new file mode 100644 index 000000000..18cd74a90 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.retry

software.amazon.lambda.durable.retry

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total24 of 45394%1 of 4297%7597100638011
WaitStrategies.java1211090%11191%3143292802
PollingStrategies.java611995%16100%2172272902
RetryStrategies.java610294%10100%2132282802
JitterStrategy.java52100%n/a07070704
RetryDecision.java46100%4100%08090601
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkDeserializer.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkDeserializer.html new file mode 100644 index 000000000..5bb479c8a --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkDeserializer.html @@ -0,0 +1 @@ +AwsSdkV2Module.SdkDeserializer

AwsSdkV2Module.SdkDeserializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 5280%0 of 0n/a0231302
deserialize(JsonParser, DeserializationContext)103678%n/a0131001
AwsSdkV2Module.SdkDeserializer(Class)6100%n/a010301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkSerializer.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkSerializer.html new file mode 100644 index 000000000..69d91e73d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkSerializer.html @@ -0,0 +1 @@ +AwsSdkV2Module.SdkSerializer

AwsSdkV2Module.SdkSerializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 3268%0 of 0n/a013901
serialize(Object, JsonGenerator, SerializerProvider)102268%n/a013901
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.html new file mode 100644 index 000000000..40cc669e3 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.html @@ -0,0 +1 @@ +AwsSdkV2Module

AwsSdkV2Module

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 40100%0 of 2100%0401003
AwsSdkV2Module()18100%2100%020501
registerSdkClass(Class)16100%n/a010301
static {...}6100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.java.html new file mode 100644 index 000000000..bb1fa67b7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.java.html @@ -0,0 +1,100 @@ +AwsSdkV2Module.java

AwsSdkV2Module.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.serde;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.awssdk.services.lambda.model.Operation;
+
+/**
+ * Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.
+ *
+ * <p>AWS SDK v2 model classes use an immutable builder pattern that Jackson cannot handle natively. This module bridges
+ * the gap by serializing via {@code toBuilder()} and deserializing via {@code serializableBuilderClass()}.
+ */
+public class AwsSdkV2Module extends SimpleModule {
+
+    /**
+     * List of AWS SDK v2 classes that require custom serialization/deserialization. Add new SDK classes here to
+     * automatically register serializers and deserializers.
+     *
+     * <p>See <a
+     * href="https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-serialization-changes.html">serialization
+     * differences</a>
+     */
+    private static final List<Class<?>> SDK_CLASSES =
+            List.of(Operation.class, ErrorObject.class, CheckpointUpdatedExecutionState.class);
+
+    public AwsSdkV2Module() {
+        super("AwsSdkV2Module");
+
+        // Register serializers and deserializers for all SDK classes
+        for (Class<?> sdkClass : SDK_CLASSES) {
+            registerSdkClass(sdkClass);
+        }
+    }
+
+    private <T> void registerSdkClass(Class<T> sdkClass) {
+        addDeserializer(sdkClass, new SdkDeserializer<>(sdkClass));
+        addSerializer(sdkClass, new SdkSerializer<>());
+    }
+
+    private static class SdkDeserializer<T> extends JsonDeserializer<T> {
+        private final Class<T> sdkClass;
+
+        SdkDeserializer(Class<T> sdkClass) {
+            this.sdkClass = sdkClass;
+        }
+
+        @Override
+        @SuppressWarnings("unchecked")
+        public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+            try {
+                // Call serializableBuilderClass() method on the SDK class
+                Method serializableBuilderClassMethod = sdkClass.getMethod("serializableBuilderClass");
+                serializableBuilderClassMethod.setAccessible(true);
+                Class<?> builderClass = (Class<?>) serializableBuilderClassMethod.invoke(null);
+
+                // Deserialize to builder using treeToValue (avoids double parsing via toString())
+                Object builder = p.readValueAs(builderClass);
+                Method buildMethod = builderClass.getMethod("build");
+                buildMethod.setAccessible(true);
+                return (T) buildMethod.invoke(builder);
+            } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+                throw new IOException(
+                        "Failed to deserialize " + sdkClass.getSimpleName() + " using AWS SDK v2 builder pattern", e);
+            }
+        }
+    }
+
+    private static class SdkSerializer<T> extends JsonSerializer<T> {
+        @Override
+        public void serialize(T value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+            try {
+                // Call toBuilder() method on the SDK object
+                Method toBuilderMethod = value.getClass().getMethod("toBuilder");
+                toBuilderMethod.setAccessible(true);
+                Object builder = toBuilderMethod.invoke(value);
+
+                // Serialize the builder
+                serializers.defaultSerializeValue(builder, gen);
+            } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+                throw new IOException(
+                        "Failed to serialize " + value.getClass().getSimpleName() + " using AWS SDK v2 builder pattern",
+                        e);
+            }
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$1.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$1.html new file mode 100644 index 000000000..b57551ea7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$1.html @@ -0,0 +1 @@ +DurableInputOutputSerDes.new JsonDeserializer() {...}

DurableInputOutputSerDes.new JsonDeserializer() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total11 of 1421%0 of 0n/a122312
deserialize(JsonParser, DeserializationContext)110%n/a112211
{...}3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$2.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$2.html new file mode 100644 index 000000000..8103b04a1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$2.html @@ -0,0 +1 @@ +DurableInputOutputSerDes.new JsonSerializer() {...}

DurableInputOutputSerDes.new JsonSerializer() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 1323%0 of 0n/a123412
serialize(Date, JsonGenerator, SerializerProvider)100%n/a113311
{...}3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$3.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$3.html new file mode 100644 index 000000000..bcb03d9cf --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$3.html @@ -0,0 +1 @@ +DurableInputOutputSerDes.new JsonDeserializer() {...}

DurableInputOutputSerDes.new JsonDeserializer() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 27100%0 of 2100%040803
deserialize(JsonParser, DeserializationContext)16100%2100%020401
static {...}8100%n/a010301
{...}3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.html new file mode 100644 index 000000000..e624118d0 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.html @@ -0,0 +1 @@ +DurableInputOutputSerDes

DurableInputOutputSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total14 of 13489%2 of 450%2683104
deserialize(String, TypeToken)72175%1150%124701
serialize(Object)7750%1150%124601
createObjectMapper()76100%n/a0101401
DurableInputOutputSerDes()16100%n/a010401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.java.html new file mode 100644 index 000000000..6b3093010 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.java.html @@ -0,0 +1,146 @@ +DurableInputOutputSerDes.java

DurableInputOutputSerDes.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.serde;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.time.Instant;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.util.ExceptionHelper;
+
+/**
+ * Serializer/Deserializer for Durable Execution Input and Output objects. This is for INTERNAL use only - handles
+ * Lambda Durable Functions backend protocol.
+ *
+ * <p>Customer-facing serialization uses SerDes from DurableConfig.
+ */
+public class DurableInputOutputSerDes implements SerDes {
+    private final ObjectMapper objectMapper = createObjectMapper(); // Internal ObjectMapper
+    private final TypeFactory typeFactory = objectMapper.getTypeFactory();
+    private final Map<Type, JavaType> typeCache = new ConcurrentHashMap<>();
+
+    /**
+     * Creates ObjectMapper for DAR backend communication (internal use only). This is for INTERNAL use only - handles
+     * Lambda Durable Functions backend protocol.
+     *
+     * <p>Customer-facing serialization uses SerDes from DurableConfig.
+     *
+     * @return Configured ObjectMapper for durable backend communication
+     */
+    static ObjectMapper createObjectMapper() {
+        var dateModule = new SimpleModule();
+        dateModule.addDeserializer(Date.class, new JsonDeserializer<>() {
+            @Override
+            public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
+                    throws IOException {
+                // Timestamp is a double value represent seconds since epoch.
+                var timestamp = jsonParser.getDoubleValue();
+                // Date expects milliseconds since epoch, so multiply by 1000.
+                return new Date((long) (timestamp * 1000));
+            }
+        });
+        dateModule.addSerializer(Date.class, new JsonSerializer<>() {
+            @Override
+            public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
+                    throws IOException {
+                // Timestamp should be a double value representing seconds since epoch, so
+                // convert from milliseconds.
+                double timestamp = date.getTime() / 1000.0;
+                jsonGenerator.writeNumber(timestamp);
+            }
+        });
+
+        // Needed for deserialization of timestamps for some SDK v2 objects
+        dateModule.addDeserializer(Instant.class, new JsonDeserializer<>() {
+            private static final DateTimeFormatter TIMESTAMP_FORMATTER = new DateTimeFormatterBuilder()
+                    .appendPattern("yyyy-MM-dd HH:mm:ss.SSSSSSXXX")
+                    .toFormatter();
+
+            @Override
+            public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
+                    throws IOException {
+                if (jsonParser.hasToken(JsonToken.VALUE_NUMBER_INT)) {
+                    return Instant.ofEpochMilli(jsonParser.getLongValue());
+                }
+                var timestampStr = jsonParser.getValueAsString();
+                return Instant.from(TIMESTAMP_FORMATTER.parse(timestampStr));
+            }
+        });
+
+        return JsonMapper.builder()
+                .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
+                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+                // Looks pretty, and probably needed for tests to be deterministic.
+                .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY)
+                .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS)
+                // Data passed over the wire from the backend is UpperCamelCase
+                .propertyNamingStrategy(PropertyNamingStrategies.UPPER_CAMEL_CASE)
+                .addModule(new JavaTimeModule())
+                .addModule(dateModule)
+                .addModule(new AwsSdkV2Module())
+                .build();
+    }
+
+    /**
+     * Serializes an object to a JSON string.
+     *
+     * @param value the object to serialize
+     * @return the JSON string representation, or null if value is null
+     */
+    @Override
+    public String serialize(Object value) {
+        if (value == null) {
+            return null;
+        }
+        try {
+            return objectMapper.writeValueAsString(value);
+        } catch (IOException e) {
+            ExceptionHelper.sneakyThrow(e);
+            return null;
+        }
+    }
+
+    /**
+     * Deserializes a JSON string to DurableExecutionInput object
+     *
+     * @param data the JSON string to deserialize
+     * @param typeToken the type token of DurableExecutionInput
+     * @return the deserialized object, or null if data is null
+     */
+    @Override
+    public <T> T deserialize(String data, TypeToken<T> typeToken) {
+        if (data == null) {
+            return null;
+        }
+        try {
+            JavaType javaType = typeCache.computeIfAbsent(typeToken.getType(), typeFactory::constructType);
+            return objectMapper.readValue(data, javaType);
+        } catch (IOException e) {
+            ExceptionHelper.sneakyThrow(e);
+            return null;
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.html new file mode 100644 index 000000000..7aa0512d7 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.html @@ -0,0 +1 @@ +JacksonSerDes

JacksonSerDes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 82100%0 of 4100%0602104
deserialize(String, TypeToken)33100%2100%020601
serialize(Object)19100%2100%020501
JacksonSerDes(ObjectMapper)16100%n/a010501
JacksonSerDes()14100%n/a010501
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.java.html new file mode 100644 index 000000000..b51c3b0eb --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.java.html @@ -0,0 +1,77 @@ +JacksonSerDes.java

JacksonSerDes.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.serde;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import software.amazon.lambda.durable.TypeToken;
+import software.amazon.lambda.durable.exception.SerDesException;
+
+/**
+ * Jackson-based implementation of {@link SerDes}.
+ *
+ * <p>This implementation uses Jackson's ObjectMapper for JSON serialization and deserialization.
+ *
+ * <p>Features:
+ *
+ * <ul>
+ *   <li>Java 8 time types support (Duration, Instant, LocalDateTime, etc.)
+ *   <li>Dates serialized as ISO-8601 strings (not timestamps)
+ *   <li>Unknown properties ignored during deserialization
+ *   <li>Type cache for improved performance with generic types
+ * </ul>
+ */
+public class JacksonSerDes implements SerDes {
+    private final ObjectMapper mapper;
+    private final TypeFactory typeFactory;
+    private final Map<Type, JavaType> typeCache;
+
+    /** Creates a new JacksonSerDes with default ObjectMapper configuration. */
+    public JacksonSerDes() {
+        this(new ObjectMapper()
+                .registerModule(new JavaTimeModule())
+                .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
+                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES));
+    }
+
+    /** Creates a new JacksonSerDes with a custom ObjectMapper configuration. */
+    public JacksonSerDes(ObjectMapper objectMapper) {
+        this.mapper = objectMapper;
+        this.typeFactory = mapper.getTypeFactory();
+        this.typeCache = new ConcurrentHashMap<>();
+    }
+
+    @Override
+    public String serialize(Object value) {
+        if (value == null) return null;
+        try {
+            return mapper.writeValueAsString(value);
+        } catch (Exception e) {
+            throw new SerDesException(
+                    "Serialization failed for type: " + value.getClass().getName(), e);
+        }
+    }
+
+    @Override
+    public <T> T deserialize(String data, TypeToken<T> typeToken) {
+        if (data == null) return null;
+
+        try {
+            // Convert TypeToken to Jackson's JavaType using TypeFactory
+            // Cache to avoid repeated reflection overhead
+            JavaType javaType = typeCache.computeIfAbsent(typeToken.getType(), typeFactory::constructType);
+            return mapper.readValue(data, javaType);
+        } catch (Exception e) {
+            throw new SerDesException(
+                    "Deserialization failed for type: " + typeToken.getType().getTypeName(), e);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.html new file mode 100644 index 000000000..858ffcbe2 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.serde

software.amazon.lambda.durable.serde

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total55 of 39486%2 of 1283%427199622108
DurableInputOutputSerDes1412089%2250%268310401
DurableInputOutputSerDes.new JsonDeserializer() {...}11321%n/a12231201
AwsSdkV2Module.SdkDeserializer104280%n/a023130201
AwsSdkV2Module.SdkSerializer102268%n/a01390101
DurableInputOutputSerDes.new JsonSerializer() {...}10323%n/a12341201
JacksonSerDes82100%4100%060210401
AwsSdkV2Module40100%2100%040100301
DurableInputOutputSerDes.new JsonDeserializer() {...}27100%2100%04080301
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.source.html new file mode 100644 index 000000000..de4e3de5e --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.serde

software.amazon.lambda.durable.serde

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total55 of 39486%2 of 1283%427199622108
DurableInputOutputSerDes.java3515381%2466%414134321104
AwsSdkV2Module.java2010483%2100%076320603
JacksonSerDes.java82100%4100%060210401
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.html new file mode 100644 index 000000000..7171408f5 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.html @@ -0,0 +1 @@ +CompletedDurableFuture

CompletedDurableFuture

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total9 of 90%0 of 0n/a224422
CompletedDurableFuture(Object)60%n/a113311
get()30%n/a111111
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.java.html new file mode 100644 index 000000000..b12664337 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/CompletedDurableFuture.java.html @@ -0,0 +1,26 @@ +CompletedDurableFuture.java

CompletedDurableFuture.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.util;
+
+import software.amazon.lambda.durable.DurableFuture;
+
+/**
+ * A {@link DurableFuture} that is already completed with a value.
+ *
+ * <p>Used for short-circuit cases (e.g., empty collection in map) where no checkpoint or async execution is needed.
+ *
+ * @param <T> the result type
+ */
+public class CompletedDurableFuture<T> implements DurableFuture<T> {
+    private final T value;
+
+    public CompletedDurableFuture(T value) {
+        this.value = value;
+    }
+
+    @Override
+    public T get() {
+        return value;
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.html new file mode 100644 index 000000000..e8143a108 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.html @@ -0,0 +1 @@ +ExceptionHelper

ExceptionHelper

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 9796%0 of 2100%11012319
ExceptionHelper()30%n/a111111
lambda$serializeStackTrace$0(StackTraceElement)26100%n/a010501
lambda$deserializeStackTrace$1(String)21100%n/a010201
buildErrorObject(Throwable, SerDes)19100%n/a010601
unwrapCompletableFuture(Throwable)9100%2100%020301
deserializeStackTrace(List)8100%n/a010301
serializeStackTrace(StackTraceElement[])6100%n/a010301
lambda$deserializeStackTrace$2(int)3100%n/a010101
sneakyThrow(Throwable)2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.java.html new file mode 100644 index 000000000..3f570da23 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.java.html @@ -0,0 +1,88 @@ +ExceptionHelper.java

ExceptionHelper.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.util;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletionException;
+import software.amazon.awssdk.services.lambda.model.ErrorObject;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/** Utility class for handling exceptions */
+public class ExceptionHelper {
+
+    /**
+     * Throws any exception as if it were unchecked using type erasure. This preserves the original exception type and
+     * stack trace.
+     *
+     * @param exception the exception to throw
+     * @param <T> the exception type (erased at runtime)
+     * @throws T the exception as an unchecked exception
+     */
+    @SuppressWarnings("unchecked")
+    public static <T extends Throwable> void sneakyThrow(Throwable exception) throws T {
+        throw (T) exception;
+    }
+
+    /**
+     * unwrap the exception that is wrapped by CompletionException
+     *
+     * @param throwable the throwable to unwrap
+     * @return the original Throwable that is not a CompletionException
+     */
+    public static Throwable unwrapCompletableFuture(Throwable throwable) {
+        while (throwable instanceof CompletionException) {
+            throwable = throwable.getCause();
+        }
+        return throwable;
+    }
+
+    /**
+     * build an ErrorObject from a Throwable
+     *
+     * @param throwable the Throwable from which to build the errorObject
+     * @return the ErrorObject
+     */
+    public static ErrorObject buildErrorObject(Throwable throwable, SerDes serDes) {
+        return ErrorObject.builder()
+                .errorType(throwable.getClass().getName())
+                .errorMessage(throwable.getMessage())
+                .errorData(serDes.serialize(throwable))
+                .stackTrace(serializeStackTrace(throwable.getStackTrace()))
+                .build();
+    }
+
+    /**
+     * Serializes a stack trace to a list of pipe-delimited strings in the format
+     * {@code className|methodName|fileName|lineNumber}.
+     *
+     * @param stackTrace the stack trace elements to serialize
+     * @return list of serialized stack trace strings
+     */
+    public static List<String> serializeStackTrace(StackTraceElement[] stackTrace) {
+        return Arrays.stream(stackTrace)
+                .map((element) -> String.format(
+                        "%s|%s|%s|%d",
+                        element.getClassName(),
+                        element.getMethodName(),
+                        element.getFileName(),
+                        element.getLineNumber()))
+                .toList();
+    }
+
+    /**
+     * Deserializes a list of pipe-delimited strings back into stack trace elements.
+     *
+     * @param stackTrace the serialized stack trace strings
+     * @return array of reconstructed StackTraceElements
+     */
+    public static StackTraceElement[] deserializeStackTrace(List<String> stackTrace) {
+        return stackTrace.stream()
+                .map((s) -> {
+                    String[] tokens = s.split("\\|");
+                    return new StackTraceElement(tokens[0], tokens[1], tokens[2], Integer.parseInt(tokens[3]));
+                })
+                .toArray(StackTraceElement[]::new);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.html new file mode 100644 index 000000000..deb8c3c69 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.html @@ -0,0 +1 @@ +ParameterValidator

ParameterValidator

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 170100%0 of 40100%02903909
validateOperationName(String, int)52100%12100%0701001
validateOrderedCollection(Collection)23100%8100%050701
validateDuration(Duration, String)22100%4100%030501
validatePositiveInteger(Integer, String)19100%4100%030501
validateOptionalDuration(Duration, String)16100%4100%030301
isUnorderedMapView(Collection)14100%4100%030201
validateOptionalPositiveInteger(Integer, String)13100%4100%030301
static {...}7100%n/a010201
validateOperationName(String)4100%n/a010201
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.java.html new file mode 100644 index 000000000..155ea0b6d --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.java.html @@ -0,0 +1,147 @@ +ParameterValidator.java

ParameterValidator.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable.util;
+
+import java.time.Duration;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Utility class for validating input parameters in the Durable Execution SDK.
+ *
+ * <p>Provides common validation methods to ensure consistent error messages and validation logic across the SDK.
+ */
+public final class ParameterValidator {
+
+    private static final long MIN_DURATION_SECONDS = 1;
+    public static final int MAX_OPERATION_NAME_LENGTH = 256;
+
+    private ParameterValidator() {
+        // Utility class - prevent instantiation
+    }
+
+    /**
+     * Validates that a duration is at least 1 second.
+     *
+     * @param duration the duration to validate
+     * @param parameterName the name of the parameter (for error messages)
+     * @throws IllegalArgumentException if duration is null or less than 1 second
+     */
+    public static void validateDuration(Duration duration, String parameterName) {
+        if (duration == null) {
+            throw new IllegalArgumentException(parameterName + " cannot be null");
+        }
+        if (duration.toSeconds() < MIN_DURATION_SECONDS) {
+            throw new IllegalArgumentException(
+                    parameterName + " must be at least " + MIN_DURATION_SECONDS + " second, got: " + duration);
+        }
+    }
+
+    /**
+     * Validates that an optional duration (if provided) is at least 1 second.
+     *
+     * @param duration the duration to validate (can be null)
+     * @param parameterName the name of the parameter (for error messages)
+     * @throws IllegalArgumentException if duration is non-null and less than 1 second
+     */
+    public static void validateOptionalDuration(Duration duration, String parameterName) {
+        if (duration != null && duration.toSeconds() < MIN_DURATION_SECONDS) {
+            throw new IllegalArgumentException(
+                    parameterName + " must be at least " + MIN_DURATION_SECONDS + " second, got: " + duration);
+        }
+    }
+
+    /**
+     * Validates that an integer value is positive (greater than 0).
+     *
+     * @param value the value to validate
+     * @param parameterName the name of the parameter (for error messages)
+     * @throws IllegalArgumentException if value is null or not positive
+     */
+    public static void validatePositiveInteger(Integer value, String parameterName) {
+        if (value == null) {
+            throw new IllegalArgumentException(parameterName + " cannot be null");
+        }
+        if (value <= 0) {
+            throw new IllegalArgumentException(parameterName + " must be positive, got: " + value);
+        }
+    }
+
+    /**
+     * Validates that an optional integer value (if provided) is positive (greater than 0).
+     *
+     * @param value the value to validate (can be null)
+     * @param parameterName the name of the parameter (for error messages)
+     * @throws IllegalArgumentException if value is non-null and not positive
+     */
+    public static void validateOptionalPositiveInteger(Integer value, String parameterName) {
+        if (value != null && value <= 0) {
+            throw new IllegalArgumentException(parameterName + " must be positive, got: " + value);
+        }
+    }
+
+    public static void validateOperationName(String name) {
+        validateOperationName(name, MAX_OPERATION_NAME_LENGTH);
+    }
+
+    public static void validateOperationName(String name, int maxLength) {
+        if (name == null) {
+            // operation name is optional
+            return;
+        }
+        if (name.isEmpty()) {
+            throw new IllegalArgumentException("Operation name cannot be empty");
+        }
+        if (name.length() > maxLength) {
+            throw new IllegalArgumentException(
+                    "Operation name must be less than " + maxLength + " characters, got: " + name);
+        }
+
+        // validate each character is printable ASCII
+        for (char c : name.toCharArray()) {
+            if (c < 0x20 || c > 0x7e) {
+                throw new IllegalArgumentException(
+                        "Operation name must contain only printable ASCII characters, got: " + name);
+            }
+        }
+    }
+
+    /** Known unordered map types whose views (keySet, values, entrySet) do not guarantee iteration order. */
+    private static final Set<Class<?>> UNORDERED_MAP_TYPES =
+            Set.of(HashMap.class, IdentityHashMap.class, WeakHashMap.class, ConcurrentHashMap.class);
+
+    /**
+     * Validates that a collection has deterministic iteration order.
+     *
+     * <p>Rejects known unordered collection types: {@link HashSet} (but not {@link LinkedHashSet}, which has stable
+     * insertion-order iteration), and views returned by {@link HashMap}, {@link IdentityHashMap}, {@link WeakHashMap},
+     * and {@link ConcurrentHashMap}.
+     *
+     * @param items the collection to validate
+     * @throws IllegalArgumentException if items is null or has non-deterministic iteration order
+     */
+    public static void validateOrderedCollection(Collection<?> items) {
+        if (items == null) {
+            throw new IllegalArgumentException("items cannot be null");
+        }
+        // LinkedHashSet extends HashSet but has stable insertion-order iteration β€” allow it
+        if (items instanceof LinkedHashSet) {
+            return;
+        }
+        if (items instanceof HashSet || isUnorderedMapView(items)) {
+            throw new IllegalArgumentException("items must have deterministic iteration order");
+        }
+    }
+
+    private static boolean isUnorderedMapView(Collection<?> collection) {
+        var enclosing = collection.getClass().getEnclosingClass();
+        return enclosing != null && UNORDERED_MAP_TYPES.contains(enclosing);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.html new file mode 100644 index 000000000..1d8d5548f --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.util

software.amazon.lambda.durable.util

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total12 of 27695%0 of 42100%34156632013
CompletedDurableFuture90%n/a22442211
ExceptionHelper39496%2100%1101231901
ParameterValidator170100%40100%0290390901
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.source.html new file mode 100644 index 000000000..35f37e800 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable.util

software.amazon.lambda.durable.util

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total12 of 27695%0 of 42100%34156632013
CompletedDurableFuture.java90%n/a22442211
ExceptionHelper.java39496%2100%1101231901
ParameterValidator.java170100%40100%0290390901
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig$Builder.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig$Builder.html new file mode 100644 index 000000000..c46387282 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig$Builder.html @@ -0,0 +1 @@ +DurableConfig.Builder

DurableConfig.Builder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 62100%0 of 0n/a0901909
withLambdaClientBuilder(LambdaClientBuilder)15100%n/a010401
withDurableExecutionClient(DurableExecutionClient)8100%n/a010301
withSerDes(SerDes)8100%n/a010201
withLoggerConfig(LoggerConfig)8100%n/a010201
withExecutorService(ExecutorService)5100%n/a010201
withPollingStrategy(PollingStrategy)5100%n/a010201
withCheckpointDelay(Duration)5100%n/a010201
build()5100%n/a010101
DurableConfig.Builder()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.html new file mode 100644 index 000000000..174a6b400 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.html @@ -0,0 +1 @@ +DurableConfig

DurableConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total11 of 23395%4 of 1266%323465017
createDefaultDurableExecutionClient()65590%3125%2311801
getProjectVersion(String)52080%1150%123901
DurableConfig(DurableConfig.Builder)47100%n/a0101001
validateConfiguration()25100%6100%040701
lambda$static$0(Runnable)15100%n/a010401
static {...}13100%n/a010401
addUserAgentSuffix(LambdaClientBuilder)12100%n/a010301
defaultConfig()5100%n/a010101
createDefaultExecutor()5100%n/a010201
builder()4100%n/a010101
getDurableExecutionClient()3100%n/a010101
getSerDes()3100%n/a010101
getExecutorService()3100%n/a010101
getLoggerConfig()3100%n/a010101
getPollingStrategy()3100%n/a010101
getCheckpointDelay()3100%n/a010101
lambda$new$1()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.java.html new file mode 100644 index 000000000..c7b77d0c1 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.java.html @@ -0,0 +1,396 @@ +DurableConfig.java

DurableConfig.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.time.Duration;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
+import software.amazon.awssdk.core.SdkSystemSetting;
+import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.lambda.LambdaClient;
+import software.amazon.awssdk.services.lambda.LambdaClientBuilder;
+import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest;
+import software.amazon.lambda.durable.client.DurableExecutionClient;
+import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
+import software.amazon.lambda.durable.logging.LoggerConfig;
+import software.amazon.lambda.durable.retry.PollingStrategies;
+import software.amazon.lambda.durable.retry.PollingStrategy;
+import software.amazon.lambda.durable.serde.JacksonSerDes;
+import software.amazon.lambda.durable.serde.SerDes;
+
+/**
+ * Configuration for DurableHandler initialization. This class provides a builder pattern for configuring SDK components
+ * including LambdaClient, SerDes, and ExecutorService.
+ *
+ * <p>Configuration is initialized once during Lambda cold start and remains immutable throughout the execution
+ * lifecycle.
+ *
+ * <p>Example usage with default settings:
+ *
+ * <pre>{@code
+ * @Override
+ * protected DurableConfig createConfiguration() {
+ *     return DurableConfig.builder()
+ *         .withDurableExecutionClient(customClient)
+ *         .withSerDes(customSerDes)
+ *         .build();
+ * }
+ * }</pre>
+ *
+ * <p>Example usage with custom Lambda client:
+ *
+ * <pre>{@code
+ * @Override
+ * protected DurableConfig createConfiguration() {
+ *     LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
+ *         .region(Region.US_WEST_2)
+ *         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
+ *
+ *     return DurableConfig.builder()
+ *         .withLambdaClientBuilder(lambdaClientBuilder)
+ *         .build();
+ * }
+ * }</pre>
+ */
+public final class DurableConfig {
+    private static final Logger logger = LoggerFactory.getLogger(DurableConfig.class);
+
+    /**
+     * Default AWS region used when AWS_REGION environment variable is not set. This prevents initialization failures in
+     * testing environments where AWS credentials may not be configured. In production Lambda environments, AWS_REGION
+     * is always set by the Lambda runtime.
+     */
+    private static final String DEFAULT_REGION = "us-east-1";
+
+    private static final String VERSION_FILE = "/version.prop";
+    private static final String PROJECT_VERSION = getProjectVersion(VERSION_FILE);
+    private static final String USER_AGENT_SUFFIX = "@aws/durable-execution-sdk-java/" + PROJECT_VERSION;
+
+    /**
+     * A default ExecutorService for running user-defined operations. Uses a cached thread pool with daemon threads by
+     * default.
+     *
+     * <p>This executor is used exclusively for user operations. Internal SDK coordination uses the
+     * InternalExecutor::INSTANCE
+     */
+    private static final ExecutorService DEFAULT_USER_THREAD_POOL = Executors.newCachedThreadPool(r -> {
+        Thread t = new Thread(r);
+        t.setName("durable-exec-" + t.getId());
+        t.setDaemon(true);
+        return t;
+    });
+
+    private final DurableExecutionClient durableExecutionClient;
+    private final SerDes serDes;
+    private final ExecutorService executorService;
+    private final LoggerConfig loggerConfig;
+    private final PollingStrategy pollingStrategy;
+    private final Duration checkpointDelay;
+
+    private DurableConfig(Builder builder) {
+        this.durableExecutionClient = Objects.requireNonNullElseGet(
+                builder.durableExecutionClient, DurableConfig::createDefaultDurableExecutionClient);
+        this.serDes = Objects.requireNonNullElseGet(builder.serDes, JacksonSerDes::new);
+        this.executorService =
+                Objects.requireNonNullElseGet(builder.executorService, DurableConfig::createDefaultExecutor);
+        this.loggerConfig = Objects.requireNonNullElseGet(builder.loggerConfig, LoggerConfig::defaults);
+        this.pollingStrategy = Objects.requireNonNullElse(builder.pollingStrategy, PollingStrategies.Presets.DEFAULT);
+        this.checkpointDelay = Objects.requireNonNullElseGet(builder.checkpointDelay, () -> Duration.ofSeconds(0));
+
+        validateConfiguration();
+    }
+
+    /**
+     * Creates a DurableConfig with default settings. Uses default DurableExecutionClient and JacksonSerDes.
+     *
+     * @return DurableConfig with default configuration
+     */
+    public static DurableConfig defaultConfig() {
+        return new Builder().build();
+    }
+
+    /**
+     * Creates a new builder for DurableConfig.
+     *
+     * @return Builder instance
+     */
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    /**
+     * Gets the configured DurableExecutionClient.
+     *
+     * @return DurableExecutionClient instance
+     */
+    public DurableExecutionClient getDurableExecutionClient() {
+        return durableExecutionClient;
+    }
+
+    /**
+     * Gets the configured SerDes.
+     *
+     * @return SerDes instance
+     */
+    public SerDes getSerDes() {
+        return serDes;
+    }
+
+    /**
+     * Gets the configured ExecutorService.
+     *
+     * @return ExecutorService instance (never null)
+     */
+    public ExecutorService getExecutorService() {
+        return executorService;
+    }
+
+    /**
+     * Gets the configured LoggerConfig.
+     *
+     * @return LoggerConfig instance (never null)
+     */
+    public LoggerConfig getLoggerConfig() {
+        return loggerConfig;
+    }
+
+    /**
+     * Gets the polling strategy.
+     *
+     * @return PollingStrategy instance (never null)
+     */
+    public PollingStrategy getPollingStrategy() {
+        return pollingStrategy;
+    }
+
+    /**
+     * Gets the configured checkpoint delay.
+     *
+     * @return the checkpoint delay duration
+     */
+    public Duration getCheckpointDelay() {
+        return checkpointDelay;
+    }
+
+    public void validateConfiguration() {
+        if (getDurableExecutionClient() == null) {
+            throw new IllegalStateException("DurableExecutionClient configuration failed");
+        }
+        if (getSerDes() == null) {
+            throw new IllegalStateException("SerDes configuration failed");
+        }
+        if (getExecutorService() == null) {
+            throw new IllegalStateException("ExecutorService configuration failed");
+        }
+    }
+
+    /**
+     * Creates a default DurableExecutionClient with production LambdaClient. Uses
+     * EnvironmentVariableCredentialsProvider and region from AWS_REGION. If AWS_REGION is not set, defaults to
+     * us-east-1 to avoid initialization failures in testing environments.
+     *
+     * @return Default DurableExecutionClient instance
+     */
+    private static DurableExecutionClient createDefaultDurableExecutionClient() {
+        logger.debug("Creating default DurableExecutionClient");
+        var region = System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable());
+        if (region == null || region.isEmpty()) {
+            region = DEFAULT_REGION;
+            logger.debug("AWS_REGION not set, defaulting to: {}", region);
+        }
+
+        var lambdaClient = addUserAgentSuffix(LambdaClient.builder()
+                        .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
+                        .region(Region.of(region)))
+                .build();
+
+        try {
+            // Make a dummy call to prime the SDK client. This leads to faster first call times because the HTTP client
+            // is already warmed up when the handler executes. More details, see here:
+            // https://github.com/aws/aws-sdk-java-v2/issues/1340
+            // https://github.com/aws/aws-sdk-java-v2/issues/3801
+            lambdaClient.getDurableExecutionState(GetDurableExecutionStateRequest.builder()
+                    .checkpointToken("dummyToken")
+                    .durableExecutionArn(String.format(
+                            "arn:aws:lambda:%s:123456789012:function:dummy:$LATEST/durable-execution/a0c9cbab-3de6-49ea-8630-0ef3bb4874e4/ed8a29c0-6216-3f4a-ad2e-24e2ad70b2d6",
+                            region))
+                    .maxItems(0)
+                    .build());
+        } catch (Exception e) {
+            // Ignore exceptions since this is a dummy call to prime the SDK client for faster startup times
+        }
+
+        logger.debug("Default DurableExecutionClient created for region: {}", region);
+        return new LambdaDurableFunctionsClient(lambdaClient);
+    }
+
+    static LambdaClientBuilder addUserAgentSuffix(LambdaClientBuilder builder) {
+        return builder.overrideConfiguration(builder.overrideConfiguration().toBuilder()
+                .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, USER_AGENT_SUFFIX)
+                .build());
+    }
+
+    private static String getProjectVersion(String versionFile) {
+        InputStream stream = DurableConfig.class.getResourceAsStream(versionFile);
+        if (stream == null) {
+            return "UNKNOWN";
+        }
+        Properties props = new Properties();
+        try {
+            props.load(stream);
+            stream.close();
+            return (String) props.get("version");
+        } catch (IOException e) {
+            return "UNKNOWN";
+        }
+    }
+
+    /**
+     * Creates a default ExecutorService for running user-defined operations. Uses a cached thread pool with daemon
+     * threads by default.
+     *
+     * <p>This executor is used exclusively for user operations. Internal SDK coordination uses the common ForkJoinPool.
+     *
+     * @return Default ExecutorService instance
+     */
+    private static ExecutorService createDefaultExecutor() {
+        logger.debug("Creating default ExecutorService");
+        return DEFAULT_USER_THREAD_POOL;
+    }
+
+    /** Builder for DurableConfig. Provides fluent API for configuring SDK components. */
+    public static final class Builder {
+        private DurableExecutionClient durableExecutionClient;
+        private SerDes serDes;
+        private ExecutorService executorService;
+        private LoggerConfig loggerConfig;
+        private PollingStrategy pollingStrategy;
+        private Duration checkpointDelay;
+
+        public Builder() {}
+
+        /**
+         * Sets a custom LambdaClient for production use. Use this method to customize the AWS SDK client with specific
+         * regions, credentials, timeouts, or retry policies.
+         *
+         * <p>Example:
+         *
+         * <pre>{@code
+         * LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
+         *     .region(Region.US_WEST_2)
+         *     .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
+         *
+         * DurableConfig.builder()
+         *     .withLambdaClientBuilder(lambdaClientBuilder)
+         *     .build();
+         * }</pre>
+         *
+         * @param lambdaClientBuilder Custom LambdaClientBuilder instance
+         * @return This builder
+         * @throws NullPointerException if lambdaClient is null
+         */
+        public Builder withLambdaClientBuilder(LambdaClientBuilder lambdaClientBuilder) {
+            Objects.requireNonNull(lambdaClientBuilder, "LambdaClient cannot be null");
+            this.durableExecutionClient = new LambdaDurableFunctionsClient(
+                    addUserAgentSuffix(lambdaClientBuilder).build());
+            return this;
+        }
+
+        /**
+         * Sets a custom DurableExecutionClient.
+         *
+         * <p><b>Note:</b> This method is primarily intended for testing with mock clients (e.g.,
+         * {@code LocalMemoryExecutionClient}). For production use with a custom AWS SDK client, prefer
+         * {@link #withLambdaClientBuilder(LambdaClientBuilder)}.
+         *
+         * @param durableExecutionClient Custom DurableExecutionClient instance
+         * @return This builder
+         * @throws NullPointerException if durableExecutionClient is null
+         */
+        public Builder withDurableExecutionClient(DurableExecutionClient durableExecutionClient) {
+            this.durableExecutionClient =
+                    Objects.requireNonNull(durableExecutionClient, "DurableExecutionClient cannot be null");
+            return this;
+        }
+
+        /**
+         * Sets a custom SerDes implementation.
+         *
+         * @param serDes Custom SerDes instance
+         * @return This builder
+         * @throws NullPointerException if serDes is null
+         */
+        public Builder withSerDes(SerDes serDes) {
+            this.serDes = Objects.requireNonNull(serDes, "SerDes cannot be null");
+            return this;
+        }
+
+        /**
+         * Sets a custom ExecutorService for running user-defined operations. If not set, a default cached thread pool
+         * will be created.
+         *
+         * <p>This executor is used exclusively for running user-defined operations. Internal SDK coordination (polling,
+         * checkpointing) uses the SDK InternalExecutor thread pool and is not affected by this setting.
+         *
+         * @param executorService Custom ExecutorService instance
+         * @return This builder
+         */
+        public Builder withExecutorService(ExecutorService executorService) {
+            this.executorService = executorService;
+            return this;
+        }
+
+        /**
+         * Sets a custom LoggerConfig. If not set, defaults to suppressing replay logs.
+         *
+         * @param loggerConfig Custom LoggerConfig instance
+         * @return This builder
+         */
+        public Builder withLoggerConfig(LoggerConfig loggerConfig) {
+            this.loggerConfig = Objects.requireNonNull(loggerConfig, "LoggerConfig cannot be null");
+            return this;
+        }
+
+        /**
+         * Sets the polling strategy. If not set, defaults to 1 second with full jitter and 2x backoff.
+         *
+         * @param pollingStrategy Custom PollingStrategy instance
+         * @return This builder
+         */
+        public Builder withPollingStrategy(PollingStrategy pollingStrategy) {
+            // No validation - polling intervals can be less than 1 second (e.g., 200ms with backoff)
+            this.pollingStrategy = pollingStrategy;
+            return this;
+        }
+
+        /**
+         * Sets how often the SDK checkpoints updates to backend. If not set, defaults to 0, SDK will checkpoint the
+         * updates as soon as possible.
+         *
+         * @param duration the checkpoint delay in Duration
+         * @return This builder
+         */
+        public Builder withCheckpointDelay(Duration duration) {
+            this.checkpointDelay = duration;
+            return this;
+        }
+
+        /**
+         * Builds the DurableConfig instance.
+         *
+         * @return Immutable DurableConfig instance
+         */
+        public DurableConfig build() {
+            return new DurableConfig(this);
+        }
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.html new file mode 100644 index 000000000..af1b31aae --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.html @@ -0,0 +1 @@ +DurableContext

DurableContext

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total253 of 48748%0 of 0n/a3056511043056
step(String, Class, Supplier)100%n/a114411
invoke(String, String, Object, TypeToken)100%n/a113311
map(String, Collection, TypeToken, DurableContext.MapFunction, MapConfig)100%n/a111111
waitForCondition(String, Class, BiFunction)100%n/a114411
step(String, Class, Supplier, StepConfig)90%n/a111111
step(String, TypeToken, Supplier)90%n/a111111
stepAsync(String, Class, Supplier)90%n/a112211
invoke(String, String, Object, TypeToken, InvokeConfig)90%n/a111111
invokeAsync(String, String, Object, TypeToken)90%n/a112211
runInChildContext(String, Class, Function, RunInChildContextConfig)90%n/a112211
mapAsync(String, Collection, Class, DurableContext.MapFunction, MapConfig)90%n/a111111
mapAsync(String, Collection, TypeToken, DurableContext.MapFunction)90%n/a111111
waitForCallback(String, TypeToken, BiConsumer)90%n/a113311
waitForCondition(String, TypeToken, BiFunction)90%n/a113311
waitForConditionAsync(String, Class, BiFunction)90%n/a113311
step(String, TypeToken, Supplier, StepConfig)80%n/a111111
stepAsync(String, Class, Supplier, StepConfig)80%n/a111111
stepAsync(String, TypeToken, Supplier)80%n/a111111
stepAsync(String, TypeToken, Supplier, StepConfig)80%n/a111111
runInChildContextAsync(String, TypeToken, Function)80%n/a112211
runInChildContext(String, TypeToken, Function, RunInChildContextConfig)80%n/a111111
runInChildContextAsync(String, Class, Function, RunInChildContextConfig)80%n/a111111
waitForCallback(String, TypeToken, BiConsumer, WaitForCallbackConfig)80%n/a112211
waitForCallbackAsync(String, TypeToken, BiConsumer)80%n/a112211
waitForCallbackAsync(String, Class, BiConsumer, WaitForCallbackConfig)80%n/a111111
waitForCondition(String, TypeToken, BiFunction, WaitForConditionConfig)80%n/a111111
waitForConditionAsync(String, TypeToken, BiFunction)80%n/a112211
createCallback(String, TypeToken)70%n/a111111
parallel(String)60%n/a111111
lambda$stepAsync$0(Supplier, StepContext)30%n/a111111
waitForCallback(String, Class, BiConsumer, WaitForCallbackConfig)2777%n/a011201
map(String, Collection, Class, DurableContext.MapFunction)12100%n/a010401
invoke(String, String, Object, Class)11100%n/a010401
map(String, Collection, Class, DurableContext.MapFunction, MapConfig)11100%n/a010201
map(String, Collection, TypeToken, DurableContext.MapFunction)11100%n/a010201
invoke(String, String, Object, Class, InvokeConfig)10100%n/a010201
invokeAsync(String, String, Object, Class)10100%n/a010301
runInChildContext(String, Class, Function)10100%n/a010401
mapAsync(String, Collection, Class, DurableContext.MapFunction)10100%n/a010301
waitForCallback(String, Class, BiConsumer)10100%n/a010401
step(String, Class, Function)9100%n/a010101
stepAsync(String, Class, Function)9100%n/a010201
invokeAsync(String, String, Object, Class, InvokeConfig)9100%n/a010101
runInChildContext(String, TypeToken, Function)9100%n/a010301
runInChildContextAsync(String, Class, Function)9100%n/a010301
waitForCallbackAsync(String, Class, BiConsumer)9100%n/a010301
step(String, Class, Function, StepConfig)8100%n/a010101
step(String, TypeToken, Function)8100%n/a010101
step(String, TypeToken, Function, StepConfig)8100%n/a010101
stepAsync(String, Class, Function, StepConfig)8100%n/a010101
stepAsync(String, TypeToken, Function)8100%n/a010101
createCallback(String, Class)8100%n/a010201
waitForCondition(String, Class, BiFunction, WaitForConditionConfig)8100%n/a010101
waitForConditionAsync(String, Class, BiFunction, WaitForConditionConfig)8100%n/a010101
wait(String, Duration)7100%n/a010101
createCallback(String, Class, CallbackConfig)7100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.java.html new file mode 100644 index 000000000..166555bc8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.java.html @@ -0,0 +1,754 @@ +DurableContext.java

DurableContext.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import java.time.Duration;
+import java.util.Collection;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import software.amazon.lambda.durable.config.CallbackConfig;
+import software.amazon.lambda.durable.config.InvokeConfig;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.config.RunInChildContextConfig;
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.WaitForCallbackConfig;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.context.BaseContext;
+import software.amazon.lambda.durable.model.MapResult;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+
+public interface DurableContext extends BaseContext {
+    /**
+     * Executes a durable step with the given name and blocks until it completes.
+     *
+     * <p>On first execution, runs {@code func} and checkpoints the result. On replay, returns the cached result without
+     * re-executing.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @return the step result
+     */
+    default <T> T step(String name, Class<T> resultType, Function<StepContext, T> func) {
+        return step(name, TypeToken.get(resultType), func, StepConfig.builder().build());
+    }
+
+    /**
+     * Executes a durable step with the given name and configuration, blocking until it completes.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @param config the step configuration (retry strategy, semantics, custom SerDes)
+     * @return the step result
+     */
+    default <T> T step(String name, Class<T> resultType, Function<StepContext, T> func, StepConfig config) {
+        return stepAsync(name, resultType, func, config).get();
+    }
+
+    /**
+     * Executes a durable step using a {@link TypeToken} for generic result types, blocking until it completes.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic types
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @return the step result
+     */
+    default <T> T step(String name, TypeToken<T> resultType, Function<StepContext, T> func) {
+        return step(name, resultType, func, StepConfig.builder().build());
+    }
+
+    /**
+     * Executes a durable step using a {@link TypeToken} and configuration, blocking until it completes.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic types
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @param config the step configuration (retry strategy, semantics, custom SerDes)
+     * @return the step result
+     */
+    default <T> T step(String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config) {
+        return stepAsync(name, resultType, func, config).get();
+    }
+
+    /**
+     * Asynchronously executes a durable step, returning a {@link DurableFuture} that can be composed or blocked on.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @return a future representing the step result
+     */
+    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Function<StepContext, T> func) {
+        return stepAsync(
+                name, TypeToken.get(resultType), func, StepConfig.builder().build());
+    }
+
+    /**
+     * Asynchronously executes a durable step using custom configuration.
+     *
+     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @param config the step configuration (retry strategy, semantics, custom SerDes)
+     * @return a future representing the step result
+     */
+    default <T> DurableFuture<T> stepAsync(
+            String name, Class<T> resultType, Function<StepContext, T> func, StepConfig config) {
+        return stepAsync(name, TypeToken.get(resultType), func, config);
+    }
+
+    /**
+     * Asynchronously executes a durable step using a {@link TypeToken} for generic result types.
+     *
+     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic types
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @return a future representing the step result
+     */
+    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Function<StepContext, T> func) {
+        return stepAsync(name, resultType, func, StepConfig.builder().build());
+    }
+
+    /**
+     * Asynchronously executes a durable step using a {@link TypeToken} and custom configuration.
+     *
+     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic types
+     * @param func the function to execute, receiving a {@link StepContext}
+     * @param config the step configuration (retry strategy, semantics, custom SerDes)
+     * @return a future representing the step result
+     */
+    <T> DurableFuture<T> stepAsync(
+            String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config);
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> T step(String name, Class<T> resultType, Supplier<T> func) {
+        return stepAsync(
+                        name,
+                        TypeToken.get(resultType),
+                        func,
+                        StepConfig.builder().build())
+                .get();
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> T step(String name, Class<T> resultType, Supplier<T> func, StepConfig config) {
+        // Simply delegate to stepAsync and block on the result
+        return stepAsync(name, TypeToken.get(resultType), func, config).get();
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> T step(String name, TypeToken<T> resultType, Supplier<T> func) {
+        return stepAsync(name, resultType, func, StepConfig.builder().build()).get();
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> T step(String name, TypeToken<T> resultType, Supplier<T> func, StepConfig config) {
+        return stepAsync(name, resultType, func, config).get();
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Supplier<T> func) {
+        return stepAsync(
+                name, TypeToken.get(resultType), func, StepConfig.builder().build());
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Supplier<T> func, StepConfig config) {
+        return stepAsync(name, TypeToken.get(resultType), func, config);
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Supplier<T> func) {
+        return stepAsync(name, resultType, func, StepConfig.builder().build());
+    }
+
+    /** @deprecated use the variants accepting StepContext instead */
+    @Deprecated
+    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Supplier<T> func, StepConfig config) {
+        return stepAsync(name, resultType, stepContext -> func.get(), config);
+    }
+
+    /**
+     * Suspends execution for the specified duration without consuming compute resources.
+     *
+     * <p>On first execution, checkpoints a wait operation and suspends the Lambda. On replay after the duration has
+     * elapsed, returns immediately.
+     *
+     * @param name the unique operation name within this context
+     * @param duration the duration to wait
+     * @return always {@code null}
+     */
+    default Void wait(String name, Duration duration) {
+        return waitAsync(name, duration).get();
+    }
+
+    /**
+     * Asynchronously suspends execution for the specified duration.
+     *
+     * @param name the unique operation name within this context
+     * @param duration the duration to wait
+     * @return a future that completes when the wait duration has elapsed
+     */
+    DurableFuture<Void> waitAsync(String name, Duration duration);
+
+    /**
+     * Invokes another Lambda function by name and blocks until the result is available.
+     *
+     * <p>On first execution, checkpoints a chained invoke operation that triggers the target function. On replay,
+     * returns the cached result without re-invoking.
+     *
+     * @param <T> the result type
+     * @param <U> the payload type
+     * @param name the unique operation name within this context
+     * @param functionName the ARN or name of the Lambda function to invoke
+     * @param payload the input payload to send to the target function
+     * @param resultType the result class for deserialization
+     * @return the invocation result
+     */
+    default <T, U> T invoke(String name, String functionName, U payload, Class<T> resultType) {
+        return invokeAsync(
+                        name,
+                        functionName,
+                        payload,
+                        TypeToken.get(resultType),
+                        InvokeConfig.builder().build())
+                .get();
+    }
+
+    /** Invokes another Lambda function with custom configuration, blocking until the result is available. */
+    default <T, U> T invoke(String name, String functionName, U payload, Class<T> resultType, InvokeConfig config) {
+        return invokeAsync(name, functionName, payload, TypeToken.get(resultType), config)
+                .get();
+    }
+
+    /** Invokes another Lambda function using a {@link TypeToken} for generic result types, blocking until complete. */
+    default <T, U> T invoke(String name, String functionName, U payload, TypeToken<T> resultType) {
+        return invokeAsync(
+                        name,
+                        functionName,
+                        payload,
+                        resultType,
+                        InvokeConfig.builder().build())
+                .get();
+    }
+
+    /** Invokes another Lambda function using a {@link TypeToken} and custom configuration, blocking until complete. */
+    default <T, U> T invoke(String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config) {
+        return invokeAsync(name, functionName, payload, resultType, config).get();
+    }
+
+    /** Invokes another Lambda function using a {@link TypeToken} and custom configuration, blocking until complete. */
+    default <T, U> DurableFuture<T> invokeAsync(
+            String name, String functionName, U payload, Class<T> resultType, InvokeConfig config) {
+        return invokeAsync(name, functionName, payload, TypeToken.get(resultType), config);
+    }
+
+    /** Asynchronously invokes another Lambda function, returning a {@link DurableFuture}. */
+    default <T, U> DurableFuture<T> invokeAsync(String name, String functionName, U payload, Class<T> resultType) {
+        return invokeAsync(
+                name,
+                functionName,
+                payload,
+                TypeToken.get(resultType),
+                InvokeConfig.builder().build());
+    }
+
+    /** Asynchronously invokes another Lambda function using a {@link TypeToken} for generic result types. */
+    default <T, U> DurableFuture<T> invokeAsync(String name, String functionName, U payload, TypeToken<T> resultType) {
+        return invokeAsync(
+                name, functionName, payload, resultType, InvokeConfig.builder().build());
+    }
+
+    /**
+     * Asynchronously invokes another Lambda function using a {@link TypeToken} and custom configuration.
+     *
+     * <p>This is the core invokeAsync implementation. All other invoke/invokeAsync overloads delegate here.
+     *
+     * @param <T> the result type
+     * @param <U> the payload type
+     * @param name the unique operation name within this context
+     * @param functionName the ARN or name of the Lambda function to invoke
+     * @param payload the input payload to send to the target function
+     * @param resultType the type token for deserialization of generic result types
+     * @param config the invoke configuration (custom SerDes for result and payload)
+     * @return a future representing the invocation result
+     */
+    <T, U> DurableFuture<T> invokeAsync(
+            String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config);
+
+    /** Creates a callback with custom configuration. */
+    default <T> DurableCallbackFuture<T> createCallback(String name, Class<T> resultType, CallbackConfig config) {
+        return createCallback(name, TypeToken.get(resultType), config);
+    }
+
+    /** Creates a callback using a {@link TypeToken} for generic result types. */
+    default <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType) {
+        return createCallback(name, resultType, CallbackConfig.builder().build());
+    }
+
+    /** Creates a callback with default configuration. */
+    default <T> DurableCallbackFuture<T> createCallback(String name, Class<T> resultType) {
+        return createCallback(
+                name, TypeToken.get(resultType), CallbackConfig.builder().build());
+    }
+
+    /**
+     * Creates a callback operation that suspends execution until an external system completes it.
+     *
+     * <p>This is the core createCallback implementation. Returns a {@link DurableCallbackFuture} containing a callback
+     * ID that external systems use to report completion via the Lambda Durable API.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic result types
+     * @param config the callback configuration (custom SerDes)
+     * @return a future containing the callback ID and eventual result
+     */
+    <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType, CallbackConfig config);
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @return the child context result
+     */
+    default <T> T runInChildContext(String name, Class<T> resultType, Function<DurableContext, T> func) {
+        return runInChildContextAsync(
+                        name,
+                        TypeToken.get(resultType),
+                        func,
+                        RunInChildContextConfig.builder().build())
+                .get();
+    }
+
+    /**
+     * Runs a function in a child context using a {@link TypeToken} for generic result types, blocking until complete.
+     */
+    default <T> T runInChildContext(String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
+        return runInChildContextAsync(
+                        name,
+                        resultType,
+                        func,
+                        RunInChildContextConfig.builder().build())
+                .get();
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @return the DurableFuture of the child context result
+     */
+    default <T> DurableFuture<T> runInChildContextAsync(
+            String name, Class<T> resultType, Function<DurableContext, T> func) {
+        return runInChildContextAsync(
+                name,
+                TypeToken.get(resultType),
+                func,
+                RunInChildContextConfig.builder().build());
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @return the DurableFuture of the child context result
+     */
+    default <T> DurableFuture<T> runInChildContextAsync(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
+        return runInChildContextAsync(
+                name, resultType, func, RunInChildContextConfig.builder().build());
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @return the child context result
+     */
+    default <T> T runInChildContext(
+            String name, Class<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
+        return runInChildContextAsync(name, TypeToken.get(resultType), func, config)
+                .get();
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @param config the configuration for the child context
+     * @return the child context result
+     */
+    default <T> T runInChildContext(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
+        return runInChildContextAsync(name, resultType, func, config).get();
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @param config the configuration for the child context
+     * @return the DurableFuture wrapping the child context result
+     */
+    default <T> DurableFuture<T> runInChildContextAsync(
+            String name, Class<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
+        return runInChildContextAsync(name, TypeToken.get(resultType), func, config);
+    }
+
+    /**
+     * Runs a function in a child context, blocking until it completes.
+     *
+     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
+     * collisions. On replay, the child context's operations are replayed independently.
+     *
+     * @param name the operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the function to execute, receiving a child {@link DurableContext}
+     * @param config the configuration for the child context
+     * @return the DurableFuture wrapping the child context result
+     */
+    <T> DurableFuture<T> runInChildContextAsync(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config);
+
+    default <I, O> MapResult<O> map(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function) {
+        return mapAsync(
+                        name,
+                        items,
+                        TypeToken.get(resultType),
+                        function,
+                        MapConfig.builder().build())
+                .get();
+    }
+
+    default <I, O> MapResult<O> map(
+            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config) {
+        return mapAsync(name, items, TypeToken.get(resultType), function, config)
+                .get();
+    }
+
+    default <I, O> MapResult<O> map(
+            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function) {
+        return mapAsync(name, items, resultType, function, MapConfig.builder().build())
+                .get();
+    }
+
+    default <I, O> MapResult<O> map(
+            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config) {
+        return mapAsync(name, items, resultType, function, config).get();
+    }
+
+    default <I, O> DurableFuture<MapResult<O>> mapAsync(
+            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function) {
+        return mapAsync(
+                name,
+                items,
+                TypeToken.get(resultType),
+                function,
+                MapConfig.builder().build());
+    }
+
+    default <I, O> DurableFuture<MapResult<O>> mapAsync(
+            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config) {
+        return mapAsync(name, items, TypeToken.get(resultType), function, config);
+    }
+
+    default <I, O> DurableFuture<MapResult<O>> mapAsync(
+            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function) {
+        return mapAsync(name, items, resultType, function, MapConfig.builder().build());
+    }
+
+    <I, O> DurableFuture<MapResult<O>> mapAsync(
+            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config);
+
+    /**
+     * Creates a {@link ParallelDurableFuture} for executing multiple branches concurrently with default config
+     *
+     * @return a new ParallelDurableFuture for registering and executing branches
+     */
+    default ParallelDurableFuture parallel(String name) {
+        return parallel(name, ParallelConfig.builder().build());
+    }
+
+    /**
+     * Creates a {@link ParallelDurableFuture} for executing multiple branches concurrently.
+     *
+     * @param config the parallel execution configuration
+     * @return a new ParallelDurableFuture for registering and executing branches
+     */
+    ParallelDurableFuture parallel(String name, ParallelConfig config);
+
+    /**
+     * Executes a submitter function and waits for an external callback, blocking until the callback completes.
+     *
+     * <p>Combines a step (to run the submitter) and a callback (to receive the external result) in a child context. The
+     * submitter receives a callback ID that external systems use to report completion.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param func the submitter function, receiving the callback ID and a {@link StepContext}
+     * @return the callback result
+     */
+    default <T> T waitForCallback(String name, Class<T> resultType, BiConsumer<String, StepContext> func) {
+        return waitForCallbackAsync(
+                        name,
+                        TypeToken.get(resultType),
+                        func,
+                        WaitForCallbackConfig.builder().build())
+                .get();
+    }
+
+    /** Executes a submitter and waits for an external callback using a {@link TypeToken}, blocking until complete. */
+    default <T> T waitForCallback(String name, TypeToken<T> resultType, BiConsumer<String, StepContext> func) {
+        return waitForCallbackAsync(
+                        name, resultType, func, WaitForCallbackConfig.builder().build())
+                .get();
+    }
+
+    /** Executes a submitter and waits for an external callback with custom configuration, blocking until complete. */
+    default <T> T waitForCallback(
+            String name,
+            Class<T> resultType,
+            BiConsumer<String, StepContext> func,
+            WaitForCallbackConfig waitForCallbackConfig) {
+        return waitForCallbackAsync(name, TypeToken.get(resultType), func, waitForCallbackConfig)
+                .get();
+    }
+
+    /** Executes a submitter and waits for an external callback using a {@link TypeToken} and custom configuration. */
+    default <T> T waitForCallback(
+            String name,
+            TypeToken<T> resultType,
+            BiConsumer<String, StepContext> func,
+            WaitForCallbackConfig waitForCallbackConfig) {
+        return waitForCallbackAsync(name, resultType, func, waitForCallbackConfig)
+                .get();
+    }
+
+    /** Asynchronously executes a submitter and waits for an external callback. */
+    default <T> DurableFuture<T> waitForCallbackAsync(
+            String name, Class<T> resultType, BiConsumer<String, StepContext> func) {
+        return waitForCallbackAsync(
+                name,
+                TypeToken.get(resultType),
+                func,
+                WaitForCallbackConfig.builder().build());
+    }
+
+    /** Asynchronously executes a submitter and waits for an external callback using a {@link TypeToken}. */
+    default <T> DurableFuture<T> waitForCallbackAsync(
+            String name, TypeToken<T> resultType, BiConsumer<String, StepContext> func) {
+        return waitForCallbackAsync(
+                name, resultType, func, WaitForCallbackConfig.builder().build());
+    }
+
+    /** Asynchronously executes a submitter and waits for an external callback with custom configuration. */
+    default <T> DurableFuture<T> waitForCallbackAsync(
+            String name,
+            Class<T> resultType,
+            BiConsumer<String, StepContext> func,
+            WaitForCallbackConfig waitForCallbackConfig) {
+        return waitForCallbackAsync(name, TypeToken.get(resultType), func, waitForCallbackConfig);
+    }
+
+    /**
+     * Asynchronously executes a submitter and waits for an external callback using a {@link TypeToken} and custom
+     * configuration.
+     *
+     * <p>This is the core waitForCallbackAsync implementation. All other waitForCallback/waitForCallbackAsync overloads
+     * delegate here. Internally creates a child context containing a callback operation and a step that runs the
+     * submitter function.
+     *
+     * @param <T> the result type
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic result types
+     * @param func the submitter function, receiving the callback ID and a {@link StepContext}
+     * @param waitForCallbackConfig the configuration for both the callback and submitter step
+     * @return a future representing the callback result
+     */
+    <T> DurableFuture<T> waitForCallbackAsync(
+            String name,
+            TypeToken<T> resultType,
+            BiConsumer<String, StepContext> func,
+            WaitForCallbackConfig waitForCallbackConfig);
+
+    /**
+     * Polls a condition function until it signals done, blocking until complete.
+     *
+     * @param <T> the type of state being polled
+     * @param name the unique operation name within this context
+     * @param resultType the result class for deserialization
+     * @param checkFunc the function that evaluates the condition and returns a {@link WaitForConditionResult}
+     * @return the final state value when the condition is met
+     */
+    default <T> T waitForCondition(
+            String name, Class<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
+        return waitForConditionAsync(
+                        name,
+                        TypeToken.get(resultType),
+                        checkFunc,
+                        WaitForConditionConfig.<T>builder().build())
+                .get();
+    }
+
+    /** Polls a condition function until it signals done, using a custom configuration, blocking until complete. */
+    default <T> T waitForCondition(
+            String name,
+            Class<T> resultType,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            WaitForConditionConfig<T> config) {
+        return waitForConditionAsync(name, resultType, checkFunc, config).get();
+    }
+
+    /** Polls a condition function until it signals done, using a {@link TypeToken}, blocking until complete. */
+    default <T> T waitForCondition(
+            String name, TypeToken<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
+        return waitForConditionAsync(
+                        name,
+                        resultType,
+                        checkFunc,
+                        WaitForConditionConfig.<T>builder().build())
+                .get();
+    }
+
+    /**
+     * Polls a condition function until it signals done, using a {@link TypeToken} and custom configuration, blocking
+     * until complete.
+     */
+    default <T> T waitForCondition(
+            String name,
+            TypeToken<T> resultType,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            WaitForConditionConfig<T> config) {
+        return waitForConditionAsync(name, resultType, checkFunc, config).get();
+    }
+
+    /** Asynchronously polls a condition function until it signals done. */
+    default <T> DurableFuture<T> waitForConditionAsync(
+            String name, Class<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
+        return waitForConditionAsync(
+                name,
+                TypeToken.get(resultType),
+                checkFunc,
+                WaitForConditionConfig.<T>builder().build());
+    }
+
+    /** Asynchronously polls a condition function until it signals done, using custom configuration. */
+    default <T> DurableFuture<T> waitForConditionAsync(
+            String name,
+            Class<T> resultType,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            WaitForConditionConfig<T> config) {
+        return waitForConditionAsync(name, TypeToken.get(resultType), checkFunc, config);
+    }
+
+    /** Asynchronously polls a condition function until it signals done, using a {@link TypeToken}. */
+    default <T> DurableFuture<T> waitForConditionAsync(
+            String name, TypeToken<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
+        return waitForConditionAsync(
+                name, resultType, checkFunc, WaitForConditionConfig.<T>builder().build());
+    }
+
+    /**
+     * Asynchronously polls a condition function until it signals done, using a {@link TypeToken} and custom
+     * configuration.
+     *
+     * <p>This is the core waitForConditionAsync implementation. All other waitForCondition/waitForConditionAsync
+     * overloads delegate here.
+     *
+     * @param <T> the type of state being polled
+     * @param name the unique operation name within this context
+     * @param resultType the type token for deserialization of generic types
+     * @param checkFunc the function that evaluates the condition and returns a {@link WaitForConditionResult}
+     * @param config the waitForCondition configuration (wait strategy, custom SerDes)
+     * @return a future representing the final state value
+     */
+    <T> DurableFuture<T> waitForConditionAsync(
+            String name,
+            TypeToken<T> resultType,
+            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
+            WaitForConditionConfig<T> config);
+
+    /**
+     * Function applied to each item in a map operation.
+     *
+     * <p>Each invocation receives its own {@link DurableContext}, allowing the use of durable operations like
+     * {@code step()} and {@code wait()} within the function body. The index parameter indicates the item's position in
+     * the input collection.
+     *
+     * @param <I> the input item type
+     * @param <O> the output result type
+     */
+    @FunctionalInterface
+    interface MapFunction<I, O> {
+
+        /**
+         * Applies this function to the given item.
+         *
+         * @param item the input item to process
+         * @param index the zero-based index of the item in the input collection
+         * @param context the durable context for this item's execution
+         * @return the result of processing the item
+         */
+        O apply(I item, int index, DurableContext context);
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.html new file mode 100644 index 000000000..1c6ae9766 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.html @@ -0,0 +1 @@ +DurableFuture

DurableFuture

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 36100%0 of 0n/a060806
anyOf(DurableFuture[])14100%n/a010601
allOf(DurableFuture[])6100%n/a010101
allOf(List)6100%n/a010101
lambda$anyOf$0(DurableFuture)4100%n/a010101
lambda$anyOf$2(Object)3100%n/a010101
lambda$anyOf$1(int)3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.java.html new file mode 100644 index 000000000..71db4d806 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.java.html @@ -0,0 +1,73 @@ +DurableFuture.java

DurableFuture.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import software.amazon.lambda.durable.operation.BaseDurableOperation;
+
+/**
+ * A future representing the result of an asynchronous durable operation.
+ *
+ * <p>Calling {@link #get()} blocks the current thread until the operation completes, which may involve suspension and
+ * replay across Lambda invocations.
+ *
+ * @param <T> the result type
+ */
+public interface DurableFuture<T> {
+    /**
+     * Blocks until the operation completes and returns the result.
+     *
+     * <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
+     * reactivation (resumes execution) - Result retrieval
+     *
+     * @return the operation result
+     */
+    T get();
+
+    /**
+     * Waits for all provided futures to complete and returns their results in order.
+     *
+     * <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
+     * waits for all operations to complete. During replay, completed operations return immediately.
+     *
+     * @param futures the futures to wait for
+     * @param <T> the result type of the futures
+     * @return a list of results in the same order as the input futures
+     */
+    @SafeVarargs
+    static <T> List<T> allOf(DurableFuture<T>... futures) {
+        return Arrays.stream(futures).map(DurableFuture::get).toList();
+    }
+
+    /**
+     * Waits for all provided futures to complete and returns their results in order.
+     *
+     * <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
+     * waits for all operations to complete. During replay, completed operations return immediately.
+     *
+     * @param futures the list of futures to wait for
+     * @param <T> the result type of the futures
+     * @return a list of results in the same order as the input futures
+     */
+    static <T> List<T> allOf(List<DurableFuture<T>> futures) {
+        return futures.stream().map(DurableFuture::get).toList();
+    }
+
+    /**
+     * Waits for any of the provided futures to complete and returns its result.
+     *
+     * @param futures the futures to wait for
+     * @return the result of the first future to complete
+     */
+    static Object anyOf(DurableFuture<?>... futures) {
+        return CompletableFuture.anyOf(Arrays.stream(futures)
+                        .map(f -> ((BaseDurableOperation) f).getCompletionFuture())
+                        .toArray(CompletableFuture[]::new))
+                .thenApply(o -> (DurableFuture) o)
+                .join()
+                .get();
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.html new file mode 100644 index 000000000..1b965e7c8 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.html @@ -0,0 +1 @@ +DurableHandler

DurableHandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total36 of 6342%0 of 0n/a1561415
handleRequest(InputStream, OutputStream, Context)360%n/a116611
DurableHandler()18100%n/a010501
static {...}4100%n/a010101
getConfiguration()3100%n/a010101
createConfiguration()2100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.java.html new file mode 100644 index 000000000..526109787 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.java.html @@ -0,0 +1,146 @@ +DurableHandler.java

DurableHandler.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.lambda.durable.execution.DurableExecutor;
+import software.amazon.lambda.durable.model.DurableExecutionInput;
+import software.amazon.lambda.durable.serde.DurableInputOutputSerDes;
+
+/**
+ * Abstract base class for Lambda handlers that use durable execution.
+ *
+ * <p>Extend this class and implement {@link #handleRequest(Object, DurableContext)} to build resilient, multi-step
+ * workflows. The handler automatically manages checkpoint-and-replay, input deserialization, and communication with the
+ * Lambda Durable Functions backend.
+ *
+ * @param <I> the input type
+ * @param <O> the output type
+ */
+public abstract class DurableHandler<I, O> implements RequestStreamHandler {
+
+    private final TypeToken<I> inputType;
+    private final DurableConfig config;
+    private final DurableInputOutputSerDes serDes = new DurableInputOutputSerDes(); // Internal ObjectMapper
+    private static final Logger logger = LoggerFactory.getLogger(DurableHandler.class);
+
+    protected DurableHandler() {
+        this.inputType = TypeToken.fromGenericSuperClass(getClass(), 0);
+        this.config = createConfiguration();
+    }
+
+    /**
+     * Gets the configuration used by this handler. This allows test frameworks and other tools to access the handler's
+     * configuration for testing purposes.
+     *
+     * <p>DurableConfig is immutable.
+     *
+     * @return The DurableConfig instance used by this handler
+     */
+    public DurableConfig getConfiguration() {
+        return config;
+    }
+
+    /**
+     * Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
+     * SerDes, or other configuration.
+     *
+     * <p>The {@link software.amazon.lambda.durable.client.LambdaDurableFunctionsClient} is a wrapper that customers
+     * should use to inject their own configured {@link software.amazon.awssdk.services.lambda.LambdaClient}. This
+     * allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
+     *
+     * <p>Basic example with custom region and credentials:
+     *
+     * <pre>{@code
+     * @Override
+     * protected DurableConfig createConfiguration() {
+     *     // Create custom Lambda client with specific configuration
+     *     var lambdaClient = LambdaClient.builder()
+     *         .region(Region.US_WEST_2)
+     *         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
+     *         .build();
+     *
+     *     // Wrap the Lambda client with LambdaDurableFunctionsClient
+     *     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
+     *
+     *     return DurableConfig.builder()
+     *         .withDurableExecutionClient(durableClient)
+     *         .build();
+     * }
+     * }</pre>
+     *
+     * <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
+     *
+     * <pre>{@code
+     * @Override
+     * protected DurableConfig createConfiguration() {
+     *     // Configure AWS CRT HTTP Client for optimal performance
+     *     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
+     *         .maxConcurrency(50)
+     *         .connectionTimeout(Duration.ofSeconds(30))
+     *         .connectionMaxIdleTime(Duration.ofSeconds(60))
+     *         .build();
+     *
+     *     // Create Lambda client with CRT HTTP client
+     *     var lambdaClient = LambdaClient.builder()
+     *         .region(Region.US_EAST_1)
+     *         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
+     *         .httpClient(crtHttpClient)
+     *         .overrideConfiguration(ClientOverrideConfiguration.builder()
+     *             .retryPolicy(RetryPolicy.builder()
+     *                 .numRetries(5)
+     *                 .build())
+     *             .build())
+     *         .build();
+     *
+     *     // Wrap with LambdaDurableFunctionsClient
+     *     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
+     *
+     *     return DurableConfig.builder()
+     *         .withDurableExecutionClient(durableClient)
+     *         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
+     *         .withExecutorService(customExecutor)  // Optional: custom thread pool
+     *         .build();
+     * }
+     * }</pre>
+     *
+     * @return DurableConfig with desired configuration
+     */
+    protected DurableConfig createConfiguration() {
+        return DurableConfig.defaultConfig();
+    }
+
+    /**
+     * Reads the request, executes the durable function handler and writes the response
+     *
+     * @param inputStream the input stream
+     * @param outputStream the output stream
+     * @param context the Lambda context
+     * @throws IOException thrown when serialize/deserialize fails
+     */
+    @Override
+    public final void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
+            throws IOException {
+        var inputString = new String(inputStream.readAllBytes());
+        logger.debug("Raw input from durable handler: {}", inputString);
+        var input = serDes.deserialize(inputString, TypeToken.get(DurableExecutionInput.class));
+        var output = DurableExecutor.execute(input, context, inputType, this::handleRequest, config);
+        outputStream.write(serDes.serialize(output).getBytes());
+    }
+
+    /**
+     * Handle the durable execution.
+     *
+     * @param input User input
+     * @param context Durable context for operations
+     * @return Result
+     */
+    public abstract O handleRequest(I input, DurableContext context);
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.html new file mode 100644 index 000000000..224290fba --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.html @@ -0,0 +1 @@ +ParallelDurableFuture

ParallelDurableFuture

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 2568%0 of 0n/a131513
branch(String, TypeToken, Function)80%n/a111111
branch(String, Class, Function)9100%n/a010301
branch(String, Class, Function, ParallelBranchConfig)8100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.java.html new file mode 100644 index 000000000..9b7401888 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.java.html @@ -0,0 +1,75 @@ +ParallelDurableFuture.java

ParallelDurableFuture.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import java.util.function.Function;
+import software.amazon.lambda.durable.config.ParallelBranchConfig;
+import software.amazon.lambda.durable.model.ParallelResult;
+
+/** User-facing context for managing parallel branch execution within a durable function. */
+public interface ParallelDurableFuture extends AutoCloseable, DurableFuture<ParallelResult> {
+
+    /**
+     * Registers and immediately starts a branch (respects maxConcurrency).
+     *
+     * @param name the branch name
+     * @param resultType the result type token for generic types
+     * @param func the function to execute in the branch's child context
+     * @param <T> the result type
+     * @return a {@link DurableFuture} that will contain the branch result
+     * @throws IllegalStateException if called after {@link #close()}
+     */
+    default <T> DurableFuture<T> branch(String name, Class<T> resultType, Function<DurableContext, T> func) {
+        return branch(
+                name,
+                TypeToken.get(resultType),
+                func,
+                ParallelBranchConfig.builder().build());
+    }
+
+    /**
+     * Registers and immediately starts a branch (respects maxConcurrency).
+     *
+     * @param name the branch name
+     * @param resultType the result type token for generic types
+     * @param func the function to execute in the branch's child context
+     * @param <T> the result type
+     * @return a {@link DurableFuture} that will contain the branch result
+     * @throws IllegalStateException if called after {@link #close()}
+     */
+    default <T> DurableFuture<T> branch(String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
+        return branch(name, resultType, func, ParallelBranchConfig.builder().build());
+    }
+
+    /**
+     * Registers and immediately starts a branch (respects maxConcurrency).
+     *
+     * @param name the branch name
+     * @param resultType the result type token for generic types
+     * @param func the function to execute in the branch's child context
+     * @param <T> the result type
+     * @return a {@link DurableFuture} that will contain the branch result
+     * @throws IllegalStateException if called after {@link #close()}
+     */
+    default <T> DurableFuture<T> branch(
+            String name, Class<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config) {
+        return branch(name, TypeToken.get(resultType), func, config);
+    }
+
+    /**
+     * Registers and immediately starts a branch (respects maxConcurrency).
+     *
+     * @param name the branch name
+     * @param resultType the result type token for generic types
+     * @param func the function to execute in the branch's child context
+     * @param <T> the result type
+     * @return a {@link DurableFuture} that will contain the branch result
+     * @throws IllegalStateException if called after {@link #close()}
+     */
+    <T> DurableFuture<T> branch(
+            String name, TypeToken<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config);
+
+    /** Calls {@link #get()} if not already called. Guarantees that the context is closed. */
+    void close();
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$1.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$1.html new file mode 100644 index 000000000..0227b7942 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$1.html @@ -0,0 +1 @@ +TypeToken.new TypeToken() {...}

TypeToken.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010101
{...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$2.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$2.html new file mode 100644 index 000000000..656599a72 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$2.html @@ -0,0 +1 @@ +TypeToken.new TypeToken() {...}

TypeToken.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 4100%0 of 0n/a010101
{...}4100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.html new file mode 100644 index 000000000..b780582d6 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.html @@ -0,0 +1 @@ +TypeToken

TypeToken

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total4 of 9195%2 of 875%21222208
equals(Object)41578%2250%232501
TypeToken()25100%2100%020601
fromGenericSuperClass(Class, int)24100%2100%020401
TypeToken(Type)6100%n/a010301
get(Class)5100%n/a010101
toString()5100%n/a010101
hashCode()4100%n/a010101
getType()3100%n/a010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.java.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.java.html new file mode 100644 index 000000000..3a2c824ea --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.java.html @@ -0,0 +1,111 @@ +TypeToken.java

TypeToken.java

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+package software.amazon.lambda.durable;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+/**
+ * Framework-agnostic type token for capturing generic type information at runtime.
+ *
+ * <p>This class enables type-safe deserialization of complex generic types like {@code List<MyObject>} or
+ * {@code Map<String, MyObject>} that would otherwise lose their type information due to Java's type erasure.
+ *
+ * <p>Usage example:
+ *
+ * <pre>{@code
+ * // Capture generic type information
+ * TypeToken<List<String>> token = new TypeToken<List<String>>() {};
+ *
+ * // Use with DurableContext
+ * List<String> items = context.step("fetch-items",
+ *     new TypeToken<List<String>>() {},
+ *     stepCtx -> fetchItems());
+ * }</pre>
+ *
+ * @param <T> the type being captured
+ */
+public abstract class TypeToken<T> {
+    private final Type type;
+
+    /**
+     * Constructs a new TypeToken. This constructor must be called from an anonymous subclass to capture the type
+     * parameter.
+     *
+     * @throws IllegalStateException if created without a type parameter
+     */
+    protected TypeToken() {
+        Type superClass = getClass().getGenericSuperclass();
+        if (superClass instanceof ParameterizedType parameterizedType) {
+            this.type = parameterizedType.getActualTypeArguments()[0];
+        } else {
+            throw new IllegalStateException("TypeToken must be created as an anonymous subclass with a type parameter. "
+                    + "Example: new TypeToken<List<String>>() {}");
+        }
+    }
+
+    private TypeToken(Type type) {
+        this.type = type;
+    }
+
+    /**
+     * Creates a TypeToken for a simple (non-generic) class.
+     *
+     * @param clazz the class to create a token for
+     * @param <U> the type
+     * @return a TypeToken representing the given class
+     */
+    public static <U> TypeToken<U> get(Class<U> clazz) {
+        return new TypeToken<>(clazz) {};
+    }
+
+    /**
+     * Creates a TypeToken by extracting a type parameter from a generic superclass.
+     *
+     * @param clazz the subclass to extract the type from
+     * @param typeParameterPosition the position of the type parameter in the superclass declaration (0-based)
+     * @param <U> the type to extract
+     * @param <V> the superclass type
+     * @return a TypeToken representing the extracted type
+     */
+    static <U, V> TypeToken<U> fromGenericSuperClass(Class<V> clazz, int typeParameterPosition) {
+        // Extract input type from generic superclass
+        var superClass = clazz.getGenericSuperclass();
+        if (superClass instanceof ParameterizedType paramType) {
+            return new TypeToken<>(paramType.getActualTypeArguments()[typeParameterPosition]) {};
+        } else {
+            throw new IllegalArgumentException("Cannot determine type from base class: " + clazz);
+        }
+    }
+
+    /**
+     * Returns the captured type.
+     *
+     * @return the type represented by this token
+     */
+    public Type getType() {
+        return type;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof TypeToken<?> other) {
+            return type.equals(other.type);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return type.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "TypeToken<" + type.getTypeName() + ">";
+    }
+}
+
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.html new file mode 100644 index 000000000..cc0a99429 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.html @@ -0,0 +1 @@ +software.amazon.lambda.durable

software.amazon.lambda.durable

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total312 of 1,00568%6 of 2070%37116642373210609
DurableContext25323448%n/a305651104305601
DurableHandler362742%n/a156141501
DurableConfig1122295%4866%32346501701
ParallelDurableFuture81768%n/a13151301
TypeToken8795%2675%2122220801
DurableConfig.Builder62100%n/a090190901
DurableFuture36100%n/a06080601
TypeToken.new TypeToken() {...}100%n/a01010101
TypeToken.new TypeToken() {...}100%n/a01010101
\ No newline at end of file diff --git a/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.source.html b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.source.html new file mode 100644 index 000000000..ba21c3d11 --- /dev/null +++ b/coverage/aws-durable-execution-sdk-java/software.amazon.lambda.durable/index.source.html @@ -0,0 +1 @@ +software.amazon.lambda.durable

software.amazon.lambda.durable

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total312 of 1,00568%6 of 2070%37116642373210609
DurableContext.java25323448%n/a305651104305601
DurableHandler.java362742%n/a156141501
DurableConfig.java1128496%4866%33248402602
ParallelDurableFuture.java81768%n/a13151301
TypeToken.java9595%2675%21422201003
DurableFuture.java36100%n/a06080601
\ No newline at end of file diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 000000000..3bb6bb271 --- /dev/null +++ b/coverage/index.html @@ -0,0 +1 @@ +AWS Lambda Durable Execution SDK Coverage Report

AWS Lambda Durable Execution SDK Coverage Report

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total2,950 of 15,52480%373 of 1,11366%4041,5607363,6421349678180
aws-durable-execution-sdk-java-testing1,6841,73350%25910729%22536942283763160310
aws-durable-execution-sdk-java8148,30391%10260785%1509891942,211516241113
aws-durable-execution-sdk-java-examples4522,53884%122668%2920212059420183457
aws-durable-execution-sdk-java-integration-testsn/an/a00000000
\ No newline at end of file diff --git a/coverage/jacoco-resources/branchfc.gif b/coverage/jacoco-resources/branchfc.gif new file mode 100644 index 000000000..989b46d30 Binary files /dev/null and b/coverage/jacoco-resources/branchfc.gif differ diff --git a/coverage/jacoco-resources/branchnc.gif b/coverage/jacoco-resources/branchnc.gif new file mode 100644 index 000000000..1933e07c3 Binary files /dev/null and b/coverage/jacoco-resources/branchnc.gif differ diff --git a/coverage/jacoco-resources/branchpc.gif b/coverage/jacoco-resources/branchpc.gif new file mode 100644 index 000000000..cbf711b70 Binary files /dev/null and b/coverage/jacoco-resources/branchpc.gif differ diff --git a/coverage/jacoco-resources/bundle.gif b/coverage/jacoco-resources/bundle.gif new file mode 100644 index 000000000..fca9c53e6 Binary files /dev/null and b/coverage/jacoco-resources/bundle.gif differ diff --git a/coverage/jacoco-resources/class.gif b/coverage/jacoco-resources/class.gif new file mode 100644 index 000000000..eb348fb0d Binary files /dev/null and b/coverage/jacoco-resources/class.gif differ diff --git a/coverage/jacoco-resources/down.gif b/coverage/jacoco-resources/down.gif new file mode 100644 index 000000000..440a14db7 Binary files /dev/null and b/coverage/jacoco-resources/down.gif differ diff --git a/coverage/jacoco-resources/greenbar.gif b/coverage/jacoco-resources/greenbar.gif new file mode 100644 index 000000000..0ba656725 Binary files /dev/null and b/coverage/jacoco-resources/greenbar.gif differ diff --git a/coverage/jacoco-resources/group.gif b/coverage/jacoco-resources/group.gif new file mode 100644 index 000000000..a4ea580d2 Binary files /dev/null and b/coverage/jacoco-resources/group.gif differ diff --git a/coverage/jacoco-resources/method.gif b/coverage/jacoco-resources/method.gif new file mode 100644 index 000000000..7d24707ee Binary files /dev/null and b/coverage/jacoco-resources/method.gif differ diff --git a/coverage/jacoco-resources/package.gif b/coverage/jacoco-resources/package.gif new file mode 100644 index 000000000..131c28da4 Binary files /dev/null and b/coverage/jacoco-resources/package.gif differ diff --git a/coverage/jacoco-resources/prettify.css b/coverage/jacoco-resources/prettify.css new file mode 100644 index 000000000..be5166e0f --- /dev/null +++ b/coverage/jacoco-resources/prettify.css @@ -0,0 +1,13 @@ +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #2A00FF; } +.kwd { color: #7F0055; font-weight:bold; } +.com { color: #3F5FBF; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +.tag { color: #008; } +.atn { color: #606; } +.atv { color: #080; } +.dec { color: #606; } diff --git a/coverage/jacoco-resources/prettify.js b/coverage/jacoco-resources/prettify.js new file mode 100644 index 000000000..b2766fe0a --- /dev/null +++ b/coverage/jacoco-resources/prettify.js @@ -0,0 +1,1510 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + *

+ * + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

+ * Usage:

    + *
  1. include this source file in an html page via + * {@code } + *
  2. define style rules. See the example page for examples. + *
  3. mark the {@code
    } and {@code } tags in your source with
    + *    {@code class=prettyprint.}
    + *    You can also use the (html deprecated) {@code } tag, but the pretty
    + *    printer needs to do more substantial DOM manipulations to support that, so
    + *    some css styles may not be preserved.
    + * </ol>
    + * That's it.  I wanted to keep the API as simple as possible, so there's no
    + * need to specify which language the code is in, but if you wish, you can add
    + * another class to the {@code <pre>} or {@code <code>} element to specify the
    + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
    + * starts with "lang-" followed by a file extension, specifies the file type.
    + * See the "lang-*.js" files in this directory for code that implements
    + * per-language file handlers.
    + * <p>
    + * Change log:<br>
    + * cbeust, 2006/08/22
    + * <blockquote>
    + *   Java annotations (start with "@") are now captured as literals ("lit")
    + * </blockquote>
    + * @requires console
    + */
    +
    +// JSLint declarations
    +/*global console, document, navigator, setTimeout, window */
    +
    +/**
    + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
    + * UI events.
    + * If set to {@code false}, {@code prettyPrint()} is synchronous.
    + */
    +window['PR_SHOULD_USE_CONTINUATION'] = true;
    +
    +/** the number of characters between tab columns */
    +window['PR_TAB_WIDTH'] = 8;
    +
    +/** Walks the DOM returning a properly escaped version of innerHTML.
    +  * @param {Node} node
    +  * @param {Array.<string>} out output buffer that receives chunks of HTML.
    +  */
    +window['PR_normalizedHtml']
    +
    +/** Contains functions for creating and registering new language handlers.
    +  * @type {Object}
    +  */
    +  = window['PR']
    +
    +/** Pretty print a chunk of code.
    +  *
    +  * @param {string} sourceCodeHtml code as html
    +  * @return {string} code as html, but prettier
    +  */
    +  = window['prettyPrintOne']
    +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    +  * {@code class=prettyprint} and prettify them.
    +  * @param {Function?} opt_whenDone if specified, called when the last entry
    +  *     has been finished.
    +  */
    +  = window['prettyPrint'] = void 0;
    +
    +/** browser detection. @extern @returns false if not IE, otherwise the major version. */
    +window['_pr_isIE6'] = function () {
    +  var ieVersion = navigator && navigator.userAgent &&
    +      navigator.userAgent.match(/\bMSIE ([678])\./);
    +  ieVersion = ieVersion ? +ieVersion[1] : false;
    +  window['_pr_isIE6'] = function () { return ieVersion; };
    +  return ieVersion;
    +};
    +
    +
    +(function () {
    +  // Keyword lists for various languages.
    +  var FLOW_CONTROL_KEYWORDS =
    +      "break continue do else for if return while ";
    +  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
    +      "double enum extern float goto int long register short signed sizeof " +
    +      "static struct switch typedef union unsigned void volatile ";
    +  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
    +      "new operator private protected public this throw true try typeof ";
    +  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
    +      "concept concept_map const_cast constexpr decltype " +
    +      "dynamic_cast explicit export friend inline late_check " +
    +      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
    +      "template typeid typename using virtual wchar_t where ";
    +  var JAVA_KEYWORDS = COMMON_KEYWORDS +
    +      "abstract boolean byte extends final finally implements import " +
    +      "instanceof null native package strictfp super synchronized throws " +
    +      "transient ";
    +  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
    +      "as base by checked decimal delegate descending event " +
    +      "fixed foreach from group implicit in interface internal into is lock " +
    +      "object out override orderby params partial readonly ref sbyte sealed " +
    +      "stackalloc string select uint ulong unchecked unsafe ushort var ";
    +  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
    +      "debugger eval export function get null set undefined var with " +
    +      "Infinity NaN ";
    +  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
    +      "goto if import last local my next no our print package redo require " +
    +      "sub undef unless until use wantarray while BEGIN END ";
    +  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
    +      "elif except exec finally from global import in is lambda " +
    +      "nonlocal not or pass print raise try with yield " +
    +      "False True None ";
    +  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
    +      " defined elsif end ensure false in module next nil not or redo rescue " +
    +      "retry self super then true undef unless until when yield BEGIN END ";
    +  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
    +      "function in local set then until ";
    +  var ALL_KEYWORDS = (
    +      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
    +      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
    +
    +  // token style names.  correspond to css classes
    +  /** token style for a string literal */
    +  var PR_STRING = 'str';
    +  /** token style for a keyword */
    +  var PR_KEYWORD = 'kwd';
    +  /** token style for a comment */
    +  var PR_COMMENT = 'com';
    +  /** token style for a type */
    +  var PR_TYPE = 'typ';
    +  /** token style for a literal value.  e.g. 1, null, true. */
    +  var PR_LITERAL = 'lit';
    +  /** token style for a punctuation string. */
    +  var PR_PUNCTUATION = 'pun';
    +  /** token style for a punctuation string. */
    +  var PR_PLAIN = 'pln';
    +
    +  /** token style for an sgml tag. */
    +  var PR_TAG = 'tag';
    +  /** token style for a markup declaration such as a DOCTYPE. */
    +  var PR_DECLARATION = 'dec';
    +  /** token style for embedded source. */
    +  var PR_SOURCE = 'src';
    +  /** token style for an sgml attribute name. */
    +  var PR_ATTRIB_NAME = 'atn';
    +  /** token style for an sgml attribute value. */
    +  var PR_ATTRIB_VALUE = 'atv';
    +
    +  /**
    +   * A class that indicates a section of markup that is not code, e.g. to allow
    +   * embedding of line numbers within code listings.
    +   */
    +  var PR_NOCODE = 'nocode';
    +
    +  /** A set of tokens that can precede a regular expression literal in
    +    * javascript.
    +    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
    +    * list, but I've removed ones that might be problematic when seen in
    +    * languages that don't support regular expression literals.
    +    *
    +    * <p>Specifically, I've removed any keywords that can't precede a regexp
    +    * literal in a syntactically legal javascript program, and I've removed the
    +    * "in" keyword since it's not a keyword in many languages, and might be used
    +    * as a count of inches.
    +    *
    +    * <p>The link a above does not accurately describe EcmaScript rules since
    +    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
    +    * very well in practice.
    +    *
    +    * @private
    +    */
    +  var REGEXP_PRECEDER_PATTERN = function () {
    +      var preceders = [
    +          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
    +          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
    +          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
    +          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
    +          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
    +          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
    +          "||=", "~" /* handles =~ and !~ */,
    +          "break", "case", "continue", "delete",
    +          "do", "else", "finally", "instanceof",
    +          "return", "throw", "try", "typeof"
    +          ];
    +      var pattern = '(?:^^|[+-]';
    +      for (var i = 0; i < preceders.length; ++i) {
    +        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
    +      }
    +      pattern += ')\\s*';  // matches at end, and matches empty string
    +      return pattern;
    +      // CAVEAT: this does not properly handle the case where a regular
    +      // expression immediately follows another since a regular expression may
    +      // have flags for case-sensitivity and the like.  Having regexp tokens
    +      // adjacent is not valid in any language I'm aware of, so I'm punting.
    +      // TODO: maybe style special characters inside a regexp as punctuation.
    +    }();
    +
    +  // Define regexps here so that the interpreter doesn't have to create an
    +  // object each time the function containing them is called.
    +  // The language spec requires a new object created even if you don't access
    +  // the $1 members.
    +  var pr_amp = /&/g;
    +  var pr_lt = /</g;
    +  var pr_gt = />/g;
    +  var pr_quot = /\"/g;
    +  /** like textToHtml but escapes double quotes to be attribute safe. */
    +  function attribToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;')
    +        .replace(pr_quot, '&quot;');
    +  }
    +
    +  /** escapest html special characters to html. */
    +  function textToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;');
    +  }
    +
    +
    +  var pr_ltEnt = /&lt;/g;
    +  var pr_gtEnt = /&gt;/g;
    +  var pr_aposEnt = /&apos;/g;
    +  var pr_quotEnt = /&quot;/g;
    +  var pr_ampEnt = /&amp;/g;
    +  var pr_nbspEnt = /&nbsp;/g;
    +  /** unescapes html to plain text. */
    +  function htmlToText(html) {
    +    var pos = html.indexOf('&');
    +    if (pos < 0) { return html; }
    +    // Handle numeric entities specially.  We can't use functional substitution
    +    // since that doesn't work in older versions of Safari.
    +    // These should be rare since most browsers convert them to normal chars.
    +    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
    +      var end = html.indexOf(';', pos);
    +      if (end >= 0) {
    +        var num = html.substring(pos + 3, end);
    +        var radix = 10;
    +        if (num && num.charAt(0) === 'x') {
    +          num = num.substring(1);
    +          radix = 16;
    +        }
    +        var codePoint = parseInt(num, radix);
    +        if (!isNaN(codePoint)) {
    +          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
    +                  html.substring(end + 1));
    +        }
    +      }
    +    }
    +
    +    return html.replace(pr_ltEnt, '<')
    +        .replace(pr_gtEnt, '>')
    +        .replace(pr_aposEnt, "'")
    +        .replace(pr_quotEnt, '"')
    +        .replace(pr_nbspEnt, ' ')
    +        .replace(pr_ampEnt, '&');
    +  }
    +
    +  /** is the given node's innerHTML normally unescaped? */
    +  function isRawContent(node) {
    +    return 'XMP' === node.tagName;
    +  }
    +
    +  var newlineRe = /[\r\n]/g;
    +  /**
    +   * Are newlines and adjacent spaces significant in the given node's innerHTML?
    +   */
    +  function isPreformatted(node, content) {
    +    // PRE means preformatted, and is a very common case, so don't create
    +    // unnecessary computed style objects.
    +    if ('PRE' === node.tagName) { return true; }
    +    if (!newlineRe.test(content)) { return true; }  // Don't care
    +    var whitespace = '';
    +    // For disconnected nodes, IE has no currentStyle.
    +    if (node.currentStyle) {
    +      whitespace = node.currentStyle.whiteSpace;
    +    } else if (window.getComputedStyle) {
    +      // Firefox makes a best guess if node is disconnected whereas Safari
    +      // returns the empty string.
    +      whitespace = window.getComputedStyle(node, null).whiteSpace;
    +    }
    +    return !whitespace || whitespace === 'pre';
    +  }
    +
    +  function normalizedHtml(node, out, opt_sortAttrs) {
    +    switch (node.nodeType) {
    +      case 1:  // an element
    +        var name = node.tagName.toLowerCase();
    +
    +        out.push('<', name);
    +        var attrs = node.attributes;
    +        var n = attrs.length;
    +        if (n) {
    +          if (opt_sortAttrs) {
    +            var sortedAttrs = [];
    +            for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
    +            sortedAttrs.sort(function (a, b) {
    +                return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
    +              });
    +            attrs = sortedAttrs;
    +          }
    +          for (var i = 0; i < n; ++i) {
    +            var attr = attrs[i];
    +            if (!attr.specified) { continue; }
    +            out.push(' ', attr.name.toLowerCase(),
    +                     '="', attribToHtml(attr.value), '"');
    +          }
    +        }
    +        out.push('>');
    +        for (var child = node.firstChild; child; child = child.nextSibling) {
    +          normalizedHtml(child, out, opt_sortAttrs);
    +        }
    +        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
    +          out.push('<\/', name, '>');
    +        }
    +        break;
    +      case 3: case 4: // text
    +        out.push(textToHtml(node.nodeValue));
    +        break;
    +    }
    +  }
    +
    +  /**
    +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
    +   * matches the union o the sets o strings matched d by the input RegExp.
    +   * Since it matches globally, if the input strings have a start-of-input
    +   * anchor (/^.../), it is ignored for the purposes of unioning.
    +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
    +   * @return {RegExp} a global regex.
    +   */
    +  function combinePrefixPatterns(regexs) {
    +    var capturedGroupIndex = 0;
    +
    +    var needToFoldCase = false;
    +    var ignoreCase = false;
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.ignoreCase) {
    +        ignoreCase = true;
    +      } else if (/[a-z]/i.test(regex.source.replace(
    +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
    +        needToFoldCase = true;
    +        ignoreCase = false;
    +        break;
    +      }
    +    }
    +
    +    function decodeEscape(charsetPart) {
    +      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
    +      switch (charsetPart.charAt(1)) {
    +        case 'b': return 8;
    +        case 't': return 9;
    +        case 'n': return 0xa;
    +        case 'v': return 0xb;
    +        case 'f': return 0xc;
    +        case 'r': return 0xd;
    +        case 'u': case 'x':
    +          return parseInt(charsetPart.substring(2), 16)
    +              || charsetPart.charCodeAt(1);
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7':
    +          return parseInt(charsetPart.substring(1), 8);
    +        default: return charsetPart.charCodeAt(1);
    +      }
    +    }
    +
    +    function encodeEscape(charCode) {
    +      if (charCode < 0x20) {
    +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
    +      }
    +      var ch = String.fromCharCode(charCode);
    +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
    +        ch = '\\' + ch;
    +      }
    +      return ch;
    +    }
    +
    +    function caseFoldCharset(charSet) {
    +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
    +          new RegExp(
    +              '\\\\u[0-9A-Fa-f]{4}'
    +              + '|\\\\x[0-9A-Fa-f]{2}'
    +              + '|\\\\[0-3][0-7]{0,2}'
    +              + '|\\\\[0-7]{1,2}'
    +              + '|\\\\[\\s\\S]'
    +              + '|-'
    +              + '|[^-\\\\]',
    +              'g'));
    +      var groups = [];
    +      var ranges = [];
    +      var inverse = charsetParts[0] === '^';
    +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
    +        var p = charsetParts[i];
    +        switch (p) {
    +          case '\\B': case '\\b':
    +          case '\\D': case '\\d':
    +          case '\\S': case '\\s':
    +          case '\\W': case '\\w':
    +            groups.push(p);
    +            continue;
    +        }
    +        var start = decodeEscape(p);
    +        var end;
    +        if (i + 2 < n && '-' === charsetParts[i + 1]) {
    +          end = decodeEscape(charsetParts[i + 2]);
    +          i += 2;
    +        } else {
    +          end = start;
    +        }
    +        ranges.push([start, end]);
    +        // If the range might intersect letters, then expand it.
    +        if (!(end < 65 || start > 122)) {
    +          if (!(end < 65 || start > 90)) {
    +            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
    +          }
    +          if (!(end < 97 || start > 122)) {
    +            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
    +          }
    +        }
    +      }
    +
    +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
    +      // -> [[1, 12], [14, 14], [16, 17]]
    +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
    +      var consolidatedRanges = [];
    +      var lastRange = [NaN, NaN];
    +      for (var i = 0; i < ranges.length; ++i) {
    +        var range = ranges[i];
    +        if (range[0] <= lastRange[1] + 1) {
    +          lastRange[1] = Math.max(lastRange[1], range[1]);
    +        } else {
    +          consolidatedRanges.push(lastRange = range);
    +        }
    +      }
    +
    +      var out = ['['];
    +      if (inverse) { out.push('^'); }
    +      out.push.apply(out, groups);
    +      for (var i = 0; i < consolidatedRanges.length; ++i) {
    +        var range = consolidatedRanges[i];
    +        out.push(encodeEscape(range[0]));
    +        if (range[1] > range[0]) {
    +          if (range[1] + 1 > range[0]) { out.push('-'); }
    +          out.push(encodeEscape(range[1]));
    +        }
    +      }
    +      out.push(']');
    +      return out.join('');
    +    }
    +
    +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
    +      // Split into character sets, escape sequences, punctuation strings
    +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
    +      // include any of the above.
    +      var parts = regex.source.match(
    +          new RegExp(
    +              '(?:'
    +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
    +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
    +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
    +              + '|\\\\[0-9]+'  // a back-reference or octal escape
    +              + '|\\\\[^ux0-9]'  // other escape sequence
    +              + '|\\(\\?[:!=]'  // start of a non-capturing group
    +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
    +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
    +              + ')',
    +              'g'));
    +      var n = parts.length;
    +
    +      // Maps captured group numbers to the number they will occupy in
    +      // the output or to -1 if that has not been determined, or to
    +      // undefined if they need not be capturing in the output.
    +      var capturedGroups = [];
    +
    +      // Walk over and identify back references to build the capturedGroups
    +      // mapping.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          // groups are 1-indexed, so max group index is count of '('
    +          ++groupIndex;
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            capturedGroups[decimalValue] = -1;
    +          }
    +        }
    +      }
    +
    +      // Renumber groups and reduce capturing groups to non-capturing groups
    +      // where possible.
    +      for (var i = 1; i < capturedGroups.length; ++i) {
    +        if (-1 === capturedGroups[i]) {
    +          capturedGroups[i] = ++capturedGroupIndex;
    +        }
    +      }
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          ++groupIndex;
    +          if (capturedGroups[groupIndex] === undefined) {
    +            parts[i] = '(?:';
    +          }
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            parts[i] = '\\' + capturedGroups[groupIndex];
    +          }
    +        }
    +      }
    +
    +      // Remove any prefix anchors so that the output will match anywhere.
    +      // ^^ really does mean an anchored match though.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
    +      }
    +
    +      // Expand letters to groupts to handle mixing of case-sensitive and
    +      // case-insensitive patterns if necessary.
    +      if (regex.ignoreCase && needToFoldCase) {
    +        for (var i = 0; i < n; ++i) {
    +          var p = parts[i];
    +          var ch0 = p.charAt(0);
    +          if (p.length >= 2 && ch0 === '[') {
    +            parts[i] = caseFoldCharset(p);
    +          } else if (ch0 !== '\\') {
    +            // TODO: handle letters in numeric escapes.
    +            parts[i] = p.replace(
    +                /[a-zA-Z]/g,
    +                function (ch) {
    +                  var cc = ch.charCodeAt(0);
    +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
    +                });
    +          }
    +        }
    +      }
    +
    +      return parts.join('');
    +    }
    +
    +    var rewritten = [];
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
    +      rewritten.push(
    +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
    +    }
    +
    +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
    +  }
    +
    +  var PR_innerHtmlWorks = null;
    +  function getInnerHtml(node) {
    +    // inner html is hopelessly broken in Safari 2.0.4 when the content is
    +    // an html description of well formed XML and the containing tag is a PRE
    +    // tag, so we detect that case and emulate innerHTML.
    +    if (null === PR_innerHtmlWorks) {
    +      var testNode = document.createElement('PRE');
    +      testNode.appendChild(
    +          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
    +      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
    +    }
    +
    +    if (PR_innerHtmlWorks) {
    +      var content = node.innerHTML;
    +      // XMP tags contain unescaped entities so require special handling.
    +      if (isRawContent(node)) {
    +        content = textToHtml(content);
    +      } else if (!isPreformatted(node, content)) {
    +        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
    +            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
    +      }
    +      return content;
    +    }
    +
    +    var out = [];
    +    for (var child = node.firstChild; child; child = child.nextSibling) {
    +      normalizedHtml(child, out);
    +    }
    +    return out.join('');
    +  }
    +
    +  /** returns a function that expand tabs to spaces.  This function can be fed
    +    * successive chunks of text, and will maintain its own internal state to
    +    * keep track of how tabs are expanded.
    +    * @return {function (string) : string} a function that takes
    +    *   plain text and return the text with tabs expanded.
    +    * @private
    +    */
    +  function makeTabExpander(tabWidth) {
    +    var SPACES = '                ';
    +    var charInLine = 0;
    +
    +    return function (plainText) {
    +      // walk over each character looking for tabs and newlines.
    +      // On tabs, expand them.  On newlines, reset charInLine.
    +      // Otherwise increment charInLine
    +      var out = null;
    +      var pos = 0;
    +      for (var i = 0, n = plainText.length; i < n; ++i) {
    +        var ch = plainText.charAt(i);
    +
    +        switch (ch) {
    +          case '\t':
    +            if (!out) { out = []; }
    +            out.push(plainText.substring(pos, i));
    +            // calculate how much space we need in front of this part
    +            // nSpaces is the amount of padding -- the number of spaces needed
    +            // to move us to the next column, where columns occur at factors of
    +            // tabWidth.
    +            var nSpaces = tabWidth - (charInLine % tabWidth);
    +            charInLine += nSpaces;
    +            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
    +              out.push(SPACES.substring(0, nSpaces));
    +            }
    +            pos = i + 1;
    +            break;
    +          case '\n':
    +            charInLine = 0;
    +            break;
    +          default:
    +            ++charInLine;
    +        }
    +      }
    +      if (!out) { return plainText; }
    +      out.push(plainText.substring(pos));
    +      return out.join('');
    +    };
    +  }
    +
    +  var pr_chunkPattern = new RegExp(
    +      '[^<]+'  // A run of characters other than '<'
    +      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
    +      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
    +      // a probable tag that should not be highlighted
    +      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
    +      + '|<',  // A '<' that does not begin a larger chunk
    +      'g');
    +  var pr_commentPrefix = /^<\!--/;
    +  var pr_cdataPrefix = /^<!\[CDATA\[/;
    +  var pr_brPrefix = /^<br\b/i;
    +  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
    +
    +  /** split markup into chunks of html tags (style null) and
    +    * plain text (style {@link #PR_PLAIN}), converting tags which are
    +    * significant for tokenization (<br>) into their textual equivalent.
    +    *
    +    * @param {string} s html where whitespace is considered significant.
    +    * @return {Object} source code and extracted tags.
    +    * @private
    +    */
    +  function extractTags(s) {
    +    // since the pattern has the 'g' modifier and defines no capturing groups,
    +    // this will return a list of all chunks which we then classify and wrap as
    +    // PR_Tokens
    +    var matches = s.match(pr_chunkPattern);
    +    var sourceBuf = [];
    +    var sourceBufLen = 0;
    +    var extractedTags = [];
    +    if (matches) {
    +      for (var i = 0, n = matches.length; i < n; ++i) {
    +        var match = matches[i];
    +        if (match.length > 1 && match.charAt(0) === '<') {
    +          if (pr_commentPrefix.test(match)) { continue; }
    +          if (pr_cdataPrefix.test(match)) {
    +            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
    +            sourceBuf.push(match.substring(9, match.length - 3));
    +            sourceBufLen += match.length - 12;
    +          } else if (pr_brPrefix.test(match)) {
    +            // <br> tags are lexically significant so convert them to text.
    +            // This is undone later.
    +            sourceBuf.push('\n');
    +            ++sourceBufLen;
    +          } else {
    +            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
    +              // A <span class="nocode"> will start a section that should be
    +              // ignored.  Continue walking the list until we see a matching end
    +              // tag.
    +              var name = match.match(pr_tagNameRe)[2];
    +              var depth = 1;
    +              var j;
    +              end_tag_loop:
    +              for (j = i + 1; j < n; ++j) {
    +                var name2 = matches[j].match(pr_tagNameRe);
    +                if (name2 && name2[2] === name) {
    +                  if (name2[1] === '/') {
    +                    if (--depth === 0) { break end_tag_loop; }
    +                  } else {
    +                    ++depth;
    +                  }
    +                }
    +              }
    +              if (j < n) {
    +                extractedTags.push(
    +                    sourceBufLen, matches.slice(i, j + 1).join(''));
    +                i = j;
    +              } else {  // Ignore unclosed sections.
    +                extractedTags.push(sourceBufLen, match);
    +              }
    +            } else {
    +              extractedTags.push(sourceBufLen, match);
    +            }
    +          }
    +        } else {
    +          var literalText = htmlToText(match);
    +          sourceBuf.push(literalText);
    +          sourceBufLen += literalText.length;
    +        }
    +      }
    +    }
    +    return { source: sourceBuf.join(''), tags: extractedTags };
    +  }
    +
    +  /** True if the given tag contains a class attribute with the nocode class. */
    +  function isNoCodeTag(tag) {
    +    return !!tag
    +        // First canonicalize the representation of attributes
    +        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
    +                 ' $1="$2$3$4"')
    +        // Then look for the attribute we want.
    +        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
    +  }
    +
    +  /**
    +   * Apply the given language handler to sourceCode and add the resulting
    +   * decorations to out.
    +   * @param {number} basePos the index of sourceCode within the chunk of source
    +   *    whose decorations are already present on out.
    +   */
    +  function appendDecorations(basePos, sourceCode, langHandler, out) {
    +    if (!sourceCode) { return; }
    +    var job = {
    +      source: sourceCode,
    +      basePos: basePos
    +    };
    +    langHandler(job);
    +    out.push.apply(out, job.decorations);
    +  }
    +
    +  /** Given triples of [style, pattern, context] returns a lexing function,
    +    * The lexing function interprets the patterns to find token boundaries and
    +    * returns a decoration list of the form
    +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
    +    * where index_n is an index into the sourceCode, and style_n is a style
    +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
    +    * all characters in sourceCode[index_n-1:index_n].
    +    *
    +    * The stylePatterns is a list whose elements have the form
    +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
    +    *
    +    * Style is a style constant like PR_PLAIN, or can be a string of the
    +    * form 'lang-FOO', where FOO is a language extension describing the
    +    * language of the portion of the token in $1 after pattern executes.
    +    * E.g., if style is 'lang-lisp', and group 1 contains the text
    +    * '(hello (world))', then that portion of the token will be passed to the
    +    * registered lisp handler for formatting.
    +    * The text before and after group 1 will be restyled using this decorator
    +    * so decorators should take care that this doesn't result in infinite
    +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
    +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
    +    * '<script>foo()<\/script>', which would cause the current decorator to
    +    * be called with '<script>' which would not match the same rule since
    +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
    +    * the generic tag rule.  The handler registered for the 'js' extension would
    +    * then be called with 'foo()', and finally, the current decorator would
    +    * be called with '<\/script>' which would not match the original rule and
    +    * so the generic tag rule would identify it as a tag.
    +    *
    +    * Pattern must only match prefixes, and if it matches a prefix, then that
    +    * match is considered a token with the same style.
    +    *
    +    * Context is applied to the last non-whitespace, non-comment token
    +    * recognized.
    +    *
    +    * Shortcut is an optional string of characters, any of which, if the first
    +    * character, gurantee that this pattern and only this pattern matches.
    +    *
    +    * @param {Array} shortcutStylePatterns patterns that always start with
    +    *   a known character.  Must have a shortcut string.
    +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
    +    *   order if the shortcut ones fail.  May have shortcuts.
    +    *
    +    * @return {function (Object)} a
    +    *   function that takes source code and returns a list of decorations.
    +    */
    +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
    +    var shortcuts = {};
    +    var tokenizer;
    +    (function () {
    +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
    +      var allRegexs = [];
    +      var regexKeys = {};
    +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
    +        var patternParts = allPatterns[i];
    +        var shortcutChars = patternParts[3];
    +        if (shortcutChars) {
    +          for (var c = shortcutChars.length; --c >= 0;) {
    +            shortcuts[shortcutChars.charAt(c)] = patternParts;
    +          }
    +        }
    +        var regex = patternParts[1];
    +        var k = '' + regex;
    +        if (!regexKeys.hasOwnProperty(k)) {
    +          allRegexs.push(regex);
    +          regexKeys[k] = null;
    +        }
    +      }
    +      allRegexs.push(/[\0-\uffff]/);
    +      tokenizer = combinePrefixPatterns(allRegexs);
    +    })();
    +
    +    var nPatterns = fallthroughStylePatterns.length;
    +    var notWs = /\S/;
    +
    +    /**
    +     * Lexes job.source and produces an output array job.decorations of style
    +     * classes preceded by the position at which they start in job.source in
    +     * order.
    +     *
    +     * @param {Object} job an object like {@code
    +     *    source: {string} sourceText plain text,
    +     *    basePos: {int} position of job.source in the larger chunk of
    +     *        sourceCode.
    +     * }
    +     */
    +    var decorate = function (job) {
    +      var sourceCode = job.source, basePos = job.basePos;
    +      /** Even entries are positions in source in ascending order.  Odd enties
    +        * are style markers (e.g., PR_COMMENT) that run from that position until
    +        * the end.
    +        * @type {Array.<number|string>}
    +        */
    +      var decorations = [basePos, PR_PLAIN];
    +      var pos = 0;  // index into sourceCode
    +      var tokens = sourceCode.match(tokenizer) || [];
    +      var styleCache = {};
    +
    +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
    +        var token = tokens[ti];
    +        var style = styleCache[token];
    +        var match = void 0;
    +
    +        var isEmbedded;
    +        if (typeof style === 'string') {
    +          isEmbedded = false;
    +        } else {
    +          var patternParts = shortcuts[token.charAt(0)];
    +          if (patternParts) {
    +            match = token.match(patternParts[1]);
    +            style = patternParts[0];
    +          } else {
    +            for (var i = 0; i < nPatterns; ++i) {
    +              patternParts = fallthroughStylePatterns[i];
    +              match = token.match(patternParts[1]);
    +              if (match) {
    +                style = patternParts[0];
    +                break;
    +              }
    +            }
    +
    +            if (!match) {  // make sure that we make progress
    +              style = PR_PLAIN;
    +            }
    +          }
    +
    +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
    +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
    +            isEmbedded = false;
    +            style = PR_SOURCE;
    +          }
    +
    +          if (!isEmbedded) { styleCache[token] = style; }
    +        }
    +
    +        var tokenStart = pos;
    +        pos += token.length;
    +
    +        if (!isEmbedded) {
    +          decorations.push(basePos + tokenStart, style);
    +        } else {  // Treat group 1 as an embedded block of source code.
    +          var embeddedSource = match[1];
    +          var embeddedSourceStart = token.indexOf(embeddedSource);
    +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
    +          if (match[2]) {
    +            // If embeddedSource can be blank, then it would match at the
    +            // beginning which would cause us to infinitely recurse on the
    +            // entire token, so we catch the right context in match[2].
    +            embeddedSourceEnd = token.length - match[2].length;
    +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
    +          }
    +          var lang = style.substring(5);
    +          // Decorate the left of the embedded source
    +          appendDecorations(
    +              basePos + tokenStart,
    +              token.substring(0, embeddedSourceStart),
    +              decorate, decorations);
    +          // Decorate the embedded source
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceStart,
    +              embeddedSource,
    +              langHandlerForExtension(lang, embeddedSource),
    +              decorations);
    +          // Decorate the right of the embedded section
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceEnd,
    +              token.substring(embeddedSourceEnd),
    +              decorate, decorations);
    +        }
    +      }
    +      job.decorations = decorations;
    +    };
    +    return decorate;
    +  }
    +
    +  /** returns a function that produces a list of decorations from source text.
    +    *
    +    * This code treats ", ', and ` as string delimiters, and \ as a string
    +    * escape.  It does not recognize perl's qq() style strings.
    +    * It has no special handling for double delimiter escapes as in basic, or
    +    * the tripled delimiters used in python, but should work on those regardless
    +    * although in those cases a single string literal may be broken up into
    +    * multiple adjacent string literals.
    +    *
    +    * It recognizes C, C++, and shell style comments.
    +    *
    +    * @param {Object} options a set of optional parameters.
    +    * @return {function (Object)} a function that examines the source code
    +    *     in the input job and builds the decoration list.
    +    */
    +  function sourceDecorator(options) {
    +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
    +    if (options['tripleQuotedStrings']) {
    +      // '''multi-line-string''', 'single-line-string', and double-quoted
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
    +           null, '\'"']);
    +    } else if (options['multiLineStrings']) {
    +      // 'multi-line-string', "multi-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
    +           null, '\'"`']);
    +    } else {
    +      // 'single-line-string', "single-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,
    +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
    +           null, '"\'']);
    +    }
    +    if (options['verbatimStrings']) {
    +      // verbatim-string-literal production from the C# grammar.  See issue 93.
    +      fallthroughStylePatterns.push(
    +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    +    }
    +    if (options['hashComments']) {
    +      if (options['cStyleComments']) {
    +        // Stop C preprocessor declarations at an unclosed open comment
    +        shortcutStylePatterns.push(
    +            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
    +             null, '#']);
    +        fallthroughStylePatterns.push(
    +            [PR_STRING,
    +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
    +             null]);
    +      } else {
    +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
    +      }
    +    }
    +    if (options['cStyleComments']) {
    +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
    +      fallthroughStylePatterns.push(
    +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    +    }
    +    if (options['regexLiterals']) {
    +      var REGEX_LITERAL = (
    +          // A regular expression literal starts with a slash that is
    +          // not followed by * or / so that it is not confused with
    +          // comments.
    +          '/(?=[^/*])'
    +          // and then contains any number of raw characters,
    +          + '(?:[^/\\x5B\\x5C]'
    +          // escape sequences (\x5C),
    +          +    '|\\x5C[\\s\\S]'
    +          // or non-nesting character sets (\x5B\x5D);
    +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
    +          // finally closed by a /.
    +          + '/');
    +      fallthroughStylePatterns.push(
    +          ['lang-regex',
    +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
    +           ]);
    +    }
    +
    +    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
    +    if (keywords.length) {
    +      fallthroughStylePatterns.push(
    +          [PR_KEYWORD,
    +           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
    +    }
    +
    +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
    +    fallthroughStylePatterns.push(
    +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
    +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
    +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_LITERAL,
    +         new RegExp(
    +             '^(?:'
    +             // A hex number
    +             + '0x[a-f0-9]+'
    +             // or an octal or decimal number,
    +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
    +             // possibly in scientific notation
    +             + '(?:e[+\\-]?\\d+)?'
    +             + ')'
    +             // with an optional modifier like UL for unsigned long
    +             + '[a-z]*', 'i'),
    +         null, '0123456789'],
    +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
    +
    +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
    +  }
    +
    +  var decorateSource = sourceDecorator({
    +        'keywords': ALL_KEYWORDS,
    +        'hashComments': true,
    +        'cStyleComments': true,
    +        'multiLineStrings': true,
    +        'regexLiterals': true
    +      });
    +
    +  /** Breaks {@code job.source} around style boundaries in
    +    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
    +    * and leaves the result in {@code job.prettyPrintedHtml}.
    +    * @param {Object} job like {
    +    *    source: {string} source as plain text,
    +    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
    +    *                   html preceded by their position in {@code job.source}
    +    *                   in order
    +    *    decorations: {Array.<number|string} an array of style classes preceded
    +    *                 by the position at which they start in job.source in order
    +    * }
    +    * @private
    +    */
    +  function recombineTagsAndDecorations(job) {
    +    var sourceText = job.source;
    +    var extractedTags = job.extractedTags;
    +    var decorations = job.decorations;
    +
    +    var html = [];
    +    // index past the last char in sourceText written to html
    +    var outputIdx = 0;
    +
    +    var openDecoration = null;
    +    var currentDecoration = null;
    +    var tagPos = 0;  // index into extractedTags
    +    var decPos = 0;  // index into decorations
    +    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
    +
    +    var adjacentSpaceRe = /([\r\n ]) /g;
    +    var startOrSpaceRe = /(^| ) /gm;
    +    var newlineRe = /\r\n?|\n/g;
    +    var trailingSpaceRe = /[ \r\n]$/;
    +    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
    +
    +    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
    +    var isIE678 = window['_pr_isIE6']();
    +    var lineBreakHtml = (
    +        isIE678
    +        ? (job.sourceNode.tagName === 'PRE'
    +           // Use line feeds instead of <br>s so that copying and pasting works
    +           // on IE.
    +           // Doing this on other browsers breaks lots of stuff since \r\n is
    +           // treated as two newlines on Firefox.
    +           ? (isIE678 === 6 ? '&#160;\r\n' :
    +              isIE678 === 7 ? '&#160;<br>\r' : '&#160;\r')
    +           // IE collapses multiple adjacent <br>s into 1 line break.
    +           // Prefix every newline with '&#160;' to prevent such behavior.
    +           // &nbsp; is the same as &#160; but works in XML as well as HTML.
    +           : '&#160;<br />')
    +        : '<br />');
    +
    +    // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
    +    // number of the first line.
    +    var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
    +    var lineBreaker;
    +    if (numberLines) {
    +      var lineBreaks = [];
    +      for (var i = 0; i < 10; ++i) {
    +        lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
    +      }
    +      var lineNum = numberLines[1] && numberLines[1].length
    +          ? numberLines[1] - 1 : 0;  // Lines are 1-indexed
    +      html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
    +      if (lineNum) {
    +        html.push(' value="', lineNum + 1, '"');
    +      }
    +      html.push('>');
    +      lineBreaker = function () {
    +        var lb = lineBreaks[++lineNum % 10];
    +        // If a decoration is open, we need to close it before closing a list-item
    +        // and reopen it on the other side of the list item.
    +        return openDecoration
    +            ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
    +      };
    +    } else {
    +      lineBreaker = lineBreakHtml;
    +    }
    +
    +    // A helper function that is responsible for opening sections of decoration
    +    // and outputing properly escaped chunks of source
    +    function emitTextUpTo(sourceIdx) {
    +      if (sourceIdx > outputIdx) {
    +        if (openDecoration && openDecoration !== currentDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        if (!openDecoration && currentDecoration) {
    +          openDecoration = currentDecoration;
    +          html.push('<span class="', openDecoration, '">');
    +        }
    +        // This interacts badly with some wikis which introduces paragraph tags
    +        // into pre blocks for some strange reason.
    +        // It's necessary for IE though which seems to lose the preformattedness
    +        // of <pre> tags when their innerHTML is assigned.
    +        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
    +        // and it serves to undo the conversion of <br>s to newlines done in
    +        // chunkify.
    +        var htmlChunk = textToHtml(
    +            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
    +            .replace(lastWasSpace
    +                     ? startOrSpaceRe
    +                     : adjacentSpaceRe, '$1&#160;');
    +        // Keep track of whether we need to escape space at the beginning of the
    +        // next chunk.
    +        lastWasSpace = trailingSpaceRe.test(htmlChunk);
    +        html.push(htmlChunk.replace(newlineRe, lineBreaker));
    +        outputIdx = sourceIdx;
    +      }
    +    }
    +
    +    while (true) {
    +      // Determine if we're going to consume a tag this time around.  Otherwise
    +      // we consume a decoration or exit.
    +      var outputTag;
    +      if (tagPos < extractedTags.length) {
    +        if (decPos < decorations.length) {
    +          // Pick one giving preference to extractedTags since we shouldn't open
    +          // a new style that we're going to have to immediately close in order
    +          // to output a tag.
    +          outputTag = extractedTags[tagPos] <= decorations[decPos];
    +        } else {
    +          outputTag = true;
    +        }
    +      } else {
    +        outputTag = false;
    +      }
    +      // Consume either a decoration or a tag or exit.
    +      if (outputTag) {
    +        emitTextUpTo(extractedTags[tagPos]);
    +        if (openDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        html.push(extractedTags[tagPos + 1]);
    +        tagPos += 2;
    +      } else if (decPos < decorations.length) {
    +        emitTextUpTo(decorations[decPos]);
    +        currentDecoration = decorations[decPos + 1];
    +        decPos += 2;
    +      } else {
    +        break;
    +      }
    +    }
    +    emitTextUpTo(sourceText.length);
    +    if (openDecoration) {
    +      html.push('</span>');
    +    }
    +    if (numberLines) { html.push('</li></ol>'); }
    +    job.prettyPrintedHtml = html.join('');
    +  }
    +
    +  /** Maps language-specific file extensions to handlers. */
    +  var langHandlerRegistry = {};
    +  /** Register a language handler for the given file extensions.
    +    * @param {function (Object)} handler a function from source code to a list
    +    *      of decorations.  Takes a single argument job which describes the
    +    *      state of the computation.   The single parameter has the form
    +    *      {@code {
    +    *        source: {string} as plain text.
    +    *        decorations: {Array.<number|string>} an array of style classes
    +    *                     preceded by the position at which they start in
    +    *                     job.source in order.
    +    *                     The language handler should assigned this field.
    +    *        basePos: {int} the position of source in the larger source chunk.
    +    *                 All positions in the output decorations array are relative
    +    *                 to the larger source chunk.
    +    *      } }
    +    * @param {Array.<string>} fileExtensions
    +    */
    +  function registerLangHandler(handler, fileExtensions) {
    +    for (var i = fileExtensions.length; --i >= 0;) {
    +      var ext = fileExtensions[i];
    +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
    +        langHandlerRegistry[ext] = handler;
    +      } else if ('console' in window) {
    +        console['warn']('cannot override language handler %s', ext);
    +      }
    +    }
    +  }
    +  function langHandlerForExtension(extension, source) {
    +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
    +      // Treat it as markup if the first non whitespace character is a < and
    +      // the last non-whitespace character is a >.
    +      extension = /^\s*</.test(source)
    +          ? 'default-markup'
    +          : 'default-code';
    +    }
    +    return langHandlerRegistry[extension];
    +  }
    +  registerLangHandler(decorateSource, ['default-code']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [],
    +          [
    +           [PR_PLAIN,       /^[^<?]+/],
    +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
    +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
    +           // Unescaped content in an unknown language
    +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
    +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
    +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
    +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
    +           // Unescaped content in javascript.  (Or possibly vbscript).
    +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
    +           // Contains unescaped stylesheet content
    +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
    +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
    +          ]),
    +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [
    +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
    +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
    +           ],
    +          [
    +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
    +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
    +           [PR_PUNCTUATION,  /^[=<>\/]+/],
    +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
    +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
    +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
    +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
    +           ]),
    +      ['in.tag']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CPP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true
    +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': 'null true false'
    +        }), ['json']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CSHARP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true,
    +          'verbatimStrings': true
    +        }), ['cs']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JAVA_KEYWORDS,
    +          'cStyleComments': true
    +        }), ['java']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': SH_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true
    +        }), ['bsh', 'csh', 'sh']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PYTHON_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'tripleQuotedStrings': true
    +        }), ['cv', 'py']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PERL_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['perl', 'pl', 'pm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': RUBY_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['rb']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JSCRIPT_KEYWORDS,
    +          'cStyleComments': true,
    +          'regexLiterals': true
    +        }), ['js']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
    +
    +  function applyDecorator(job) {
    +    var sourceCodeHtml = job.sourceCodeHtml;
    +    var opt_langExtension = job.langExtension;
    +
    +    // Prepopulate output in case processing fails with an exception.
    +    job.prettyPrintedHtml = sourceCodeHtml;
    +
    +    try {
    +      // Extract tags, and convert the source code to plain text.
    +      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
    +      /** Plain text. @type {string} */
    +      var source = sourceAndExtractedTags.source;
    +      job.source = source;
    +      job.basePos = 0;
    +
    +      /** Even entries are positions in source in ascending order.  Odd entries
    +        * are tags that were extracted at that position.
    +        * @type {Array.<number|string>}
    +        */
    +      job.extractedTags = sourceAndExtractedTags.tags;
    +
    +      // Apply the appropriate language handler
    +      langHandlerForExtension(opt_langExtension, source)(job);
    +      // Integrate the decorations and tags back into the source code to produce
    +      // a decorated html string which is left in job.prettyPrintedHtml.
    +      recombineTagsAndDecorations(job);
    +    } catch (e) {
    +      if ('console' in window) {
    +        console['log'](e && e['stack'] ? e['stack'] : e);
    +      }
    +    }
    +  }
    +
    +  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
    +    var job = {
    +      sourceCodeHtml: sourceCodeHtml,
    +      langExtension: opt_langExtension
    +    };
    +    applyDecorator(job);
    +    return job.prettyPrintedHtml;
    +  }
    +
    +  function prettyPrint(opt_whenDone) {
    +    function byTagName(tn) { return document.getElementsByTagName(tn); }
    +    // fetch a list of nodes to rewrite
    +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
    +    var elements = [];
    +    for (var i = 0; i < codeSegments.length; ++i) {
    +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
    +        elements.push(codeSegments[i][j]);
    +      }
    +    }
    +    codeSegments = null;
    +
    +    var clock = Date;
    +    if (!clock['now']) {
    +      clock = { 'now': function () { return (new Date).getTime(); } };
    +    }
    +
    +    // The loop is broken into a series of continuations to make sure that we
    +    // don't make the browser unresponsive when rewriting a large page.
    +    var k = 0;
    +    var prettyPrintingJob;
    +
    +    function doWork() {
    +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
    +                     clock.now() + 250 /* ms */ :
    +                     Infinity);
    +      for (; k < elements.length && clock.now() < endTime; k++) {
    +        var cs = elements[k];
    +        // [JACOCO] 'prettyprint' -> 'source'
    +        if (cs.className && cs.className.indexOf('source') >= 0) {
    +          // If the classes includes a language extensions, use it.
    +          // Language extensions can be specified like
    +          //     <pre class="prettyprint lang-cpp">
    +          // the language extension "cpp" is used to find a language handler as
    +          // passed to PR_registerLangHandler.
    +          var langExtension = cs.className.match(/\blang-(\w+)\b/);
    +          if (langExtension) { langExtension = langExtension[1]; }
    +
    +          // make sure this is not nested in an already prettified element
    +          var nested = false;
    +          for (var p = cs.parentNode; p; p = p.parentNode) {
    +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
    +                 p.tagName === 'xmp') &&
    +                // [JACOCO] 'prettyprint' -> 'source'
    +                p.className && p.className.indexOf('source') >= 0) {
    +              nested = true;
    +              break;
    +            }
    +          }
    +          if (!nested) {
    +            // fetch the content as a snippet of properly escaped HTML.
    +            // Firefox adds newlines at the end.
    +            var content = getInnerHtml(cs);
    +            content = content.replace(/(?:\r\n?|\n)$/, '');
    +
    +            // do the pretty printing
    +            prettyPrintingJob = {
    +              sourceCodeHtml: content,
    +              langExtension: langExtension,
    +              sourceNode: cs
    +            };
    +            applyDecorator(prettyPrintingJob);
    +            replaceWithPrettyPrintedHtml();
    +          }
    +        }
    +      }
    +      if (k < elements.length) {
    +        // finish up in a continuation
    +        setTimeout(doWork, 250);
    +      } else if (opt_whenDone) {
    +        opt_whenDone();
    +      }
    +    }
    +
    +    function replaceWithPrettyPrintedHtml() {
    +      var newContent = prettyPrintingJob.prettyPrintedHtml;
    +      if (!newContent) { return; }
    +      var cs = prettyPrintingJob.sourceNode;
    +
    +      // push the prettified html back into the tag.
    +      if (!isRawContent(cs)) {
    +        // just replace the old html with the new
    +        cs.innerHTML = newContent;
    +      } else {
    +        // we need to change the tag to a <pre> since <xmp>s do not allow
    +        // embedded tags such as the span tags used to attach styles to
    +        // sections of source code.
    +        var pre = document.createElement('PRE');
    +        for (var i = 0; i < cs.attributes.length; ++i) {
    +          var a = cs.attributes[i];
    +          if (a.specified) {
    +            var aname = a.name.toLowerCase();
    +            if (aname === 'class') {
    +              pre.className = a.value;  // For IE 6
    +            } else {
    +              pre.setAttribute(a.name, a.value);
    +            }
    +          }
    +        }
    +        pre.innerHTML = newContent;
    +
    +        // remove the old
    +        cs.parentNode.replaceChild(pre, cs);
    +        cs = pre;
    +      }
    +    }
    +
    +    doWork();
    +  }
    +
    +  window['PR_normalizedHtml'] = normalizedHtml;
    +  window['prettyPrintOne'] = prettyPrintOne;
    +  window['prettyPrint'] = prettyPrint;
    +  window['PR'] = {
    +        'combinePrefixPatterns': combinePrefixPatterns,
    +        'createSimpleLexer': createSimpleLexer,
    +        'registerLangHandler': registerLangHandler,
    +        'sourceDecorator': sourceDecorator,
    +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
    +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
    +        'PR_COMMENT': PR_COMMENT,
    +        'PR_DECLARATION': PR_DECLARATION,
    +        'PR_KEYWORD': PR_KEYWORD,
    +        'PR_LITERAL': PR_LITERAL,
    +        'PR_NOCODE': PR_NOCODE,
    +        'PR_PLAIN': PR_PLAIN,
    +        'PR_PUNCTUATION': PR_PUNCTUATION,
    +        'PR_SOURCE': PR_SOURCE,
    +        'PR_STRING': PR_STRING,
    +        'PR_TAG': PR_TAG,
    +        'PR_TYPE': PR_TYPE
    +      };
    +})();
    diff --git a/coverage/jacoco-resources/redbar.gif b/coverage/jacoco-resources/redbar.gif
    new file mode 100644
    index 000000000..c2f71469b
    Binary files /dev/null and b/coverage/jacoco-resources/redbar.gif differ
    diff --git a/coverage/jacoco-resources/report.css b/coverage/jacoco-resources/report.css
    new file mode 100644
    index 000000000..dd936bca5
    --- /dev/null
    +++ b/coverage/jacoco-resources/report.css
    @@ -0,0 +1,243 @@
    +body, td {
    +  font-family:sans-serif;
    +  font-size:10pt;
    +}
    +
    +h1 {
    +  font-weight:bold;
    +  font-size:18pt;
    +}
    +
    +.breadcrumb {
    +  border:#d6d3ce 1px solid;
    +  padding:2px 4px 2px 4px;
    +}
    +
    +.breadcrumb .info {
    +  float:right;
    +}
    +
    +.breadcrumb .info a {
    +  margin-left:8px;
    +}
    +
    +.el_report {
    +  padding-left:18px;
    +  background-image:url(report.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_group {
    +  padding-left:18px;
    +  background-image:url(group.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_bundle {
    +  padding-left:18px;
    +  background-image:url(bundle.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_package {
    +  padding-left:18px;
    +  background-image:url(package.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_class {
    +  padding-left:18px;
    +  background-image:url(class.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_source {
    +  padding-left:18px;
    +  background-image:url(source.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_method {
    +  padding-left:18px;
    +  background-image:url(method.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_session {
    +  padding-left:18px;
    +  background-image:url(session.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +pre.source {
    +  border:#d6d3ce 1px solid;
    +  font-family:monospace;
    +}
    +
    +pre.source ol {
    +  margin-bottom: 0px;
    +  margin-top: 0px;
    +}
    +
    +pre.source li {
    +  border-left: 1px solid #D6D3CE;
    +  color: #A0A0A0;
    +  padding-left: 0px;
    +}
    +
    +pre.source span.fc {
    +  background-color:#ccffcc;
    +}
    +
    +pre.source span.nc {
    +  background-color:#ffaaaa;
    +}
    +
    +pre.source span.pc {
    +  background-color:#ffffcc;
    +}
    +
    +pre.source span.bfc {
    +  background-image: url(branchfc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bfc:hover {
    +  background-color:#80ff80;
    +}
    +
    +pre.source span.bnc {
    +  background-image: url(branchnc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bnc:hover {
    +  background-color:#ff8080;
    +}
    +
    +pre.source span.bpc {
    +  background-image: url(branchpc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bpc:hover {
    +  background-color:#ffff80;
    +}
    +
    +table.coverage {
    +  empty-cells:show;
    +  border-collapse:collapse;
    +}
    +
    +table.coverage thead {
    +  background-color:#e0e0e0;
    +}
    +
    +table.coverage thead td {
    +  white-space:nowrap;
    +  padding:2px 14px 0px 6px;
    +  border-bottom:#b0b0b0 1px solid;
    +}
    +
    +table.coverage thead td.bar {
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr1 {
    +  text-align:right;
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr2 {
    +  text-align:right;
    +  padding-left:2px;
    +}
    +
    +table.coverage thead td.sortable {
    +  cursor:pointer;
    +  background-image:url(sort.gif);
    +  background-position:right center;
    +  background-repeat:no-repeat;
    +}
    +
    +table.coverage thead td.up {
    +  background-image:url(up.gif);
    +}
    +
    +table.coverage thead td.down {
    +  background-image:url(down.gif);
    +}
    +
    +table.coverage tbody td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +  border-bottom:#d6d3ce 1px solid;
    +}
    +
    +table.coverage tbody tr:hover {
    +  background: #f0f0d0 !important;
    +}
    +
    +table.coverage tbody td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +table.coverage tfoot td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +}
    +
    +table.coverage tfoot td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +.footer {
    +  margin-top:20px;
    +  border-top:#d6d3ce 1px solid;
    +  padding-top:2px;
    +  font-size:8pt;
    +  color:#a0a0a0;
    +}
    +
    +.footer a {
    +  color:#a0a0a0;
    +}
    +
    +.right {
    +  float:right;
    +}
    diff --git a/coverage/jacoco-resources/report.gif b/coverage/jacoco-resources/report.gif
    new file mode 100644
    index 000000000..8547be50b
    Binary files /dev/null and b/coverage/jacoco-resources/report.gif differ
    diff --git a/coverage/jacoco-resources/session.gif b/coverage/jacoco-resources/session.gif
    new file mode 100644
    index 000000000..0151bad8a
    Binary files /dev/null and b/coverage/jacoco-resources/session.gif differ
    diff --git a/coverage/jacoco-resources/sort.gif b/coverage/jacoco-resources/sort.gif
    new file mode 100644
    index 000000000..6757c2c32
    Binary files /dev/null and b/coverage/jacoco-resources/sort.gif differ
    diff --git a/coverage/jacoco-resources/sort.js b/coverage/jacoco-resources/sort.js
    new file mode 100644
    index 000000000..345cbada0
    --- /dev/null
    +++ b/coverage/jacoco-resources/sort.js
    @@ -0,0 +1,148 @@
    +/*******************************************************************************
    + * Copyright (c) 2009, 2025 Mountainminds GmbH & Co. KG and Contributors
    + * This program and the accompanying materials are made available under
    + * the terms of the Eclipse Public License 2.0 which is available at
    + * http://www.eclipse.org/legal/epl-2.0
    + *
    + * SPDX-License-Identifier: EPL-2.0
    + *
    + * Contributors:
    + *    Marc R. Hoffmann - initial API and implementation
    + *
    + *******************************************************************************/
    +
    +(function () {
    +
    +  /**
    +   * Sets the initial sorting derived from the hash.
    +   *
    +   * @param linkelementids
    +   *          list of element ids to search for links to add sort inidcator
    +   *          hash links
    +   */
    +  function initialSort(linkelementids) {
    +    window.linkelementids = linkelementids;
    +    var hash = window.location.hash;
    +    if (hash) {
    +      var m = hash.match(/up-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, true);
    +        }
    +        return;
    +      }
    +      var m = hash.match(/dn-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, false);
    +        }
    +        return
    +      }
    +    }
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header dependening on the current sort state.
    +   */
    +  function toggleSort(header) {
    +    var sortup = header.className.indexOf('down ') == 0;
    +    sortColumn(header, sortup);
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header in the given direction.
    +   */
    +  function sortColumn(header, sortup) {
    +    var table = header.parentNode.parentNode.parentNode;
    +    var body = table.tBodies[0];
    +    var colidx = getNodePosition(header);
    +
    +    resetSortedStyle(table);
    +
    +    var rows = body.rows;
    +    var sortedrows = [];
    +    for (var i = 0; i < rows.length; i++) {
    +      r = rows[i];
    +      sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r;
    +    }
    +
    +    var hash;
    +
    +    if (sortup) {
    +      for (var i = sortedrows.length - 1; i >= 0; i--) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'up ' + header.className;
    +      hash = 'up-' + header.id;
    +    } else {
    +      for (var i = 0; i < sortedrows.length; i++) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'down ' + header.className;
    +      hash = 'dn-' + header.id;
    +    }
    +
    +    setHash(hash);
    +  }
    +
    +  /**
    +   * Adds the sort indicator as a hash to the document URL and all links.
    +   */
    +  function setHash(hash) {
    +    window.document.location.hash = hash;
    +    ids = window.linkelementids;
    +    for (var i = 0; i < ids.length; i++) {
    +        setHashOnAllLinks(document.getElementById(ids[i]), hash);
    +    }
    +  }
    +
    +  /**
    +   * Extend all links within the given tag with the given hash.
    +   */
    +  function setHashOnAllLinks(tag, hash) {
    +    links = tag.getElementsByTagName("a");
    +    for (var i = 0; i < links.length; i++) {
    +        var a = links[i];
    +        var href = a.href;
    +        var hashpos = href.indexOf("#");
    +        if (hashpos != -1) {
    +            href = href.substring(0, hashpos);
    +        }
    +        a.href = href + "#" + hash;
    +    }
    +  }
    +
    +  /**
    +   * Calculates the position of a element within its parent.
    +   */
    +  function getNodePosition(element) {
    +    var pos = -1;
    +    while (element) {
    +      element = element.previousSibling;
    +      pos++;
    +    }
    +    return pos;
    +  }
    +
    +  /**
    +   * Remove the sorting indicator style from all headers.
    +   */
    +  function resetSortedStyle(table) {
    +    for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) {
    +      if (c.className) {
    +        if (c.className.indexOf('down ') == 0) {
    +          c.className = c.className.slice(5);
    +        }
    +        if (c.className.indexOf('up ') == 0) {
    +          c.className = c.className.slice(3);
    +        }
    +      }
    +    }
    +  }
    +
    +  window['initialSort'] = initialSort;
    +  window['toggleSort'] = toggleSort;
    +
    +})();
    diff --git a/coverage/jacoco-resources/source.gif b/coverage/jacoco-resources/source.gif
    new file mode 100644
    index 000000000..b226e41c5
    Binary files /dev/null and b/coverage/jacoco-resources/source.gif differ
    diff --git a/coverage/jacoco-resources/up.gif b/coverage/jacoco-resources/up.gif
    new file mode 100644
    index 000000000..58ed21660
    Binary files /dev/null and b/coverage/jacoco-resources/up.gif differ
    diff --git a/coverage/jacoco-sessions.html b/coverage/jacoco-sessions.html
    new file mode 100644
    index 000000000..4e38c5aa5
    --- /dev/null
    +++ b/coverage/jacoco-sessions.html
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">AWS Lambda Durable Execution SDK Coverage Report</a> &gt; <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">runnervm727z3-d872f5b9</span></td><td>Apr 9, 2026, 12:39:16 AM</td><td>Apr 9, 2026, 12:39:28 AM</td></tr><tr><td><span class="el_session">runnervm727z3-48c689b3</span></td><td>Apr 9, 2026, 12:39:33 AM</td><td>Apr 9, 2026, 12:39:36 AM</td></tr><tr><td><span class="el_session">runnervm727z3-441e5ec8</span></td><td>Apr 9, 2026, 12:39:40 AM</td><td>Apr 9, 2026, 12:39:44 AM</td></tr><tr><td><span class="el_session">runnervm727z3-b49d10b1</span></td><td>Apr 9, 2026, 12:39:45 AM</td><td>Apr 9, 2026, 12:39:58 AM</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonAutoDetect.1</span></td><td><code>e92be2e30fc8c994</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility</span></td><td><code>e79b3be5700d158d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonCreator.Mode</span></td><td><code>1996d290b69e3ec1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonFormat.Feature</span></td><td><code>f52f44c8a86e8d08</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonFormat.Features</span></td><td><code>74d529958b40ca27</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonFormat.Shape</span></td><td><code>c4ce628f50726220</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonFormat.Value</span></td><td><code>7d34936278accdfc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonIgnoreProperties.Value</span></td><td><code>fde323eee0bba504</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonInclude.Include</span></td><td><code>d7540e16ed951988</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonInclude.Value</span></td><td><code>d50e9ec4c3928f3d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonIncludeProperties.Value</span></td><td><code>6840c91c5286db70</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonProperty.Access</span></td><td><code>122c8d457ad799e5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.JsonSetter.Value</span></td><td><code>1ed6e427b537eb5f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.Nulls</span></td><td><code>c19fca0fd2a42625</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.annotation.PropertyAccessor</span></td><td><code>a808f1c52b5248a6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.Base64Variant</span></td><td><code>264889f461ec8487</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.Base64Variant.PaddingReadBehaviour</span></td><td><code>dd0e63a614fe004b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.Base64Variants</span></td><td><code>e646bbe091ae79c0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.ErrorReportConfiguration</span></td><td><code>6ae7b9c14364f861</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JacksonException</span></td><td><code>0b2f626f370d5d03</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonFactory</span></td><td><code>644911986ce8670b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonFactory.Feature</span></td><td><code>6053a66ef91d8599</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonGenerator</span></td><td><code>4797583a35525472</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonGenerator.Feature</span></td><td><code>e70424c10ce385a3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonLocation</span></td><td><code>13be924b79dbda42</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonParseException</span></td><td><code>0200ee6f4f7e4a5e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonParser</span></td><td><code>e1357237d021b470</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonParser.Feature</span></td><td><code>e2ad80adb44c2a3e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonParser.NumberType</span></td><td><code>88e7ccc17e76b9de</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonProcessingException</span></td><td><code>95b93b8105f2756d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonStreamContext</span></td><td><code>329fa38167c8714d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.JsonToken</span></td><td><code>e6705776f91c04a1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.ObjectCodec</span></td><td><code>4de1a295d9dc31ca</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.PrettyPrinter</span></td><td><code>f27d5528a26794c9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.StreamReadCapability</span></td><td><code>a4c561ff4de25114</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.StreamReadConstraints</span></td><td><code>b3912c84a0420e2d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.StreamReadFeature</span></td><td><code>80aa9b62bb00fdff</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.StreamWriteCapability</span></td><td><code>20b236b266d25323</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.StreamWriteConstraints</span></td><td><code>f2bb5b3756dacf82</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.TokenStreamFactory</span></td><td><code>dd572bbe729ca4bb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.TreeCodec</span></td><td><code>18594f8a8dcec6a2</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.Version</span></td><td><code>4e5b012657b4244e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.base.GeneratorBase</span></td><td><code>4a3bbfce5b5dae31</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.base.ParserBase</span></td><td><code>514d2bc6a6573d65</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.base.ParserMinimalBase</span></td><td><code>9e3f7ce4834a5cb5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.exc.StreamReadException</span></td><td><code>59bc951e21defdd3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.CharTypes</span></td><td><code>aac38304f48d92dc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.ContentReference</span></td><td><code>a933a3549b4784c0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.IOContext</span></td><td><code>090fcb0d7d3d729b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.JsonStringEncoder</span></td><td><code>d133cbd8dbd05fae</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.NumberInput</span></td><td><code>948ed537c2680909</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.NumberOutput</span></td><td><code>15e12f636d297c73</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.SegmentedStringWriter</span></td><td><code>c15ac7a87994dffb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.io.SerializedString</span></td><td><code>d4e3fa20d893c769</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonGeneratorImpl</span></td><td><code>0777489898612611</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonParserBase</span></td><td><code>16514eba003d716c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonReadContext</span></td><td><code>e4ccee58993ace39</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonReadFeature</span></td><td><code>077cb14fa17f8f01</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonWriteContext</span></td><td><code>80adf9bb4918112e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.JsonWriteFeature</span></td><td><code>9a7f596eb58a3fd4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.ReaderBasedJsonParser</span></td><td><code>38891223ee674c09</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.json.WriterBasedJsonGenerator</span></td><td><code>0fd350a9933f124f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer</span></td><td><code>7580ab9b187a58fe</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer.TableInfo</span></td><td><code>4daa04bf011847b5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer</span></td><td><code>a8651d214f1feca8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer.Bucket</span></td><td><code>1bc2dd09493393c3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer.TableInfo</span></td><td><code>9a686c3ec604966f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.type.ResolvedType</span></td><td><code>8a4589ad9960ed59</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.BufferRecycler</span></td><td><code>fde0ba4b79279ec2</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.BufferRecyclers</span></td><td><code>4e7bee8eece90b3a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.DefaultIndenter</span></td><td><code>18913563e8366f39</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.DefaultPrettyPrinter</span></td><td><code>f3a7d34d43ac8ab5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.DefaultPrettyPrinter.FixedSpaceIndenter</span></td><td><code>fb7efc66fac1a159</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.DefaultPrettyPrinter.NopIndenter</span></td><td><code>09050690ae456c5e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.InternCache</span></td><td><code>cefb749acf449d74</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.JacksonFeatureSet</span></td><td><code>69b6b3d8af7f13b3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.JsonRecyclerPools</span></td><td><code>581a7a77872e2481</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.JsonRecyclerPools.ThreadLocalPool</span></td><td><code>12fe8784cd664945</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.ReadConstrainedTextBuffer</span></td><td><code>23fc9ce24061d845</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.RecyclerPool.ThreadLocalPoolBase</span></td><td><code>2bdc11e4f9544853</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.Separators</span></td><td><code>c2cdd691b663aa37</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.Separators.Spacing</span></td><td><code>ce6ec0bcfdbddcbe</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.TextBuffer</span></td><td><code>47f4fab5985ac002</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.core.util.VersionUtil</span></td><td><code>12aba5bda07c1bc6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.AnnotationIntrospector</span></td><td><code>fa17f8e48003bd83</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.AnnotationIntrospector.ReferenceProperty</span></td><td><code>14213be28ef1c091</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.AnnotationIntrospector.ReferenceProperty.Type</span></td><td><code>d90a083248c5b3dc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.BeanDescription</span></td><td><code>786d2ce20d4ec4c1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.BeanProperty.Std</span></td><td><code>1dc3c0a141338eba</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.DatabindContext</span></td><td><code>76bc176d5dc342b4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.DatabindException</span></td><td><code>5a69466f1ad0601f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.DeserializationConfig</span></td><td><code>e5c88e9d53d9e8bc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.DeserializationContext</span></td><td><code>71a297eb04186498</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.DeserializationFeature</span></td><td><code>d4b3401c9fc95fee</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.JavaType</span></td><td><code>4b4e8dfd897d7a79</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.JsonDeserializer</span></td><td><code>b793d305bbcc7ea4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.JsonMappingException</span></td><td><code>87eb617a4dc8827a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.JsonSerializer</span></td><td><code>3b9be94557847bc7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.KeyDeserializer</span></td><td><code>57c3ce9990767641</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.MapperFeature</span></td><td><code>608880686c2f77c0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.MappingJsonFactory</span></td><td><code>421188ef7f031f70</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.Module</span></td><td><code>d5a524fc9db54ebf</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ObjectMapper</span></td><td><code>efb812bf2e91e45d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ObjectMapper.1</span></td><td><code>d869d07375485f3a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyMetadata</span></td><td><code>3642a4c891741fdb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyName</span></td><td><code>2e46c488b398de98</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies</span></td><td><code>7a68055a3d608fdc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.KebabCaseStrategy</span></td><td><code>8fa4b406f2df8090</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerCamelCaseStrategy</span></td><td><code>04507cf85e1e9021</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerCaseStrategy</span></td><td><code>7779a037c2bb2953</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.LowerDotCaseStrategy</span></td><td><code>ed1cd6e531bd52a5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.NamingBase</span></td><td><code>3b145ef90e273d98</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy</span></td><td><code>c5e78771078fbfdb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.UpperCamelCaseStrategy</span></td><td><code>0e865323d5a560b9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategies.UpperSnakeCaseStrategy</span></td><td><code>ecc9055aba637b34</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.PropertyNamingStrategy</span></td><td><code>feefebcedcc71e1c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.SerializationConfig</span></td><td><code>f64e52743e6e23ba</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.SerializationFeature</span></td><td><code>95978c7205eb510a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.SerializerProvider</span></td><td><code>add373c9befc17f3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.BaseSettings</span></td><td><code>6e307b8cfc85cf90</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.CoercionAction</span></td><td><code>9e15561f16680f97</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.CoercionConfig</span></td><td><code>ffad61191adeb87e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.CoercionConfigs</span></td><td><code>8937a55c926c734f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.CoercionInputShape</span></td><td><code>90aad4e377b3dccd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ConfigOverride</span></td><td><code>f1771a0d408303c8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ConfigOverride.Empty</span></td><td><code>3372ed519d9bafb4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ConfigOverrides</span></td><td><code>22d24ffa6c186bf5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ConstructorDetector</span></td><td><code>9af1c9a41cb4b83d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ConstructorDetector.SingleArgConstructor</span></td><td><code>b0c67222cebc30be</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ContextAttributes</span></td><td><code>29cc5cc2e7e9958e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.ContextAttributes.Impl</span></td><td><code>9d5d6c1e84b792db</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.DatatypeFeatures</span></td><td><code>f4893ef156575441</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.DatatypeFeatures.DefaultHolder</span></td><td><code>81838084595fa0c8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.DefaultCacheProvider</span></td><td><code>6bbb2aa855b50726</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig</span></td><td><code>7861ff22cec5640b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.EnumFeature</span></td><td><code>16e95ce7a3f1f1ee</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.JsonNodeFeature</span></td><td><code>7330d2d1d47044f4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.MapperBuilder</span></td><td><code>fe96ca9201977e56</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.MapperConfig</span></td><td><code>1d8b5e33071c81b8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.MapperConfigBase</span></td><td><code>4e89f63652bdefed</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.MutableCoercionConfig</span></td><td><code>262e6b36c9ca989e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig</span></td><td><code>d93f22d3258ee4c0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BasicDeserializerFactory</span></td><td><code>66c1b7d3231dd0ce</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.ContainerDefaultMappings</span></td><td><code>4e0724a970fbadad</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BeanDeserializer</span></td><td><code>d01ef2af2efcf345</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BeanDeserializerBase</span></td><td><code>666cffb13521c8ae</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder</span></td><td><code>b4f4c84ce87d6c43</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BeanDeserializerFactory</span></td><td><code>f816955d68be539b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.BeanDeserializerModifier</span></td><td><code>e02ffa263f40078f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.CreatorProperty</span></td><td><code>b4d8a8718eda7a31</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.DefaultDeserializationContext</span></td><td><code>5756779a22fd7d68</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.Impl</span></td><td><code>8057860fe47eb5da</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.DeserializerCache</span></td><td><code>573883aa494a0e06</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.DeserializerFactory</span></td><td><code>ff5d37b3d9ea8e9e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.Deserializers.Base</span></td><td><code>a3b8086adb6ca320</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.SettableBeanProperty</span></td><td><code>0745bca52bab1138</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.ValueInstantiator</span></td><td><code>53707fd1778e51d1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.ValueInstantiator.Base</span></td><td><code>9aa039228fe9f409</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.ValueInstantiators.Base</span></td><td><code>409ddb33d4295a19</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap</span></td><td><code>f7cb13cd880496c1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.CreatorCandidate</span></td><td><code>83d184c9ae1f5c28</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.CreatorCandidate.Param</span></td><td><code>8696d6511c82a1c3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.CreatorCollector</span></td><td><code>4c7bfe9176e89ec1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.FailingDeserializer</span></td><td><code>4904d8577f214eb3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.FieldProperty</span></td><td><code>6648d695642f8308</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators</span></td><td><code>b17897eecedaa1f2</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators.ArrayListInstantiator</span></td><td><code>53035b442447860e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators.JDKValueInstantiator</span></td><td><code>468b264011beccd0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators.LinkedHashMapInstantiator</span></td><td><code>9c6dd8b04f4627f3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.MethodProperty</span></td><td><code>1471c51769dfd075</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.NullsConstantProvider</span></td><td><code>83cd716157aa0f9a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator</span></td><td><code>18d60df48f223cb9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.PropertyValueBuffer</span></td><td><code>553d1b5e34be0c8b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.impl.SetterlessProperty</span></td><td><code>e1305e9fb0855eb4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.CollectionDeserializer</span></td><td><code>682da05af2c29a3b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.ContainerDeserializerBase</span></td><td><code>0f7cf99ff0b0c8a0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.DateDeserializers</span></td><td><code>8b6b0320a7f5c4b7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.EnumDeserializer</span></td><td><code>f8ff0a202a19aac6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.FromStringDeserializer</span></td><td><code>66446d1a605fab3a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.JdkDeserializers</span></td><td><code>3f25ddde73f05bdc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.MapDeserializer</span></td><td><code>c89ca45b8dfd1c38</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers</span></td><td><code>af4aa96d306dfbb7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.BooleanDeserializer</span></td><td><code>30e8686ef1609fb9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.DoubleDeserializer</span></td><td><code>0b71adaefa6b9331</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.IntegerDeserializer</span></td><td><code>32e7b359646f07c6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.LongDeserializer</span></td><td><code>4f613bceafd321c2</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.NumberDeserializer</span></td><td><code>72036545b322608a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.NumberDeserializers.PrimitiveOrWrapperDeserializer</span></td><td><code>467caf19a87c057e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer</span></td><td><code>9e14ebe44545fd0b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StackTraceElementDeserializer</span></td><td><code>07b2d3d51b3af2db</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StackTraceElementDeserializer.Adapter</span></td><td><code>ae66fe1ad9a04451</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdDeserializer</span></td><td><code>6fbb643d4401e755</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer</span></td><td><code>bd007cab1aafe066</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer.StringKD</span></td><td><code>0e61c3d1f7e41bb0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdKeyDeserializers</span></td><td><code>1862d008401cb8e6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer</span></td><td><code>25286f364997b846</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StdValueInstantiator</span></td><td><code>37184da30764c498</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StringCollectionDeserializer</span></td><td><code>da76e6f1253dd6b1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.StringDeserializer</span></td><td><code>36ba9f92a53b7892</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.ThrowableDeserializer</span></td><td><code>36047dba0e2e42ad</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer</span></td><td><code>ef9d6802f80a5781</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializerNR</span></td><td><code>546903acfc59309f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.exc.InvalidDefinitionException</span></td><td><code>1e87cf0c29a7b926</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ext.Java7Handlers</span></td><td><code>31410c423d95a2d0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ext.Java7HandlersImpl</span></td><td><code>423b0b9d126fb382</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ext.Java7Support</span></td><td><code>4b7557784caa415a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ext.Java7SupportImpl</span></td><td><code>94a94fc44678f7e9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ext.OptionalHandlerFactory</span></td><td><code>a873be98e8f52009</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AccessorNamingStrategy</span></td><td><code>3d3b7f563f5ca70a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AccessorNamingStrategy.Provider</span></td><td><code>6026222786456f26</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.Annotated</span></td><td><code>d8a50f577d0f97e3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedClass</span></td><td><code>77bade3ad83b7383</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedClass.Creators</span></td><td><code>97bbbbde4d0352a5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedClassResolver</span></td><td><code>dcd3643857e87392</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedConstructor</span></td><td><code>eaf946db37898a44</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedCreatorCollector</span></td><td><code>f1dbd789d7b2161e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedField</span></td><td><code>e6e45b21b9cdeda3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedFieldCollector</span></td><td><code>12776b633eff9c22</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedFieldCollector.FieldBuilder</span></td><td><code>571d9e7fb561d385</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedMember</span></td><td><code>5879537c033bd580</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedMethod</span></td><td><code>ad2f0bf303d90ae0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector</span></td><td><code>e8e34bff5e47f125</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector.MethodBuilder</span></td><td><code>b522d96f88a7ade4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedMethodMap</span></td><td><code>d69be24a07cecf16</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedParameter</span></td><td><code>05eab262cf202b22</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotatedWithParams</span></td><td><code>54f7d4537c15cfdb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotationCollector</span></td><td><code>c389709d2ffbb364</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotationCollector.EmptyCollector</span></td><td><code>a87b6b2439611ec7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotationCollector.NoAnnotations</span></td><td><code>9173d7167a075d90</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotationCollector.OneCollector</span></td><td><code>4d7ed4cd12d6011c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.AnnotationMap</span></td><td><code>78aa63dcada1ee05</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.BasicBeanDescription</span></td><td><code>ee392418d8888462</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.BasicClassIntrospector</span></td><td><code>39b99876005fda1c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition</span></td><td><code>2dd865e01c7821e3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.ClassIntrospector</span></td><td><code>80b5ce0a8f2ec97e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.CollectorBase</span></td><td><code>fec0f38373f479ba</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase</span></td><td><code>d84392ce3ebfddd1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy</span></td><td><code>efc1568392fc0098</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy.Provider</span></td><td><code>9679bb882d2d354f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy.RecordNaming</span></td><td><code>578773c3cc25aa96</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.EnumNamingStrategyFactory</span></td><td><code>8c9e3cf7c9b3856a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector</span></td><td><code>2f5a1bb2ae0f0d60</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.MemberKey</span></td><td><code>9ca9521f92a44a1e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.MethodGenericTypeResolver</span></td><td><code>93fee28a49a66217</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector</span></td><td><code>b9066075faee89fd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.1</span></td><td><code>92e0bcdab16375b9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder</span></td><td><code>e8fd7f501a9a2db1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.1</span></td><td><code>fe41809db507d418</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.2</span></td><td><code>4cf1c2ab52b6c287</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.3</span></td><td><code>d917eb34c20bc9fe</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.4</span></td><td><code>21c61a8369f9247e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.5</span></td><td><code>693ca89c41543061</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.6</span></td><td><code>d91f75d5236cc8de</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.Linked</span></td><td><code>ee3adc82388b54fb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.PotentialCreator</span></td><td><code>4afb0a27f3fb5b06</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.PotentialCreators</span></td><td><code>41788d498751d740</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.SimpleMixInResolver</span></td><td><code>6a0721d817cbf413</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.TypeResolutionContext.Basic</span></td><td><code>09190ef225acb240</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.introspect.VisibilityChecker.Std</span></td><td><code>fc5c252ca246e76d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jdk14.JDK14Util</span></td><td><code>2acdcc82ad4011a3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jdk14.JDK14Util.RawTypeName</span></td><td><code>450f9974d335e21f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jdk14.JDK14Util.RecordAccessor</span></td><td><code>96dd316a6e135b91</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.json.JsonMapper</span></td><td><code>03e6095447d027cf</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.json.JsonMapper.Builder</span></td><td><code>58432b9966b981c9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator</span></td><td><code>ff1c7cc76de984ce</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator.Base</span></td><td><code>b175bf9510b258ca</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.SubtypeResolver</span></td><td><code>b2ed8bc0e5fe669c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator</span></td><td><code>d02dab29b87ed521</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.impl.StdSubtypeResolver</span></td><td><code>342823e6800eb76b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.jsontype.impl.SubTypeValidator</span></td><td><code>a7ad2f19c2210a88</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.module.SimpleDeserializers</span></td><td><code>53107227f2e2423e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.module.SimpleKeyDeserializers</span></td><td><code>2bf2353de1c43d9e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.module.SimpleModule</span></td><td><code>3f53ed00cec5a434</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.module.SimpleSerializers</span></td><td><code>e9d8a29b450ff8fa</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.node.JsonNodeFactory</span></td><td><code>b407554ab061d84d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BasicSerializerFactory</span></td><td><code>06ddd3ea0362a46e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BeanPropertyWriter</span></td><td><code>be41ae71dfc92f54</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BeanSerializer</span></td><td><code>8bfdf46befe049ab</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BeanSerializerBuilder</span></td><td><code>0107159d6b8f2643</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BeanSerializerFactory</span></td><td><code>bd624d251342d5bd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.BeanSerializerModifier</span></td><td><code>24dbfece082070c4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.ContainerSerializer</span></td><td><code>791df4e64218f911</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.DefaultSerializerProvider</span></td><td><code>4a939462d4ee04e4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.Impl</span></td><td><code>5404c75823dfd574</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.PropertyBuilder</span></td><td><code>4c62d16d11561c61</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.PropertyBuilder.1</span></td><td><code>f48c9fbafe2a4183</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.PropertyWriter</span></td><td><code>a75647305846e8db</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.SerializerCache</span></td><td><code>05a580ec11f5621f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.SerializerFactory</span></td><td><code>a96ec5a87f2a9dec</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.Serializers.Base</span></td><td><code>443d0df59bde7b26</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.FailingSerializer</span></td><td><code>fa5f1815a0731271</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer</span></td><td><code>cd4efc50b27864f0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.IndexedStringListSerializer</span></td><td><code>e075068434c74168</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap</span></td><td><code>b896860192138c16</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.Double</span></td><td><code>827fc9497fc28a95</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.Empty</span></td><td><code>3dce91f99b61f9c6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.Multi</span></td><td><code>c3b9cd10f6b775c6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.SerializerAndMapResult</span></td><td><code>7726b41f965932aa</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.Single</span></td><td><code>e5e537120154be9c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.TypeAndSerializer</span></td><td><code>370b3b65778d2b73</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap</span></td><td><code>f7673b78d4dbb21a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap.Bucket</span></td><td><code>f027017bdef27857</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.impl.UnknownSerializer</span></td><td><code>57b36ae66444a354</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ArraySerializerBase</span></td><td><code>dc34ed0128aae0b4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase</span></td><td><code>f616360ffcb8c03d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.BeanSerializerBase</span></td><td><code>b97bf1b44f1eb074</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.BooleanSerializer</span></td><td><code>53274b73e9fccb8b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ByteArraySerializer</span></td><td><code>65e2202cadcb3f06</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.CalendarSerializer</span></td><td><code>da6df272674c3c19</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.DateSerializer</span></td><td><code>dcf355b20d60965d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.DateTimeSerializerBase</span></td><td><code>96599db15ea3dfb4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.EnumSerializer</span></td><td><code>20a8e28864c7f69d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.MapSerializer</span></td><td><code>755fd32fafa9e6c7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NullSerializer</span></td><td><code>55885eb24739c250</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializer</span></td><td><code>2262ddb2410648e4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers</span></td><td><code>dfe8936a5bca95d8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.1</span></td><td><code>749c16e3536adf29</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.Base</span></td><td><code>243c88192bb86ee4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.DoubleSerializer</span></td><td><code>5b65fb8c8ea04f02</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.FloatSerializer</span></td><td><code>0849cda863777be8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.IntLikeSerializer</span></td><td><code>37f949791419da14</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.IntegerSerializer</span></td><td><code>8572ad7f464034dd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.LongSerializer</span></td><td><code>1bcc67c140cfbe03</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.NumberSerializers.ShortSerializer</span></td><td><code>a678b068eca9e8b6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer</span></td><td><code>6efbed5aa602a53a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StaticListSerializerBase</span></td><td><code>ab7e1015734c45ce</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers</span></td><td><code>f7abbe7f1e6122fb</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.BooleanArraySerializer</span></td><td><code>ab859b119a7226c6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.CharArraySerializer</span></td><td><code>a41866ec92b2f92f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.DoubleArraySerializer</span></td><td><code>88b38db5ec82659c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.FloatArraySerializer</span></td><td><code>5e17436a53701e85</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.IntArraySerializer</span></td><td><code>cf4361bdd444f43f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.LongArraySerializer</span></td><td><code>f7cdac43e55981ef</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.ShortArraySerializer</span></td><td><code>005759ad17a07d29</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdArraySerializers.TypedPrimitiveArraySerializer</span></td><td><code>43a9f0f2e5bf7a4d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdJdkSerializers</span></td><td><code>b1d950d41858d3ba</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdKeySerializer</span></td><td><code>57263a9bf2c56b28</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdKeySerializers</span></td><td><code>bb4fe32f737c71dd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdKeySerializers.Dynamic</span></td><td><code>99a8cc70f899d4e4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdKeySerializers.StringKeySerializer</span></td><td><code>4f8c5546749634aa</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdScalarSerializer</span></td><td><code>294ce690d4fde5d1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StdSerializer</span></td><td><code>835c8daf4ce60eb4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.StringSerializer</span></td><td><code>60754410ce6ad434</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ToEmptyObjectSerializer</span></td><td><code>dc394eb35034fe73</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ToStringSerializer</span></td><td><code>b965af9d2adb22d7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase</span></td><td><code>4df4671bce83caa1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.ser.std.UUIDSerializer</span></td><td><code>86c2c3d2aa8e38aa</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.ArrayType</span></td><td><code>ada34943c659785c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.ClassKey</span></td><td><code>c92de6eb0295e1ea</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.ClassStack</span></td><td><code>b4e39752aaaff8ce</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.CollectionLikeType</span></td><td><code>fdca9c74891003b6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.CollectionType</span></td><td><code>754ccfd8e93b2fdd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.IdentityEqualityType</span></td><td><code>fd3058d6950e2027</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.IterationType</span></td><td><code>7b065c3c52516631</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.LogicalType</span></td><td><code>e0e08cb4c4d717b1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.MapLikeType</span></td><td><code>84a6b76ead78268b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.MapType</span></td><td><code>e4c0bbd455f37026</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.PlaceholderForType</span></td><td><code>f31f14a2bd32fb51</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.ResolvedRecursiveType</span></td><td><code>6dc2c88dbe17a20b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.SimpleType</span></td><td><code>9bf726d4e15bb139</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeBase</span></td><td><code>595557b119f1a886</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeBindings</span></td><td><code>68edbaea56f84474</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeBindings.AsKey</span></td><td><code>5dbe4f61d7b1bbc3</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeBindings.TypeParamStash</span></td><td><code>d3e44935a745bdd9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeFactory</span></td><td><code>528d17324b50d910</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.type.TypeParser</span></td><td><code>555ac466374b5334</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.AccessPattern</span></td><td><code>44bf82acd8a3fffc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.ArrayBuilders</span></td><td><code>c14a06ce657aa67b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.ArrayIterator</span></td><td><code>e4c9e4d38ac21c90</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.BeanUtil</span></td><td><code>47bbf10ba0aa1803</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.ClassUtil</span></td><td><code>c547152e1a0f38b0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.ClassUtil.Ctor</span></td><td><code>0dd5635b61517e04</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.CompactStringObjectMap</span></td><td><code>d64db9a69a0511bc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.EnumResolver</span></td><td><code>71cdf0ffaf7e1dd8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.EnumValues</span></td><td><code>8b5be7085d616a48</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.IgnorePropertiesUtil</span></td><td><code>81001725c2203f99</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.LRUMap</span></td><td><code>c487e14750ddd25e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.LinkedNode</span></td><td><code>73ca05873e25cb2e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls</span></td><td><code>bdc05a04f41ccb62</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.1</span></td><td><code>3f9e9377c6d42a04</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.2</span></td><td><code>184ac4b68ad48816</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.3</span></td><td><code>bc9ea251ed2da27c</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.4</span></td><td><code>64ee92a3ba36ed42</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.5</span></td><td><code>6524cd970ca815a5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.6</span></td><td><code>4d78317bc1be04a4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NamingStrategyImpls.7</span></td><td><code>6cb3f13fc7a38514</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.NativeImageUtil</span></td><td><code>b8f4495279426166</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.ObjectBuffer</span></td><td><code>14fbae37b93a957b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.RootNameLookup</span></td><td><code>add4d1fb1a084862</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.SimpleBeanPropertyDefinition</span></td><td><code>2d51635bfdf1e065</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.StdDateFormat</span></td><td><code>17d03336c7d67885</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.TypeKey</span></td><td><code>32162ed128b7bbbd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.LinkedDeque</span></td><td><code>9bfc4fbb2b0b1196</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap</span></td><td><code>3f0ff22fe5779861</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.AddTask</span></td><td><code>866aec97a77c2650</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.Builder</span></td><td><code>dcc244062522bdc6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.DrainStatus</span></td><td><code>a1e26b7a083af651</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.DrainStatus.1</span></td><td><code>2de09d3a3bfcdca6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.DrainStatus.2</span></td><td><code>2928516020b2e91a</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.DrainStatus.3</span></td><td><code>26e6a18539bc3d80</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.EntryIterator</span></td><td><code>86fc40b47b6d46b6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.EntrySet</span></td><td><code>69a473f3bfd1c6f1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.Node</span></td><td><code>2dc3669c077d2e56</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.WeightedValue</span></td><td><code>c5874d009c2eaa54</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap.WriteThroughEntry</span></td><td><code>564e61c687d1b555</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.JavaTimeFeature</span></td><td><code>ea7929f11ddba913</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.JavaTimeModule</span></td><td><code>e4523775d54e055b</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.JavaTimeModule.1</span></td><td><code>d29fad8e5d7b9d2f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.JavaTimeModule.JavaTimeSerializers</span></td><td><code>969aae827707ee69</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.PackageVersion</span></td><td><code>224bb7f46900cf01</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.DurationDeserializer</span></td><td><code>43624f05a54c2f8f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer</span></td><td><code>a67f34c91526b3be</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase</span></td><td><code>0366d6b796957250</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.JSR310DeserializerBase</span></td><td><code>a42a100eb3db5063</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.JSR310StringParsableDeserializer</span></td><td><code>b550777a45f70f10</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.JavaTimeDeserializerModifier</span></td><td><code>9a67a5b81c60b411</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer</span></td><td><code>325c5f8e81872dd6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer</span></td><td><code>a77cd158e867b1f4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer</span></td><td><code>3579bb0739f1e0da</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.MonthDayDeserializer</span></td><td><code>acdaa463a54d7f15</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer</span></td><td><code>e451571c096123fe</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.YearDeserializer</span></td><td><code>d0533297ef103198</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer</span></td><td><code>307469c817194ad0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.DurationKeyDeserializer</span></td><td><code>86dee43d5fd8de58</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.InstantKeyDeserializer</span></td><td><code>c323cc187e10bdcd</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.Jsr310KeyDeserializer</span></td><td><code>64893f60684210d1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateKeyDeserializer</span></td><td><code>3639e2ff55da7fa1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateTimeKeyDeserializer</span></td><td><code>ed7e026ffd090c77</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.LocalTimeKeyDeserializer</span></td><td><code>c058ad0a221814f2</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.MonthDayKeyDeserializer</span></td><td><code>fe54a17b388e76da</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetDateTimeKeyDeserializer</span></td><td><code>1bfce89e8c6142a4</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetTimeKeyDeserializer</span></td><td><code>7e7c73d8f28d4c13</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.PeriodKeyDeserializer</span></td><td><code>1fb27ade4fa213e5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.YearKeyDeserializer</span></td><td><code>ded209cf80f75df6</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.YearMonthKeyDeserializer</span></td><td><code>bbb3a607d3512540</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneIdKeyDeserializer</span></td><td><code>010f3e4e2802434d</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneOffsetKeyDeserializer</span></td><td><code>b8b591cfa6cb7be9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.deser.key.ZonedDateTimeKeyDeserializer</span></td><td><code>92fa5e4a60f0ade5</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer</span></td><td><code>a5c8d51f6d6d4ae7</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer</span></td><td><code>dbba40957e9eaf5e</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializerBase</span></td><td><code>b350d73dca942b8f</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase</span></td><td><code>29bff602a95b0ec8</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.JSR310SerializerBase</span></td><td><code>2ad341990e9021dc</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.JavaTimeSerializerModifier</span></td><td><code>2681cde6b7fbf170</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer</span></td><td><code>3fe3b848ac4c26de</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer</span></td><td><code>07117a9907d8d8af</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer</span></td><td><code>5bdffa12a22b8552</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.MonthDaySerializer</span></td><td><code>6e4b5e7046878466</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer</span></td><td><code>0ff680b46e49df89</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.OffsetTimeSerializer</span></td><td><code>30d9298bb3cea4f0</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.YearMonthSerializer</span></td><td><code>fcf1268df02f06e9</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.YearSerializer</span></td><td><code>35fd98ece03b0231</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.ZoneIdSerializer</span></td><td><code>04f155c4ebbe4db1</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer</span></td><td><code>f31f18861207ab70</code></td></tr><tr><td><span class="el_class">com.fasterxml.jackson.datatype.jsr310.ser.key.ZonedDateTimeKeySerializer</span></td><td><code>244ed33273b7bb0f</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL</span></td><td><code>64616edb9a35b7d8</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.1</span></td><td><code>0c5e6fbb019aaa08</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.ProviderService</span></td><td><code>9b2beff76c2c0ad0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ByteBuddy</span></td><td><code>8a25cfee68883757</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion</span></td><td><code>da7c006b44346640</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion.VersionLocator.Resolved</span></td><td><code>a389024132c0cc61</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion.VersionLocator.Resolver</span></td><td><code>6f0a8d6c5c95d22c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.AbstractBase</span></td><td><code>47d6d27e15064a2b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.Suffixing</span></td><td><code>83ffc7a50d03e29a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.Suffixing.BaseNameResolver.ForUnnamedType</span></td><td><code>dc4c226cbd0897a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.SuffixingRandom</span></td><td><code>c7e2e00a103cd13c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache</span></td><td><code>05243229e50ea1b0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.LookupKey</span></td><td><code>599592f0f74bbe07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.SimpleKey</span></td><td><code>aab9b5395600f0fd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort</span></td><td><code>2863b0d48a0f3008</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.1</span></td><td><code>ba4f2805581e1090</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.2</span></td><td><code>db80a28c74867927</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.3</span></td><td><code>65abff93a29d75a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.StorageKey</span></td><td><code>b7a810d4119627f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.WithInlineExpunction</span></td><td><code>131bdbf6b155e141</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent</span></td><td><code>4e6d31791b872ae1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AgentProvider.ForByteBuddyAgent</span></td><td><code>29112ecb8b8b4efa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider</span></td><td><code>684e5809245dffbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.ExternalAttachment</span></td><td><code>2eb5780a90fb308f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.Simple</span></td><td><code>e174f5b7baf5e195</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.Simple.WithExternalAttachment</span></td><td><code>0209a0cc40bf38bf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Compound</span></td><td><code>d4787198429d2c2d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForEmulatedAttachment</span></td><td><code>5c241df9146cc094</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForJ9Vm</span></td><td><code>1036a16e82570bc8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForModularizedVm</span></td><td><code>f396394804c5db4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForStandardToolsJarVm</span></td><td><code>6a1ab63f76800028</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForUserDefinedToolsJar</span></td><td><code>d6cccb1e071c957e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentTypeEvaluator.ForJava9CapableVm</span></td><td><code>afa4631e88eae5b9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentTypeEvaluator.InstallationAction</span></td><td><code>de9aa7707e4d7d4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.ProcessProvider.ForCurrentVm</span></td><td><code>fb46842d061b8907</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.ProcessProvider.ForCurrentVm.ForJava9CapableVm</span></td><td><code>9cbf034f4a875aa9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.Installer</span></td><td><code>8bf7b5c7d2be2c5c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice</span></td><td><code>70b624c9f019e2d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor</span></td><td><code>fabc880f6c0d5cd1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor.WithExitAdvice</span></td><td><code>e5e4c6806aaeee24</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor.WithExitAdvice.WithoutExceptionHandling</span></td><td><code>ee7c0bbc4d058e48</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory</span></td><td><code>88f478d1b3b07ef4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory.1</span></td><td><code>5b27bf7bbedbea54</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory.2</span></td><td><code>57b0b2625db26866</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default</span></td><td><code>8f1d6e695fd7ed52</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default.ForMethodEnter</span></td><td><code>2298e62edd4a8f61</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default.ForMethodExit</span></td><td><code>d03149f225f747e5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForInstrumentedMethod.Default</span></td><td><code>3ac42d24c686a98d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForInstrumentedMethod.Default.Copying</span></td><td><code>f3d840402494b1eb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Delegator.ForRegularInvocation.Factory</span></td><td><code>5378b1b8ea4a3362</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher</span></td><td><code>0e7fef258bff623e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inactive</span></td><td><code>17d1a367a7c4f802</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining</span></td><td><code>c3ce45049068fa1f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.CodeTranslationVisitor</span></td><td><code>1504514b9b3dac05</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved</span></td><td><code>6de58a2c31e6f05a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner</span></td><td><code>35df575204406b21</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableCollector</span></td><td><code>5c4bed9acb4fe33a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableExtractor</span></td><td><code>fb86d13a4d8b8eb1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutor</span></td><td><code>dec4d3e69163577d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodEnter</span></td><td><code>34cb9d6bc3c7cc9a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithRetainedEnterType</span></td><td><code>aed2977cf6532c53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodExit</span></td><td><code>57a7e629b3866515</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodExit.WithoutExceptionHandler</span></td><td><code>4677875bb641e3ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Disabled</span></td><td><code>85ecfbf093d6a3b1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForType</span></td><td><code>fa2fbbc6481a65a5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue</span></td><td><code>5b7eff5293f1f424</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.1</span></td><td><code>d679d59d5fd6c1f6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.2</span></td><td><code>2e3770e70234e10e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.3</span></td><td><code>fe0c7bd84802ffd9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.4</span></td><td><code>1aabf94aeb884226</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.5</span></td><td><code>f45edbab1e0e9c5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.6</span></td><td><code>67ef92acb77ae368</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.7</span></td><td><code>b2a655f0f65d66c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.8</span></td><td><code>e7434f88906a9c24</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.9</span></td><td><code>b84a4f1e7e3ce186</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.Bound</span></td><td><code>243cdd25d86e4ab5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.OfNonDefault</span></td><td><code>feaa862c952f8245</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Relocation.ForLabel</span></td><td><code>2ca8b3bcf6049a33</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase</span></td><td><code>c11dfda520c9193f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.SuppressionHandler.NoOp</span></td><td><code>c509d4e15ee51348</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.SuppressionHandler.Suppressing</span></td><td><code>09e072bc1ca4ce4c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default</span></td><td><code>5150bcf8b7ca4eb0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.1</span></td><td><code>b1848b8f9d54a2a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.2</span></td><td><code>ee9674baa95729a9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.3</span></td><td><code>2039586b2e878fb7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default</span></td><td><code>b7646d7a13f17583</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default.ForAdvice</span></td><td><code>42c9c05091c4a149</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default.WithCopiedArguments</span></td><td><code>613e58a9d40f4543</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.NoExceptionHandler</span></td><td><code>85ae8e6a09ca4f81</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Factory.AdviceType</span></td><td><code>dd14d1576caa2ad4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Factory.Illegal</span></td><td><code>fa561d82583ef937</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForAllArguments</span></td><td><code>872309721f07bc32</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForAllArguments.Factory</span></td><td><code>e34fac7274362266</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument</span></td><td><code>ff73ee4c55cc6164</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument.Unresolved</span></td><td><code>9551e89b98949a4c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument.Unresolved.Factory</span></td><td><code>278dd3908309ea1a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForDynamicConstant.Factory</span></td><td><code>a14df00a10dbe7d9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForEnterValue</span></td><td><code>3ed67498436236ab</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForEnterValue.Factory</span></td><td><code>290ac0d704269bd6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForExitValue.Factory</span></td><td><code>988128caa26d936c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForField.Unresolved.Factory</span></td><td><code>690f359d0e8a8eee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForFieldHandle.Unresolved.ReaderFactory</span></td><td><code>4af22e2a757bf31a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForFieldHandle.Unresolved.WriterFactory</span></td><td><code>8fb88f057a84ce01</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForHandle.Factory</span></td><td><code>fc4d8ad5640502b1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod</span></td><td><code>f9c766b7738a0693</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.1</span></td><td><code>7f8b1a3dde7a0c48</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.2</span></td><td><code>2440d1f955b26dbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.3</span></td><td><code>78e7d35d754c495a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.4</span></td><td><code>6795dcd6ec57c163</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.5</span></td><td><code>29f0de3fb8feaef4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedType</span></td><td><code>9cb199178b40c2e0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForLocalValue.Factory</span></td><td><code>dee082d8fb8c9059</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForOrigin.Factory</span></td><td><code>cc27f773ada1ac11</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForReturnValue</span></td><td><code>df9aeb25477abe21</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForReturnValue.Factory</span></td><td><code>3f8ddbaca9c0ca46</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForSelfCallHandle.Factory</span></td><td><code>f4e803bdd3ec001f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStackManipulation</span></td><td><code>42fae42b06e0ab7d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStackManipulation.Factory</span></td><td><code>2b1ef8ab130df062</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStubValue</span></td><td><code>f6e4b7bed2d4994e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThisReference</span></td><td><code>61bdbcb141a58594</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThisReference.Factory</span></td><td><code>e6438a2fa03556fa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThrowable.Factory</span></td><td><code>8258647049b8eb56</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForUnusedValue.Factory</span></td><td><code>bfd367cdaa8cf459</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort</span></td><td><code>fb270c614c10d4b0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort.1</span></td><td><code>621f2e7f3b3b6565</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort.2</span></td><td><code>ace13bc50cb664fa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForArray</span></td><td><code>f0f6d54d957fc045</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForArray.ReadOnly</span></td><td><code>0f9962dd8bc7de98</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForDefaultValue</span></td><td><code>6d8821b5f8b246b1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForDefaultValue.ReadWrite</span></td><td><code>6cb12c2494912a7b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForStackManipulation</span></td><td><code>fccfc9f054f497ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable</span></td><td><code>24b0c4f2c614c48c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable.ReadOnly</span></td><td><code>b6c7fd082249ae77</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable.ReadWrite</span></td><td><code>0c416afdff59072e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.PostProcessor.NoOp</span></td><td><code>1512979491b2467e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default</span></td><td><code>33caa14d82b5421e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.ForAdvice</span></td><td><code>d4b482c28c799b9f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization</span></td><td><code>76b8e9fcb7058856</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization.1</span></td><td><code>f1e81aecea736054</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization.2</span></td><td><code>5ee1fd4ae8179ac1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode</span></td><td><code>2f8f1e9d91c57542</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.1</span></td><td><code>c94ef73f34640c1b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.2</span></td><td><code>87cf86c20729f65e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.3</span></td><td><code>e6194c7d74113b12</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.WithPreservedArguments</span></td><td><code>3a5b748d9afc1836</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.WithPreservedArguments.WithArgumentCopy</span></td><td><code>894c7278034b34b6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.WithCustomMapping</span></td><td><code>b39f1cffed199307</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.AbstractBase</span></td><td><code>1e9138fb1b0b4185</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.Compound</span></td><td><code>0648db34b4a99a08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods</span></td><td><code>cf768d8f5b16d996</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods.DispatchingVisitor</span></td><td><code>6468c29bcf0a7088</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods.Entry</span></td><td><code>ea3722f7f3e6a8e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.NoOp</span></td><td><code>6782431026fffec0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.ByteCodeElement.Token.TokenList</span></td><td><code>c378dffbca959a48</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.ModifierReviewable.AbstractBase</span></td><td><code>2ea5306ed3260bac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.NamedElement.WithDescriptor</span></td><td><code>79917fb7c151850b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.TypeVariableSource.AbstractBase</span></td><td><code>afa9cbe714a69ea6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription</span></td><td><code>7b5d7f348452a8fd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription.AbstractBase</span></td><td><code>91fe2a0215db7a25</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription.ForLoadedAnnotation</span></td><td><code>45b968ae6eb349e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.AbstractBase</span></td><td><code>b2574970a6108617</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.Empty</span></td><td><code>85778debddc6a8e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.Explicit</span></td><td><code>45fb4e2b44a1ab64</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.ForLoadedAnnotations</span></td><td><code>309c064a5edad9f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationSource.Empty</span></td><td><code>3efda4f89915900c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue</span></td><td><code>d7f3d011bdffb51e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.AbstractBase</span></td><td><code>69e2bb699468284a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant</span></td><td><code>7427deef2563f6d0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType</span></td><td><code>42f42342648b8fa7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.1</span></td><td><code>de1b42a4850c814e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.2</span></td><td><code>2062c5f9436afbda</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.3</span></td><td><code>9f54ef11aadacf72</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.4</span></td><td><code>994767655151955f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.5</span></td><td><code>1745bb6a04e8993d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.6</span></td><td><code>e1f9c9a005abae22</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.7</span></td><td><code>6ed2f2d151367cbb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.8</span></td><td><code>a27ee00384a36bef</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.9</span></td><td><code>63c6c63b84353202</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForDescriptionArray</span></td><td><code>fcfee5f41864d050</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForEnumerationDescription</span></td><td><code>ae910611763d0f68</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForEnumerationDescription.Loaded</span></td><td><code>d5a7abe5386d61fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForTypeDescription</span></td><td><code>6ab0ae6789cbf5ef</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.Loaded.AbstractBase</span></td><td><code>f3f7beb6650a5ac8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.Sort</span></td><td><code>0a66a94600ced3bc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.State</span></td><td><code>ec800f741ddcd502</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.enumeration.EnumerationDescription.AbstractBase</span></td><td><code>99c01057a1777d0c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.enumeration.EnumerationDescription.ForLoadedEnumeration</span></td><td><code>affebde010d964e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription</span></td><td><code>beebcc8fb52f5092</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.AbstractBase</span></td><td><code>14186b080645f953</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.ForLoadedField</span></td><td><code>123156fd14617ba2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.InDefinedShape.AbstractBase</span></td><td><code>0d8b55a89d1f5d33</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.Latent</span></td><td><code>3988698b9a06a78b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.SignatureToken</span></td><td><code>56fee817a36ae13e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.Token</span></td><td><code>cb32bbcddd28b15f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.AbstractBase</span></td><td><code>eaf7adc9c2f91154</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.Explicit</span></td><td><code>8f12c029b0e18281</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.ForLoadedFields</span></td><td><code>8b99118397373efd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.ForTokens</span></td><td><code>212571f44e74f5ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription</span></td><td><code>29fc82bada408f50</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.AbstractBase</span></td><td><code>cd48701a16ec6aae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.ForLoadedConstructor</span></td><td><code>6b82fc21752f5919</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.ForLoadedMethod</span></td><td><code>1c3e6a782b133159</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.InDefinedShape.AbstractBase</span></td><td><code>a1150ad60ccc435a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.InDefinedShape.AbstractBase.ForLoadedExecutable</span></td><td><code>1009e43f35e34cbd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Latent</span></td><td><code>906c68aeeaaf7c2c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Latent.TypeInitializer</span></td><td><code>d2d992bea0797b42</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.SignatureToken</span></td><td><code>5451f2ff109b0d00</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Token</span></td><td><code>a2181b4586337ee7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.TypeSubstituting</span></td><td><code>0993d75a33526eb0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.TypeToken</span></td><td><code>5e47ae2a4768bc1c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.AbstractBase</span></td><td><code>6e4bb8d5a09ca7f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.Explicit</span></td><td><code>9650ca53b2f6a6e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.ForLoadedMethods</span></td><td><code>7648140277a32974</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.ForTokens</span></td><td><code>42b106ad57e53b91</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.TypeSubstituting</span></td><td><code>e3ff3658a2c85bc8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.AbstractBase</span></td><td><code>f0e631571e74e319</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter</span></td><td><code>1f8303d30bd71a08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter.OfConstructor</span></td><td><code>c6cfab06736c11d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter.OfMethod</span></td><td><code>4bdfdb69b0fecfa2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.InDefinedShape.AbstractBase</span></td><td><code>607a2c5720c1d99a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Latent</span></td><td><code>be72fd24f033a8d0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Token</span></td><td><code>8b04ac8d91e9a55d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Token.TypeList</span></td><td><code>c866bbd9b65b2971</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.TypeSubstituting</span></td><td><code>0a2f4fe45f35ee10</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.AbstractBase</span></td><td><code>f7b000339c3e568b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.Empty</span></td><td><code>2463e6f28cf205b6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.Explicit.ForTypes</span></td><td><code>fc4054301271c498</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable</span></td><td><code>d153e01de14acb07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable.OfConstructor</span></td><td><code>42a22ddaced8086a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable.OfMethod</span></td><td><code>79fde0798956bcac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForTokens</span></td><td><code>203436ff676d33bc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.TypeSubstituting</span></td><td><code>e79828a2536106b7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.FieldManifestation</span></td><td><code>8c08d347304d6d18</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.ModifierContributor.Resolver</span></td><td><code>0703516f4b7fd825</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Ownership</span></td><td><code>2e60a3d39ac5641b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.SynchronizationState</span></td><td><code>f5442374e6d2e05c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.SyntheticState</span></td><td><code>32e09bf9a909c23b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.TypeManifestation</span></td><td><code>b090b1e7c7385c73</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Visibility</span></td><td><code>98008a87e5e30e3e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Visibility.1</span></td><td><code>b8d629c2c45ceb7b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.AbstractBase</span></td><td><code>0ec6f311394275e0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.ForLoadedPackage</span></td><td><code>4c0675dabc7f0352</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.Simple</span></td><td><code>f70620e1fa6685ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.AbstractBase</span></td><td><code>6ec7cebb7657a89e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.Empty</span></td><td><code>8a33bff3c9e86862</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.ForTokens</span></td><td><code>fc914dd18d7a6558</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDefinition.Sort</span></td><td><code>6274c605f85caf0c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDefinition.SuperClassIterator</span></td><td><code>5809749d8b426dc8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription</span></td><td><code>c3eaeda62d963b8f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.AbstractBase</span></td><td><code>4c470694ace19ac8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.AbstractBase.OfSimpleType</span></td><td><code>5818a940b298c7ab</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.ArrayProjection</span></td><td><code>db4200f41a9d25b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.ForLoadedType</span></td><td><code>445de55c15b3091b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic</span></td><td><code>52e171d973daa9cb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AbstractBase</span></td><td><code>70091e48533fe83a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator</span></td><td><code>ba33a37252d9901e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.Chained</span></td><td><code>a18769b831f5d045</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedExecutableExceptionType</span></td><td><code>fc12460a1e315c5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedExecutableParameterType</span></td><td><code>820fde02a9920d37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedField</span></td><td><code>c983cfe01d0d5edb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedInterface</span></td><td><code>a5b8cb5a2d7c21c3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedMethodReturnType</span></td><td><code>850a31c9319cfa02</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedSuperClass</span></td><td><code>c2f372c822fca3e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedTypeVariable</span></td><td><code>3925b4cc15f4bd2f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.Simple</span></td><td><code>242d40ab18115093</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForComponentType</span></td><td><code>4748d1b5aeab5236</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForOwnerType</span></td><td><code>a2f75393f0f99bb4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeArgument</span></td><td><code>b6147d2e51640023</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeVariableBoundType</span></td><td><code>fdfe10d1fb135210</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeVariableBoundType.OfFormalTypeVariable</span></td><td><code>bb1fab9736bbedf3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForWildcardLowerBoundType</span></td><td><code>b97a1df71c1b4dc5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForWildcardUpperBoundType</span></td><td><code>98fbf4d7a37c0e61</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.NoOp</span></td><td><code>bfcd9d8dca3065f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection</span></td><td><code>07ac00385cc953c1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedFieldType</span></td><td><code>1b18d66c9610018d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedReturnType</span></td><td><code>2bf5be358b4dc655</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedSuperClass</span></td><td><code>b3ce70f79a11e22c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.OfConstructorParameter</span></td><td><code>dc5b41f427a54066</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.OfMethodParameter</span></td><td><code>fb1afa36f177f218</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithEagerNavigation</span></td><td><code>2c30af0f6fa58f88</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithEagerNavigation.OfAnnotatedElement</span></td><td><code>6806a9bf7ba25171</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithLazyNavigation</span></td><td><code>80a39599d01968d6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithLazyNavigation.OfAnnotatedElement</span></td><td><code>d2786c8c9ae86232</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithResolvedErasure</span></td><td><code>306963d1fc7a671c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProxy</span></td><td><code>c5562144abf34544</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray</span></td><td><code>0660b19e071b04d9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray.ForLoadedType</span></td><td><code>4a2923389eaf5c8b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray.Latent</span></td><td><code>0980141661f7e1a7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType</span></td><td><code>9f6b0bd613a646fc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.ForErasure</span></td><td><code>8c4eacb30cea265e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.ForLoadedType</span></td><td><code>5274fb8c35225f5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.ForReifiedErasure</span></td><td><code>aed938d46e95e44c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.Latent</span></td><td><code>372c896f35267a96</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType</span></td><td><code>cf9990642c03405f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForGenerifiedErasure</span></td><td><code>7ed56b64be3ef06d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForLoadedType</span></td><td><code>554831d385360a6d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForLoadedType.ParameterArgumentTypeList</span></td><td><code>4d7b4f0a54d64909</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForReifiedType</span></td><td><code>320948b9f385d4b4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.Latent</span></td><td><code>65bad8524d24da78</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable</span></td><td><code>86e4078bd5cd6a82</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.ForLoadedType</span></td><td><code>ed5cd3cbbe779d8c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.ForLoadedType.TypeVariableBoundList</span></td><td><code>eb6620f5799fe8f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.Symbolic</span></td><td><code>58cf78bca4d2bd51</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.WithAnnotationOverlay</span></td><td><code>ec478e7fa8287853</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType</span></td><td><code>9f36a440f0a04724</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType</span></td><td><code>2224f84636e0f952</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType.WildcardLowerBoundTypeList</span></td><td><code>615a97949ca84b45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType.WildcardUpperBoundTypeList</span></td><td><code>87a5af4372397dda</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.Latent</span></td><td><code>0f49202883abd15b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.AnnotationStripper</span></td><td><code>3e19b0550a8be1bd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.AnnotationStripper.NonAnnotatedTypeVariable</span></td><td><code>617699ec0a3562b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForRawType</span></td><td><code>2ab665659e488ee3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForSignatureVisitor</span></td><td><code>c0eebf71c2c20203</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForSignatureVisitor.OfTypeArgument</span></td><td><code>0561fc5d35509089</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reducing</span></td><td><code>87d9b9c7cdb46685</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying</span></td><td><code>1f23e61efd8c040e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying.1</span></td><td><code>9992e854290cac45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying.2</span></td><td><code>3880aef22a6c4930</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor</span></td><td><code>5bc3866175f926f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForAttachment</span></td><td><code>8cf9a45e6526538b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForDetachment</span></td><td><code>c1c177d019118d9b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForTypeVariableBinding</span></td><td><code>c8c364768506ed0b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForTypeVariableBinding.TypeVariableSubstitutor</span></td><td><code>cce8953b87ceb945</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.WithoutTypeSubstitution</span></td><td><code>039af874f4087139</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.TypeErasing</span></td><td><code>c81cedd98f160974</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator</span></td><td><code>140b09b73b4b60c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.1</span></td><td><code>d799308b1611cd13</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.2</span></td><td><code>499de672436311ce</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.3</span></td><td><code>7923429fa88ea5cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.ForTypeAnnotations</span></td><td><code>6025d4a2423e87ac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Latent</span></td><td><code>aff7537b8e4a3b56</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.LazyProxy</span></td><td><code>edc5abaabf7281a4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList</span></td><td><code>ffa2fe3b5b233353</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.AbstractBase</span></td><td><code>03ace8fa7043bfce</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Empty</span></td><td><code>d5bf5d4843d3b40b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Explicit</span></td><td><code>23780d287a231e41</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.ForLoadedTypes</span></td><td><code>826dc7ad585dcbcb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.AbstractBase</span></td><td><code>82e09b4ce109a939</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.Empty</span></td><td><code>09b9aca5ee8c1475</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.Explicit</span></td><td><code>d184b9433829caba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes</span></td><td><code>7df55a5ca5fec13f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.OfTypeVariables</span></td><td><code>3a26e31857238724</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.OfTypeVariables.AttachedTypeVariable</span></td><td><code>75cc8314964e08b5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.WithResolvedErasure</span></td><td><code>5dc3a74323127305</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForLoadedTypes</span></td><td><code>6d36b199d5e88b53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForLoadedTypes.OfTypeVariables</span></td><td><code>0ed9eb434cab9b70</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfConstructorExceptionTypes</span></td><td><code>1eb0243fd9192b8a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfLoadedInterfaceTypes</span></td><td><code>1d9424dd0d7bc1c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfLoadedInterfaceTypes.TypeProjection</span></td><td><code>808c89479cd00a5d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfMethodExceptionTypes</span></td><td><code>f6b71c9483cf7675</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfMethodExceptionTypes.TypeProjection</span></td><td><code>30acd7d949c355bb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeVariableToken</span></td><td><code>ba16c063046983a1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader</span></td><td><code>27d77cb6b78fc547</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader.BootLoaderProxyCreationAction</span></td><td><code>cd2788dbef627a42</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.Resolution.Explicit</span></td><td><code>3b5906ac6a8ae97c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.Simple</span></td><td><code>aa55299a7027b445</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.AbstractBase</span></td><td><code>690dc473a1fcc899</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase</span></td><td><code>aa1759a3194d7f14</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter</span></td><td><code>1052045033e158fb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.FieldDefinitionAdapter</span></td><td><code>b0d316958f2c533a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter</span></td><td><code>060b669748c6eb43</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter.AnnotationAdapter</span></td><td><code>734373a7d618763a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter.SimpleParameterAnnotationAdapter</span></td><td><code>0e661f268cdd9c08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodMatchAdapter</span></td><td><code>7a8cf3bcd2d805c6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodMatchAdapter.AnnotationAdapter</span></td><td><code>1505339515cd1c19</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.OptionalMethodMatchAdapter</span></td><td><code>d415d86eeb500e07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Delegator</span></td><td><code>936b4705c2af1791</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.UsingTypeWriter</span></td><td><code>fd88ea62d3bec9e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.AbstractBase</span></td><td><code>305861cdfa6660be</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.Valuable.AbstractBase</span></td><td><code>6ac9b330fc124370</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.Valuable.AbstractBase.Adapter</span></td><td><code>61c7c08f0fb4acb0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.AbstractBase</span></td><td><code>e1b17723ee466981</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.AbstractBase.Adapter</span></td><td><code>fa398faff0645c86</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ExceptionDefinition.AbstractBase</span></td><td><code>553558cdd2ea7d30</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ImplementationDefinition.AbstractBase</span></td><td><code>72bbf9be43329300</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.AbstractBase</span></td><td><code>c46baf31879e7f18</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Initial.AbstractBase</span></td><td><code>bf9ad000af8dfbe7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.AbstractBase</span></td><td><code>3591bd96cf8ba88c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.Annotatable.AbstractBase</span></td><td><code>dd4ec10b2ca5aed6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.Annotatable.AbstractBase.Adapter</span></td><td><code>511cf7967b5892fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ReceiverTypeDefinition.AbstractBase</span></td><td><code>6abfb4279099921b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.TypeVariableDefinition.AbstractBase</span></td><td><code>9bb9648ea001ee26</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default</span></td><td><code>f56db2a964930d9f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default.Loaded</span></td><td><code>b3ca6c151890771d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default.Unloaded</span></td><td><code>60aab9827a2fe060</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.TargetType</span></td><td><code>92d2ae273e27a92e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.Compound</span></td><td><code>31031064056b461f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod</span></td><td><code>9763e7fc8d3d0039</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.MethodModifierTransformer</span></td><td><code>392d6ab6d2a08504</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod</span></td><td><code>8ee8fb29bbaa1f45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.AttachmentVisitor</span></td><td><code>41498d5684407e50</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.TransformedParameter</span></td><td><code>2196a64af1ada8f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.TransformedParameterList</span></td><td><code>68df6a158c64de3a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.NoOp</span></td><td><code>8fa58b41007a0c6e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.TypeResolutionStrategy.Passive</span></td><td><code>560bec77a3a9e1cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default</span></td><td><code>92dd499e424995ab</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.1</span></td><td><code>88969522be51c47a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.2</span></td><td><code>e90257accee75dbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.3</span></td><td><code>dba1eec57628b9b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader</span></td><td><code>bc61ad56649f6a21</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.ClassDefinitionAction</span></td><td><code>7ddd05378a81b5ac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PackageLookupStrategy.CreationAction</span></td><td><code>579d717b5fb1777c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PackageLookupStrategy.ForJava9CapableVm</span></td><td><code>3116856af2d9e391</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler</span></td><td><code>e4d3975d11965972</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler.1</span></td><td><code>c5b4f188a059f348</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler.2</span></td><td><code>d4d9d89c20c33c79</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.SynchronizationStrategy.CreationAction</span></td><td><code>85defb9db5b2b5cc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.SynchronizationStrategy.ForJava8CapableVm</span></td><td><code>fae027d8e16a32fa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassFilePostProcessor.NoOp</span></td><td><code>6146ad1c41c815ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase</span></td><td><code>48ea808bb6ccbbf1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingLookup</span></td><td><code>0ac0b66e8bfc7f1d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy</span></td><td><code>eee19f05d61ced57</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy.UsingLookup</span></td><td><code>3fe445da3a017ea7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.InjectionClassLoader</span></td><td><code>41bc10f352e48896</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.InjectionClassLoader.Strategy</span></td><td><code>6ed217ae5fb57d05</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.MultipleParentClassLoader.Builder</span></td><td><code>079ab85cc0317f7f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.Definition.Trivial</span></td><td><code>968c1d05fe34e6ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.Trivial</span></td><td><code>1b8be35a135f3f27</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.AbstractBase</span></td><td><code>cf87e1b20bb0b8da</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.ForClassHierarchy</span></td><td><code>7a3b903f068f7597</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.ForClassHierarchy.Factory</span></td><td><code>03b1190c054626d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.Resolution.Illegal</span></td><td><code>2aa162cec2d09e4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.Resolution.Simple</span></td><td><code>9c60c3ef37a8e07c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default</span></td><td><code>d252721578bc0fb5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Compiled</span></td><td><code>7dac3c03ab5df0af</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Compiled.Entry</span></td><td><code>a356ed792e610abf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Entry</span></td><td><code>21cbb71bbb74244a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Default</span></td><td><code>f8044cbd9b3fe7e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default</span></td><td><code>c7f976e803f8d3a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default.1</span></td><td><code>01e6e0df84609179</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default.2</span></td><td><code>41b308deac98792e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler</span></td><td><code>6b8d18710c99d74d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.AbstractBase</span></td><td><code>86739f96369d83b2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default</span></td><td><code>2800dfa5c3b8aca7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod</span></td><td><code>8ef28acf242eae2d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.Token</span></td><td><code>7bd97f7cecaf5018</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key</span></td><td><code>88f2458db8c741e7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Detached</span></td><td><code>89750a8204bacfc3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Harmonized</span></td><td><code>a31e139e57804f56</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store</span></td><td><code>7716ed339d21e000</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Ambiguous</span></td><td><code>69db800671ee2019</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Initial</span></td><td><code>a1eb87bc66f88929</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Resolved</span></td><td><code>9c0eb28c1120302a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Resolved.Node</span></td><td><code>7bbcb1eaea5064d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Graph</span></td><td><code>bf364158f6188e45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Merger.Directional</span></td><td><code>afc0868aacc8dbb5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.ForDeclaredMethods</span></td><td><code>6c4c0c83346af9e0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Empty</span></td><td><code>0f8190524ba952c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Linked.Delegation</span></td><td><code>47e48556a9cda077</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Simple</span></td><td><code>cf6e675432bc60ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Sort</span></td><td><code>c997ba920aa81bb5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Unresolved</span></td><td><code>c0dc9372315bec1a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.NodeList</span></td><td><code>ddb63425295dab8e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Simple</span></td><td><code>b231d730a2138443</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default</span></td><td><code>e823178c1c962613</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Compiled</span></td><td><code>86804b8f21a02f7e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Compiled.Entry</span></td><td><code>b9727d766a3abd06</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Entry</span></td><td><code>0216bf1a4989ddd9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Prepared</span></td><td><code>2fc66a86a52ec6f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Prepared.Entry</span></td><td><code>6c98eecdcd8c8c68</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Handler.ForImplementation</span></td><td><code>8db040195f76894f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Handler.ForImplementation.Compiled</span></td><td><code>3ade648194f6daec</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.RecordComponentRegistry.Default</span></td><td><code>891a9cb069e1ffb3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.RecordComponentRegistry.Default.Compiled</span></td><td><code>faf0312e50511a4b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.Drain.Default</span></td><td><code>391ec96470191ff5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.None</span></td><td><code>0aa5903ad3f1d635</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.Simple</span></td><td><code>cf379da7dede87a5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeValidation</span></td><td><code>50527b71bc87dd74</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default</span></td><td><code>f27ba1edbba53a3c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ClassDumpAction.Dispatcher.Disabled</span></td><td><code>2cbe19f435bea571</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForCreation</span></td><td><code>03b740be560ec44d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining</span></td><td><code>ea80afd67a6759b1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.ContextRegistry</span></td><td><code>30f87ac3b6e91d07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing</span></td><td><code>cc2d500ff979fe0d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending</span></td><td><code>78681a98b1676574</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.FrameWriter.NoOp</span></td><td><code>4e676b84c2db9221</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain</span></td><td><code>1c35fc86761df78a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain.WithoutActiveRecord</span></td><td><code>a9601fe4f1c04d81</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Creating</span></td><td><code>1863bc3b7943bb2b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor</span></td><td><code>88eb70c1f7cb268c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.SignatureKey</span></td><td><code>30f02c677c168ffb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.UnresolvedType</span></td><td><code>9b9d5a9877b725fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor</span></td><td><code>fef9b21649f006c2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.Compound</span></td><td><code>7658cf279fcd7eba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.ForClass</span></td><td><code>d6e8080c2ac49ca3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.ForClassFileVersion</span></td><td><code>98d826d97325d335</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.ValidatingMethodVisitor</span></td><td><code>0f3d60cd71ee55ec</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.FieldPool.Record.ForExplicitField</span></td><td><code>84d49e949954f821</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.FieldPool.Record.ForImplicitField</span></td><td><code>bd4c79016e6c7e59</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.AccessBridgeWrapper</span></td><td><code>51ec572f133baaf7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForDefinedMethod</span></td><td><code>f6b5f34a9b4e8f93</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForDefinedMethod.WithBody</span></td><td><code>e26a3dcae9eda3d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForNonImplementedMethod</span></td><td><code>0ebfdc52a422a2d4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.Sort</span></td><td><code>9c1fc9a17d6e668e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.AbstractInliningDynamicTypeBuilder</span></td><td><code>cf872dafa4e005ce</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.InliningImplementationMatcher</span></td><td><code>cd56190fcf8cbef5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.MethodRebaseResolver.Disabled</span></td><td><code>7fc8122bae557f2d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.RedefinitionDynamicTypeBuilder</span></td><td><code>d35704c254c6bf65</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default</span></td><td><code>30f93c3d785de262</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.1</span></td><td><code>c55a41a20be13da8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.2</span></td><td><code>1b59827354f09dbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.3</span></td><td><code>03f49005d185f31e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.4</span></td><td><code>8abb20a81cdfe753</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.5</span></td><td><code>03da9e9a4baa343b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder</span></td><td><code>ce4febf2d4e7172b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.InstrumentableMatcher</span></td><td><code>dd98202dcb516302</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget</span></td><td><code>5c39954e80bc68aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.Factory</span></td><td><code>9507db5376136dc4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver</span></td><td><code>e3591b410f1beb48</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver.1</span></td><td><code>307c2f6381acad86</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver.2</span></td><td><code>d07ed98e74e119c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor</span></td><td><code>cfb202bdbdbb8245</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldLocation.Relative</span></td><td><code>984a923cd14afdb5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldLocation.Relative.Prepared</span></td><td><code>6f3f6e4a9370fc37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldNameExtractor.ForBeanProperty</span></td><td><code>6fc2126f6b4215fc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldNameExtractor.ForBeanProperty.1</span></td><td><code>0e09b0a77c7d7add</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldNameExtractor.ForBeanProperty.2</span></td><td><code>9b5ceca2df3ecd1d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.ForImplicitProperty</span></td><td><code>00ae8b8a36194ac3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.ForImplicitProperty.Appender</span></td><td><code>2e8d7d416fa1d766</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default</span></td><td><code>a4f77d0e8c30d8ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AbstractPropertyAccessorMethod</span></td><td><code>e66307066ee6748f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AccessorMethod</span></td><td><code>2cbdafd9341571b2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AccessorMethodDelegation</span></td><td><code>e8f1a8118ac7bb70</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.CacheValueField</span></td><td><code>a8f1451ccb79fe81</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.DelegationRecord</span></td><td><code>ffeb02bcef268ff1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.Factory</span></td><td><code>7907cd1700b68712</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.FieldCacheEntry</span></td><td><code>32d2586f8f82b67b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Disabled</span></td><td><code>d226525d9b1661c1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Disabled.Factory</span></td><td><code>fc5147fce792870c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.ExtractableView.AbstractBase</span></td><td><code>fc1194c64d81a8f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.FrameGeneration</span></td><td><code>732fca6ba6d7f948</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.FrameGeneration.1</span></td><td><code>e1cb50e88c828853</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.FrameGeneration.2</span></td><td><code>eced4d043d2746ae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.FrameGeneration.3</span></td><td><code>896ff9ab8ad2a703</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.AbstractBase</span></td><td><code>c1e6064a9dc7eabe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.Illegal</span></td><td><code>ca8b00de46ba4516</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.Simple</span></td><td><code>3b1d460fdb691665</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase</span></td><td><code>2bb25225337712f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation</span></td><td><code>95cadf8bb1c40a5e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation.1</span></td><td><code>1522748b6ede90f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation.2</span></td><td><code>1a1e99939835b649</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.LoadedTypeInitializer.NoOp</span></td><td><code>079c0db350266bf1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodAccessorFactory.AccessType</span></td><td><code>e6d2a93e93eddb74</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall</span></td><td><code>803a80b61cf5154e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.Appender</span></td><td><code>2c97aa6a2fcc90d6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.ArgumentLoader.ForMethodParameter</span></td><td><code>d998babb2fab7f80</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.ArgumentLoader.ForMethodParameter.Factory</span></td><td><code>c6d5aecc90f60b77</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForContextualInvocation</span></td><td><code>c62220dd02fbbe5e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForContextualInvocation.Factory</span></td><td><code>8e991c8f6c61a26b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForVirtualInvocation.WithImplicitType</span></td><td><code>4b9ee3e1372d7a3c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodLocator.ForExplicitMethod</span></td><td><code>3f52678e927adb2e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall</span></td><td><code>168bccd0171653ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall.Factory</span></td><td><code>007987dfc0108802</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall.Resolved</span></td><td><code>98d454c731a52565</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodParameter</span></td><td><code>e14f2f3fbceefcc9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodParameter.Resolved</span></td><td><code>2905935a56e53005</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation</span></td><td><code>9ae78c658f9fa129</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation.Factory</span></td><td><code>f95bda15a3f3fc2d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation.Resolved</span></td><td><code>f56743558df08d26</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple</span></td><td><code>94548bcde51ac7c5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.1</span></td><td><code>51a0379b030a2561</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.2</span></td><td><code>0f85a678e3b7ce29</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.3</span></td><td><code>75c93aba20f438fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.WithoutSpecifiedTarget</span></td><td><code>de94872b451b3f74</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation</span></td><td><code>a4a99e4dcf919d89</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.Appender</span></td><td><code>dc07d3d822bdcefd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.ImplementationDelegate.Compiled.ForStaticCall</span></td><td><code>4e320221c5c177b6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.ImplementationDelegate.ForStaticMethod</span></td><td><code>dd54ea94cb4466d5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.WithCustomProperties</span></td><td><code>5f090acf995bc833</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall</span></td><td><code>611355edd9b41de2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender</span></td><td><code>bc8a17175afd42bf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler</span></td><td><code>32d5e0e8182a3358</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler.1</span></td><td><code>0262af83a3a8b2c1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler.2</span></td><td><code>ee7147093f933eea</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.1</span></td><td><code>2fabe3e2246d458e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Default</span></td><td><code>5e5b5a601807bb0c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.ForTypeAnnotations</span></td><td><code>9c69d7ba808e83bf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnField</span></td><td><code>edb1e187f577e773</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnMethod</span></td><td><code>696208e270a3f019</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnMethodParameter</span></td><td><code>f9f5e949cd061dd0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnType</span></td><td><code>6ab7dc033ee53862</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationRetention</span></td><td><code>da4f57f00f2339fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default</span></td><td><code>c3f974ecaffb54e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default.1</span></td><td><code>16794e96c48a9eb1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default.2</span></td><td><code>e61de6f9507d0593</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.FieldAttributeAppender.ForInstrumentedField</span></td><td><code>c640ee703ef26e72</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.Compound</span></td><td><code>dac3bd643b572705</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.Factory.Compound</span></td><td><code>76745fca04070e30</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod</span></td><td><code>a824f27ba759e23b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod.1</span></td><td><code>496e9baf72f72b4d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod.2</span></td><td><code>96f514167b7d0a48</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.NoOp</span></td><td><code>b52b89cf16c54ff9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.TypeAttributeAppender.ForInstrumentedType</span></td><td><code>174b3e561dfe2a50</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.TypeAttributeAppender.ForInstrumentedType.Differentiating</span></td><td><code>87928a430c8985ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.AuxiliaryType</span></td><td><code>6a52cb65ebc696ad</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.AuxiliaryType.NamingStrategy.SuffixingRandom</span></td><td><code>a173a333a763c063</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy</span></td><td><code>83f89e06c97f0237</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.AssignableSignatureCall</span></td><td><code>c40a6df584d6950a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.ConstructorCall</span></td><td><code>5b517e0b210f1158</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.ConstructorCall.Appender</span></td><td><code>5bd8ad0594ac3af1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.MethodCall</span></td><td><code>5e100136005916ca</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.MethodCall.Appender</span></td><td><code>ce7052391779cdf9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.PrecomputedMethodGraph</span></td><td><code>27a53ff891975b35</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ArgumentTypeResolver</span></td><td><code>11f8505cde4d19ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ArgumentTypeResolver.ParameterIndexToken</span></td><td><code>30ba25a897cfab59</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.DeclaringTypeResolver</span></td><td><code>dc04124901f1b333</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.1</span></td><td><code>e8e903661a7e1247</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver</span></td><td><code>36f5bfa2a412ee72</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver.Compound</span></td><td><code>4cf7d1fa48e6cd60</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver.Resolution</span></td><td><code>7d702b0ecc9c891b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.BindingResolver.Default</span></td><td><code>c33dc6b307529852</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Builder</span></td><td><code>f68e89f0719ade2e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Builder.Build</span></td><td><code>33f84e8df9c49416</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Illegal</span></td><td><code>4802915ba226f6c2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodInvoker.Simple</span></td><td><code>8afbcd842db3e720</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Anonymous</span></td><td><code>a962db035644cb83</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Illegal</span></td><td><code>eacaa52a8e4dde34</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Unique</span></td><td><code>dd8a495565da1d64</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.Processor</span></td><td><code>ab3647d9a0455d24</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default</span></td><td><code>c7d75b957a2f27ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default.1</span></td><td><code>4ec0d44d8c3eceb0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default.2</span></td><td><code>1ad724fd05690ddc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodNameEqualityResolver</span></td><td><code>0c639151a5005f3c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ParameterLengthResolver</span></td><td><code>f4653916b8323a8e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.AllArguments.Assignment</span></td><td><code>5ff910d53a6f2d0f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.AllArguments.Binder</span></td><td><code>758af7bb09f652cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.Binder</span></td><td><code>dc92b4735795f877</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic</span></td><td><code>99796f5e37a26565</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic.1</span></td><td><code>367024ef2f1388a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic.2</span></td><td><code>38ba3faff880e1c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.BindingPriority.Resolver</span></td><td><code>04a1eb2c2d2ecfac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Default.Binder</span></td><td><code>3d4b610c3e192abc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultCall.Binder</span></td><td><code>d05b63f0a6321461</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultCallHandle.Binder</span></td><td><code>13bdeb27076fd371</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultMethod.Binder</span></td><td><code>e4e08f789ce159e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultMethodHandle.Binder</span></td><td><code>190a13afd14a1a6d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DynamicConstant.Binder</span></td><td><code>547b45ae9714e463</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Empty.Binder</span></td><td><code>d3025af78526455a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldGetterHandle.Binder</span></td><td><code>17342fbbde9d2477</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldGetterHandle.Binder.Delegate</span></td><td><code>92ca8f7c9f3a40e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldSetterHandle.Binder</span></td><td><code>e2bdded87bfab797</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldSetterHandle.Binder.Delegate</span></td><td><code>2e2db5fe8cbd8444</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldValue.Binder</span></td><td><code>4f15d3f13eccee26</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldValue.Binder.Delegate</span></td><td><code>b9cd319375aeba70</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Handle.Binder</span></td><td><code>390591101c305db1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.IgnoreForBinding.Verifier</span></td><td><code>b6bbe4a67f2ce769</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Origin.Binder</span></td><td><code>63d345bc80320364</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.RuntimeType.Verifier</span></td><td><code>0eda7ebdfbc4de97</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.StubValue.Binder</span></td><td><code>0fcc840e92bf2eff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Super.Binder</span></td><td><code>f816bc17a41fc240</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperCall.Binder</span></td><td><code>e75122d32ab041df</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperCallHandle.Binder</span></td><td><code>be3a9057258fb61c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperMethod.Binder</span></td><td><code>acdd28af315c12f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperMethodHandle.Binder</span></td><td><code>7db979dc52744f1f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder</span></td><td><code>007d937d2ad8614a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor</span></td><td><code>98ee5d9e2d9a299b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor.Handler.Bound</span></td><td><code>22d197c23907be1d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor.Handler.Unbound</span></td><td><code>9d58199e821ad9fa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder</span></td><td><code>ef86cc915aa18bbf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFieldBinding</span></td><td><code>f96ce20b4cd9ae5d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFixedValue</span></td><td><code>339866efba024bf5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFixedValue.OfConstant</span></td><td><code>2a9385611e3f5888</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.Record</span></td><td><code>6ed32a75bea12174</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.This.Binder</span></td><td><code>eaf168e8e2de8dac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Compound</span></td><td><code>36fdf9633edde774</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Simple</span></td><td><code>e938f03cb7fc36b5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Size</span></td><td><code>6c073455b0742efa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication</span></td><td><code>6c1bd6edfcbacd8f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.1</span></td><td><code>5e77ff7af88e5e2b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.2</span></td><td><code>4fa72881088b7d9d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.3</span></td><td><code>22711ebeda82835f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal</span></td><td><code>20e0c2619ab9e596</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal.1</span></td><td><code>ec81593288755b57</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal.2</span></td><td><code>7bafc790d8ad6b0a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.AbstractBase</span></td><td><code>31ada1cf9b3e1f09</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Compound</span></td><td><code>4d0ee6a3594d3abd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Illegal</span></td><td><code>d208c868604ff6a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Size</span></td><td><code>9e6fc170da126fed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Trivial</span></td><td><code>704241e2b0e40c6e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackSize</span></td><td><code>4336788f1a965d2e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackSize.1</span></td><td><code>96b2506c3d21bf91</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.TypeCreation</span></td><td><code>197a19a5e6570c14</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.Assigner</span></td><td><code>a12889e04d303449</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.Assigner.Typing</span></td><td><code>5388b1bfde68c6c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.TypeCasting</span></td><td><code>94120c4c8cfd03f8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate</span></td><td><code>2247e86fa6ac6dbc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate.BoxingStackManipulation</span></td><td><code>b1150ae5e800b606</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveTypeAwareAssigner</span></td><td><code>cda788b56e855a02</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveUnboxingDelegate</span></td><td><code>b288a1833178dbcf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveUnboxingDelegate.ImplicitlyTypedUnboxingResponsible</span></td><td><code>fe27de58ed78c6b7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate</span></td><td><code>15d4895de92b4326</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate.WideningStackManipulation</span></td><td><code>b95f03864d242799</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.VoidAwareAssigner</span></td><td><code>eb758c0eaff4f960</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.reference.GenericTypeAwareAssigner</span></td><td><code>b45b3ebe7424172e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.reference.ReferenceTypeAwareAssigner</span></td><td><code>7928b92c7844ad95</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory</span></td><td><code>2a2250e0a308dabf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayCreator</span></td><td><code>55f358a6fd1fba94</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayCreator.ForReferenceType</span></td><td><code>46c017724b6b47f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayStackManipulation</span></td><td><code>c7ca7f485aee94d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.ClassConstant</span></td><td><code>84d3d231c511a9e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.ClassConstant.ForReferenceType</span></td><td><code>9e6b7175c0b99ca6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.DefaultValue</span></td><td><code>e6636f8b6803b575</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.DoubleConstant</span></td><td><code>4605c2533c4f5ada</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.FloatConstant</span></td><td><code>a56d418e26b00881</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.IntegerConstant</span></td><td><code>cc44c84f8b41799b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.IntegerConstant.SingleBytePush</span></td><td><code>4dcbd3e7a7cd0de0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.LongConstant</span></td><td><code>472b65a54ff6a910</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant</span></td><td><code>2af3bf9709ff88bc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant.CachedMethod</span></td><td><code>120667b652f8b2ad</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant.ForMethod</span></td><td><code>6487c36db906419f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.NullConstant</span></td><td><code>ce7ac6225f44f48a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.TextConstant</span></td><td><code>6c2a6544c010c696</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess</span></td><td><code>0c427922241a1fc2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher</span></td><td><code>3409f6d79dca6a70</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.AbstractFieldInstruction</span></td><td><code>68899123d8401287</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.FieldGetInstruction</span></td><td><code>e9ffb22f539a4501</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.FieldPutInstruction</span></td><td><code>19f58898b800e6f7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodInvocation</span></td><td><code>f6ad313aeb1817d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodInvocation.Invocation</span></td><td><code>fa4fc5234c9a7c93</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodReturn</span></td><td><code>031a5f07b7745997</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess</span></td><td><code>2442be9ad3856ab6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.MethodLoading</span></td><td><code>4c94266b0a306562</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.MethodLoading.TypeCastingHandler.NoOp</span></td><td><code>fce3bb47777272e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.OffsetLoading</span></td><td><code>c68c431573d3f1a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.OffsetWriting</span></td><td><code>428ad03e94bc1d66</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.AnnotationVisitor</span></td><td><code>823759e238bb495b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.AnnotationWriter</span></td><td><code>59e14608f0f0fc16</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Attribute</span></td><td><code>e6480519ef45eaba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ByteVector</span></td><td><code>29f90958ccc2d657</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassReader</span></td><td><code>7c1a216e338347c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassVisitor</span></td><td><code>1753f680b0943b55</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassWriter</span></td><td><code>9aacb0d7c169551b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ConstantDynamic</span></td><td><code>ea32b72ebf5c88ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Context</span></td><td><code>a881f26b77892c9d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.FieldVisitor</span></td><td><code>2fefa241e92a2948</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.FieldWriter</span></td><td><code>7b8af1d3e89c08fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Handle</span></td><td><code>f00028b1416f621c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Handler</span></td><td><code>357ee9a4f87e5091</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Label</span></td><td><code>c329ef00234aa4ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.MethodVisitor</span></td><td><code>91abf2ef44da98a7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.MethodWriter</span></td><td><code>f98aa1935839115a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Opcodes</span></td><td><code>85defa2a27116c7f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Symbol</span></td><td><code>09ab9f266ba03e77</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.SymbolTable</span></td><td><code>a234d10951b906bb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.SymbolTable.Entry</span></td><td><code>f06a931baef45238</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Type</span></td><td><code>76fc57d12696f74f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.TypeReference</span></td><td><code>0bfc56de38a7304f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.signature.SignatureVisitor</span></td><td><code>2a359c79b449cd9d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.signature.SignatureWriter</span></td><td><code>628941f852b053ca</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.AnnotationTypeMatcher</span></td><td><code>6f4a3b90208f0ec3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.BooleanMatcher</span></td><td><code>9209f695fbdc9526</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionErasureMatcher</span></td><td><code>e3ac7764b945369a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionItemMatcher</span></td><td><code>1424fe72e0998e47</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionOneToOneMatcher</span></td><td><code>121fe499dd94549c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionSizeMatcher</span></td><td><code>f8080735551b5869</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DeclaringAnnotationMatcher</span></td><td><code>de87dd7e2883e9aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DeclaringTypeMatcher</span></td><td><code>94491a21a3a6198c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DescriptorMatcher</span></td><td><code>8ccbf89ae42c9c79</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.AbstractBase</span></td><td><code>6e29ac5d43cf6bf5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.Conjunction</span></td><td><code>0c2d173352f518aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.Disjunction</span></td><td><code>f2b0bfd4258f9323</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.ForNonNullValues</span></td><td><code>b442c91a882c9145</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatchers</span></td><td><code>229439fc61b9d724</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.EqualityMatcher</span></td><td><code>65263674c3290275</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ErasureMatcher</span></td><td><code>5b951c67564a7bbf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.FailSafeMatcher</span></td><td><code>16bb480ee9bc8e47</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.FilterableList.AbstractBase</span></td><td><code>cb407e29a62800ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.FilterableList.Empty</span></td><td><code>008aecb1de0a03fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.Disjunction</span></td><td><code>b3238bc9859c2c6c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForFieldToken</span></td><td><code>494f840fb29b826b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForFieldToken.ResolvedMatcher</span></td><td><code>c7f93ec3f36db445</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForMethodToken</span></td><td><code>6a133bef32427d76</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForMethodToken.ResolvedMatcher</span></td><td><code>4f4db49515ba05ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.Resolved</span></td><td><code>1d0baa61e9c597f8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParameterTypeMatcher</span></td><td><code>ecc479943c35ad37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParameterTypesMatcher</span></td><td><code>35a1fbf9e120aea8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParametersMatcher</span></td><td><code>8ab3379e24c8d19e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodReturnTypeMatcher</span></td><td><code>7befd3ad928ab6cc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher</span></td><td><code>600d8d63f4cc2251</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort</span></td><td><code>87af87837374271b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.1</span></td><td><code>04a56e4f4f82d5c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.2</span></td><td><code>a13399cf408b62c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.3</span></td><td><code>6a11f7e01098dfb5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.4</span></td><td><code>1e8c22b2e17c5f88</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.5</span></td><td><code>aae69164dd78b1e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ModifierMatcher</span></td><td><code>1f940a6dd9fa9613</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ModifierMatcher.Mode</span></td><td><code>b59c67438c4008d8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.NameMatcher</span></td><td><code>c95f2d97c50d769e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.NegatingMatcher</span></td><td><code>e10261097b62acbb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.SignatureTokenMatcher</span></td><td><code>2b22b0f9e11d2a2b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher</span></td><td><code>398d01f869388e91</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode</span></td><td><code>6f8b4d3695faa058</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.1</span></td><td><code>015bef3b6828cdac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.2</span></td><td><code>8eeeb4556b9485c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.3</span></td><td><code>f1c175ea33668dcb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.4</span></td><td><code>84a59a498fb10fed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.5</span></td><td><code>4ca9c62936b66a24</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.6</span></td><td><code>f993707f30c5fce2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.7</span></td><td><code>e0ba3c2aa14bde78</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.8</span></td><td><code>4ff86085d0aa4ddf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.9</span></td><td><code>1dcf4a6fe509c5b5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.SuperTypeMatcher</span></td><td><code>af5ab86fce6ba126</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.TypeSortMatcher</span></td><td><code>7fa32c06737e7231</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.VisibilityMatcher</span></td><td><code>e1f91ccfaffe7652</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.AbstractBase</span></td><td><code>ebf3f44b769f4faf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.AbstractBase.Hierarchical</span></td><td><code>8051a701eb4b0eed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.CacheProvider.NoOp</span></td><td><code>5fe0b4fee828d480</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.CacheProvider.Simple</span></td><td><code>5840a865f0dcfb51</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.ClassLoading</span></td><td><code>4ff35dae9556b998</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Default</span></td><td><code>7aafc1f71b81e173</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Default.ReaderMode</span></td><td><code>a033f5a27d0fa2d6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Empty</span></td><td><code>256686863a3e855f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Explicit</span></td><td><code>58709ce964584fa6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader</span></td><td><code>8a59b649de2583f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default</span></td><td><code>fa0b1b24f69493ab</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default.1</span></td><td><code>03c829950d692f4b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default.2</span></td><td><code>ff7ba2ccbe1277cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default.3</span></td><td><code>d8e2a9d1378063fa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default.4</span></td><td><code>b200bb40f16587c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.Factory.Default.5</span></td><td><code>f9eab20e73a925e7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassReader.ForAsm</span></td><td><code>c3d16f9e1e03618e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default</span></td><td><code>df7a47693cf75e36</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.1</span></td><td><code>d17bf1b9989584cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.2</span></td><td><code>3ebcd096754fad75</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.3</span></td><td><code>6d6ee87b0257e85e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.4</span></td><td><code>582d01970af50976</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.5</span></td><td><code>af553c430b6af86a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.Factory.Default.EmptyAsmClassReader</span></td><td><code>481bb30e4232c02d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.ForAsm</span></td><td><code>94e2175d9a1aaf7a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.AsmClassWriter.FrameComputingClassWriter</span></td><td><code>943f69745cdb7621</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.CompoundList</span></td><td><code>41fe1faec9b96005</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.ConstantValue.Simple</span></td><td><code>5f7232051686a271</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.ConstructorComparator</span></td><td><code>3566d64bbe3006a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.FieldComparator</span></td><td><code>5dff49d0b60b3a07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.GraalImageCode</span></td><td><code>20c183e97cdf38cc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.Invoker.Dispatcher</span></td><td><code>b9b5f67cf01bb049</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaConstant.Simple</span></td><td><code>d18c769228ec6798</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaConstant.Simple.OfTrivialValue</span></td><td><code>870135d683945e69</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaConstant.Simple.OfTrivialValue.ForString</span></td><td><code>11ffe7957b103e25</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaModule</span></td><td><code>fb89d312129d6105</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaType</span></td><td><code>4ea4e7db3d74934a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaType.LatentTypeWithSimpleName</span></td><td><code>c99024b8d6d1bb99</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.MethodComparator</span></td><td><code>2a643ad1fb57d7e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.OpenedClassReader</span></td><td><code>3495a559539ff5e7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.RandomString</span></td><td><code>a0583349bb66a97c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.StreamDrainer</span></td><td><code>e95aa53cbcb417c6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher</span></td><td><code>619d3930cae44455</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForContainerCreation</span></td><td><code>9f5631d45e9601e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForInstanceCheck</span></td><td><code>ec7e2f5ae4036bb1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForNonStaticMethod</span></td><td><code>3ff776c0c7a05881</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForStaticMethod</span></td><td><code>faa6cd7f5e4cbd85</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader</span></td><td><code>e55e160d8d2ebd92</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader.Resolver.CreationAction</span></td><td><code>862b139a62f264a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader.Resolver.ForModuleSystem</span></td><td><code>1a2ee856ca3b45b6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.InvokerCreationAction</span></td><td><code>f5b3814ad34536fc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.ProxiedInvocationHandler</span></td><td><code>f1e193453808acbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.privilege.GetSystemPropertyAction</span></td><td><code>67f0615a1253ad61</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.ExceptionTableSensitiveMethodVisitor</span></td><td><code>a6c239974eefe586</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.LineNumberPrependingMethodVisitor</span></td><td><code>56aead9b55055305</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.MetadataAwareClassVisitor</span></td><td><code>0c557b09efdf9fd6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.StackAwareMethodVisitor</span></td><td><code>3dd1c2239bb0bf19</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory</span></td><td><code>5c9b6286a0ecaeeb</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory.1</span></td><td><code>35cd3441e691f91d</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory.2</span></td><td><code>f1244e6e80ab4e4c</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory.3</span></td><td><code>08e35df1f60483aa</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory.4</span></td><td><code>fb4611c54b1bc610</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.LogFactory.6</span></td><td><code>367c055e3172a33e</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.Jdk14Logger</span></td><td><code>703281cb965271f1</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.LogFactoryImpl</span></td><td><code>19310bec008ee83b</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.LogFactoryImpl.1</span></td><td><code>18bb4e5d59b0e5ad</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.LogFactoryImpl.2</span></td><td><code>1a303d46767b848d</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.WeakHashtable</span></td><td><code>bda06549392c232d</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.WeakHashtable.Referenced</span></td><td><code>7e6bd0a967376754</code></td></tr><tr><td><span class="el_class">org.apache.commons.logging.impl.WeakHashtable.WeakKey</span></td><td><code>3c62431e0d7eba54</code></td></tr><tr><td><span class="el_class">org.apache.http.Consts</span></td><td><code>3cf82da40bfcf276</code></td></tr><tr><td><span class="el_class">org.apache.http.HttpVersion</span></td><td><code>27b7102d52089bab</code></td></tr><tr><td><span class="el_class">org.apache.http.ProtocolVersion</span></td><td><code>bceeac6dae5f00bd</code></td></tr><tr><td><span class="el_class">org.apache.http.client.config.RequestConfig</span></td><td><code>883ae8e07ee79b59</code></td></tr><tr><td><span class="el_class">org.apache.http.client.config.RequestConfig.Builder</span></td><td><code>e2ea9b5a736b074d</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.RequestAddCookies</span></td><td><code>2ab466012da911d5</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.RequestAuthCache</span></td><td><code>5bdc16f71e3cae1e</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.RequestClientConnControl</span></td><td><code>a813f4d5e2903517</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.RequestDefaultHeaders</span></td><td><code>d388691f2eed6ebb</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.RequestExpectContinue</span></td><td><code>309053b95cfb0a56</code></td></tr><tr><td><span class="el_class">org.apache.http.client.protocol.ResponseProcessCookies</span></td><td><code>74c27f70347c2684</code></td></tr><tr><td><span class="el_class">org.apache.http.config.Registry</span></td><td><code>8f748b2a3ddd8ddb</code></td></tr><tr><td><span class="el_class">org.apache.http.config.RegistryBuilder</span></td><td><code>befaf5bc5e0c72e2</code></td></tr><tr><td><span class="el_class">org.apache.http.config.SocketConfig</span></td><td><code>3ae82f9bf8ba4a55</code></td></tr><tr><td><span class="el_class">org.apache.http.config.SocketConfig.Builder</span></td><td><code>62c63a0cb94235bb</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.routing.BasicRouteDirector</span></td><td><code>c360b318c9f2a884</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.socket.PlainConnectionSocketFactory</span></td><td><code>9a5c46331a2190be</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.AbstractVerifier</span></td><td><code>d0eb1d01925b30f0</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.AllowAllHostnameVerifier</span></td><td><code>7e32725d6d902f39</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.BrowserCompatHostnameVerifier</span></td><td><code>aa28b4e17fc10d36</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.DefaultHostnameVerifier</span></td><td><code>b79964ea57ba2d5e</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.SSLConnectionSocketFactory</span></td><td><code>da1900cac85d4f17</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.ssl.StrictHostnameVerifier</span></td><td><code>3e71f6c485ba5a08</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.util.DomainType</span></td><td><code>e287ffb4131a0d2b</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.util.PublicSuffixList</span></td><td><code>4dd7f1af80880a70</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.util.PublicSuffixListParser</span></td><td><code>7488dd5b6153347e</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.util.PublicSuffixMatcher</span></td><td><code>302eab88577ac15b</code></td></tr><tr><td><span class="el_class">org.apache.http.conn.util.PublicSuffixMatcherLoader</span></td><td><code>22b8d02d02da223c</code></td></tr><tr><td><span class="el_class">org.apache.http.cookie.CookieIdentityComparator</span></td><td><code>5f11b45373aa08c1</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.DefaultConnectionReuseStrategy</span></td><td><code>06771594d51f7893</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.DefaultHttpResponseFactory</span></td><td><code>0f3d46e19341ed21</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.EnglishReasonPhraseCatalog</span></td><td><code>1f8341686d9c338d</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.BasicSchemeFactory</span></td><td><code>4a2cd72a26419fbd</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.DigestSchemeFactory</span></td><td><code>7f0a87385fe29b37</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.HttpAuthenticator</span></td><td><code>96c811954ec19bf5</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.KerberosSchemeFactory</span></td><td><code>cc986052254dcfd0</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.NTLMSchemeFactory</span></td><td><code>7ce44533a4e8764c</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.auth.SPNegoSchemeFactory</span></td><td><code>2bc9ae1bc6d89ee9</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.AuthenticationStrategyImpl</span></td><td><code>d82018b1d706d291</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.BasicCookieStore</span></td><td><code>da4b2d6f43faed8d</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.BasicCredentialsProvider</span></td><td><code>6e475cf93ec1f5b1</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.CloseableHttpClient</span></td><td><code>f4aafdbf4b552ab9</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.CookieSpecRegistries</span></td><td><code>0f6c33d629106dac</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.DefaultClientConnectionReuseStrategy</span></td><td><code>2eaac97b79658c88</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.DefaultUserTokenHandler</span></td><td><code>6c1d41e5ea20e395</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.HttpClientBuilder</span></td><td><code>cdce1ac974c15e4a</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.HttpClientBuilder.2</span></td><td><code>c0a0fecaf547acaa</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.HttpClients</span></td><td><code>92627c78c773cfa0</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.InternalHttpClient</span></td><td><code>9b6ae5d30b0c98e5</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.ProxyAuthenticationStrategy</span></td><td><code>75906edf245624b2</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.client.TargetAuthenticationStrategy</span></td><td><code>fbe1c18d4d2e11a2</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.CPool</span></td><td><code>9d7f574eb6265812</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.DefaultHttpClientConnectionOperator</span></td><td><code>47b06d6d87460962</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.DefaultHttpResponseParserFactory</span></td><td><code>2648ce5c15387a21</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.DefaultRoutePlanner</span></td><td><code>785570d34f1c6794</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.DefaultSchemePortResolver</span></td><td><code>e8df82807fa7d6ef</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.ManagedHttpClientConnectionFactory</span></td><td><code>d3a2556d095706e9</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.PoolingHttpClientConnectionManager</span></td><td><code>9f8a0da912cef458</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.PoolingHttpClientConnectionManager.2</span></td><td><code>60868c9cc1afed90</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.PoolingHttpClientConnectionManager.ConfigData</span></td><td><code>fbd5f662372f25fe</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.PoolingHttpClientConnectionManager.InternalConnectionFactory</span></td><td><code>0cc436dd64622e56</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.conn.SystemDefaultDnsResolver</span></td><td><code>16232f39524cf361</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.DefaultCookieSpecProvider</span></td><td><code>5450fcb0f7283148</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.DefaultCookieSpecProvider.CompatibilityLevel</span></td><td><code>2f23c05f6b74d5f2</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.IgnoreSpecProvider</span></td><td><code>90f12932999c4dc6</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.NetscapeDraftSpecProvider</span></td><td><code>d2abd51a1fb938a5</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.RFC6265CookieSpecProvider</span></td><td><code>5b41842dabd1f827</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.cookie.RFC6265CookieSpecProvider.CompatibilityLevel</span></td><td><code>437eaa6e23875ef8</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.entity.LaxContentLengthStrategy</span></td><td><code>4bcc7d2ec2930677</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.entity.StrictContentLengthStrategy</span></td><td><code>27b096a028c4f58d</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.execchain.MainClientExec</span></td><td><code>449f41c49520fccb</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.execchain.ProtocolExec</span></td><td><code>74c09f98c0802df2</code></td></tr><tr><td><span class="el_class">org.apache.http.impl.io.DefaultHttpRequestWriterFactory</span></td><td><code>31da474bedfe5595</code></td></tr><tr><td><span class="el_class">org.apache.http.message.BasicLineFormatter</span></td><td><code>7227c8d6fbf0d68c</code></td></tr><tr><td><span class="el_class">org.apache.http.message.BasicLineParser</span></td><td><code>646d3d3506ab13c4</code></td></tr><tr><td><span class="el_class">org.apache.http.pool.AbstractConnPool</span></td><td><code>78b9e8f1e327cff5</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.ChainBuilder</span></td><td><code>55c237a8d0a7c059</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.HttpProcessorBuilder</span></td><td><code>e4a201d287f99e90</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.HttpRequestExecutor</span></td><td><code>a40acd8ff5fa682a</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.ImmutableHttpProcessor</span></td><td><code>46b93e9c4a5ad5f8</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.RequestContent</span></td><td><code>3e26e6cd49d7fc5c</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.RequestTargetHost</span></td><td><code>d8ea9b4a0817447a</code></td></tr><tr><td><span class="el_class">org.apache.http.protocol.RequestUserAgent</span></td><td><code>5e29e5b0e1552f10</code></td></tr><tr><td><span class="el_class">org.apache.http.util.Args</span></td><td><code>4305e3ff5d359103</code></td></tr><tr><td><span class="el_class">org.apache.http.util.TextUtils</span></td><td><code>89b93c07951d477e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.Level</span></td><td><code>931df9fffd13f106</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.LogManager</span></td><td><code>0f59df68033e9c6f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.MarkerManager</span></td><td><code>11b546636aaa63c3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.MarkerManager.Log4jMarker</span></td><td><code>47944b2ed6075c8e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.ThreadContext</span></td><td><code>3ace16e5e61724d5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.ThreadContext.EmptyThreadContextStack</span></td><td><code>b1bb0634e00d5324</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.AbstractLifeCycle</span></td><td><code>4a58edc7839a2101</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Appender</span></td><td><code>557c71036724f367</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LifeCycle.State</span></td><td><code>9cbfc1c6e8933760</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Logger</span></td><td><code>6eba9cc12bd9278f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Logger.PrivateConfig</span></td><td><code>7b115935bf13816a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LoggerContext</span></td><td><code>ce92e8ad7d1b6a7c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LoggerContext.1</span></td><td><code>61218e62b15c9283</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Version</span></td><td><code>15ac13f915374f41</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractAppender</span></td><td><code>f4b0b4a80299e881</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractAppender.Builder</span></td><td><code>1f1d6b65506b3624</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractManager</span></td><td><code>1765196ff610f169</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender</span></td><td><code>37ad3d4f25c6ed11</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.Builder</span></td><td><code>2284348f0fdaccae</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender</span></td><td><code>f6d30d2e49f2ee4c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Builder</span></td><td><code>0cdc137760fc23e4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.ConsoleManagerFactory</span></td><td><code>13211ce25fb378ff</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.FactoryData</span></td><td><code>1045a9f9e562cb9d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target</span></td><td><code>9d7cec7e7c56ee91</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target.1</span></td><td><code>fa31c0aa6a429573</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target.2</span></td><td><code>4cac719fc93e9e12</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.DefaultErrorHandler</span></td><td><code>ac43bc36cd775348</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.OutputStreamManager</span></td><td><code>9c94c036dc8a3cb2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy</span></td><td><code>c4d7e4cfba12c4e8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy.1</span></td><td><code>eb70dccb31d54d63</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy.2</span></td><td><code>7360500ad82b76f6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AbstractConfiguration</span></td><td><code>de942aced95333a8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppenderControl</span></td><td><code>2bc71d1f8e4bb2ba</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppenderControlArraySet</span></td><td><code>08eed8aa3c165162</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppenderRef</span></td><td><code>459880ba180f97e9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppendersPlugin</span></td><td><code>fad5dd1b67717b81</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy</span></td><td><code>f1c10a071c4b02d3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationFactory</span></td><td><code>619f9a533a599b9f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationFactory.Factory</span></td><td><code>fe633a431762f1b2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationScheduler</span></td><td><code>1b6781e32c572e82</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationSource</span></td><td><code>16424e0ae9fdf9dd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultAdvertiser</span></td><td><code>07faa8c7fd21391f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultConfiguration</span></td><td><code>55d57adf720da5ed</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultLayout</span></td><td><code>5572e8fbe7592599</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultReliabilityStrategy</span></td><td><code>1a139964ed367c5c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig</span></td><td><code>15f127d562b89d56</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.Builder</span></td><td><code>555ac51db870d939</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.LevelAndRefs</span></td><td><code>2099d630777678f3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.LoggerConfigPredicate</span></td><td><code>dcd8d98832f9acf6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.LoggerConfigPredicate.1</span></td><td><code>797f781a1bf1ac61</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.LoggerConfigPredicate.2</span></td><td><code>ace73575f6776401</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.LoggerConfigPredicate.3</span></td><td><code>7dd84fbfba44e36e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.RootLogger</span></td><td><code>8f12cf21415833c4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.RootLogger.Builder</span></td><td><code>2d12acf93adc65ca</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Loggers</span></td><td><code>c8a7997331251d55</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggersPlugin</span></td><td><code>e785576ec1717bea</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Node</span></td><td><code>290cfdc0878668fd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.NullConfiguration</span></td><td><code>7bd3cc265969ff51</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.OrderComparator</span></td><td><code>93b80d16945d2745</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Property</span></td><td><code>ae59f50e1daf7586</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ReliabilityStrategyFactory</span></td><td><code>bad12f7133e6c776</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory</span></td><td><code>53e68b18d786eb59</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.json.JsonConfigurationFactory</span></td><td><code>386e1b25a3474fca</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.EnumConverter</span></td><td><code>8ace284644522901</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverterRegistry</span></td><td><code>6c433cdb117cfc71</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters</span></td><td><code>d3305ad31910da63</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BigDecimalConverter</span></td><td><code>e34b64fa8e9f8c17</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BigIntegerConverter</span></td><td><code>8994a675b66258c7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BooleanConverter</span></td><td><code>b9af3a86afdca27b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ByteArrayConverter</span></td><td><code>4616c4a13affaaa0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ByteConverter</span></td><td><code>c5738f08c08526c4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharArrayConverter</span></td><td><code>49fba74fe4d9daba</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharacterConverter</span></td><td><code>84750dc0e9b3ae7c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharsetConverter</span></td><td><code>1646f3931b4e39d5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ClassConverter</span></td><td><code>39ee6ce19399d7bd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CronExpressionConverter</span></td><td><code>019cd0f39b89c24e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.DoubleConverter</span></td><td><code>c8f2c8ddd4cb1dfd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.DurationConverter</span></td><td><code>c248ae94c5d865ad</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.FileConverter</span></td><td><code>318342daeed77472</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.FloatConverter</span></td><td><code>90350f44301ead03</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.InetAddressConverter</span></td><td><code>6b0ad4b1910915c4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.IntegerConverter</span></td><td><code>5396a344f8af2897</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.LevelConverter</span></td><td><code>687bdf7276f55e97</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.LongConverter</span></td><td><code>b6efb744da2c66f3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.PathConverter</span></td><td><code>10d0e9797453e129</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.PatternConverter</span></td><td><code>f53add89609fc1fb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.SecurityProviderConverter</span></td><td><code>1933c961eee55325</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ShortConverter</span></td><td><code>409ac9f005cb97e7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.StringConverter</span></td><td><code>683f32cbef02940b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UriConverter</span></td><td><code>3f303f0201f4ceb5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UrlConverter</span></td><td><code>53fba035f7deade5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UuidConverter</span></td><td><code>33e828083b4b4027</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.processor.PluginCache</span></td><td><code>86df9597e851d48f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.processor.PluginEntry</span></td><td><code>87e280306f71b42f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginBuilder</span></td><td><code>0ac2b7cce613e350</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginManager</span></td><td><code>dc3a7be71f448d9d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginRegistry</span></td><td><code>3f6939e66ad26ed5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginType</span></td><td><code>97d0f069df1c9e5f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginUtil</span></td><td><code>3979c6c96facf6ef</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.validation.ConstraintValidators</span></td><td><code>e7244981f70838a7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator</span></td><td><code>8b2d4fd8050d2aff</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.AbstractPluginVisitor</span></td><td><code>bf4c1a8533e826e9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor</span></td><td><code>c78ad0b71073020b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor</span></td><td><code>2ec63d51726e1827</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor</span></td><td><code>1e0eae69e1645e74</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor</span></td><td><code>ed1cfbd56d268259</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitors</span></td><td><code>f679534f19c5c183</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory</span></td><td><code>0850da00471d2708</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.status.StatusConfiguration</span></td><td><code>dc559db6d7e7d67f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.xml.XmlConfiguration</span></td><td><code>27657472cb97e864</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory</span></td><td><code>568b2130a8a4ad7b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory</span></td><td><code>0e62bac5b54be9d6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.filter.AbstractFilterable</span></td><td><code>40eb34632fdacb81</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.filter.AbstractFilterable.Builder</span></td><td><code>a6e40323037b6030</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ContextDataFactory</span></td><td><code>32ba51a83ef76280</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ContextDataInjectorFactory</span></td><td><code>299322a21d083e32</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.JdkMapAdapterStringMap</span></td><td><code>d6589f9dc0260d93</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jContextFactory</span></td><td><code>2d51b8da1c9da0fb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jLogEvent</span></td><td><code>e3ee37b6932c549f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jProvider</span></td><td><code>2abae101923f5e9b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.MutableLogEvent</span></td><td><code>bb47933b63e48468</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ReusableLogEventFactory</span></td><td><code>a3bfcb05b5838ed0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataInjector</span></td><td><code>b398f422cafa98b9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataInjector.AbstractContextDataInjector</span></td><td><code>04c683402cb1e8bc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataInjector.ForDefaultThreadContextMap</span></td><td><code>f0434a751ae50eec</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataProvider</span></td><td><code>fdfc555804f50eb3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.internal.JmxUtil</span></td><td><code>e095f1098555d515</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.ByteBufferDestinationHelper</span></td><td><code>58e67480c49d9946</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.TextEncoderHelper</span></td><td><code>d485d4b12c71775d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.AbstractConfigurationAwareLookup</span></td><td><code>722110a4ac296631</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.AbstractLookup</span></td><td><code>92ecf4ecbf28efc6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ConfigurationStrSubstitutor</span></td><td><code>2afd63deca12779d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ContextMapLookup</span></td><td><code>78179cacea1d7409</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.DateLookup</span></td><td><code>3ae19541a6febc2d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.EnvironmentLookup</span></td><td><code>c1beb2594b2c1ec6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.EventLookup</span></td><td><code>a884ead0e6a3b95d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.Interpolator</span></td><td><code>03509e19ab6e782d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.JavaLookup</span></td><td><code>ae0114e2c031ed45</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup</span></td><td><code>d3124bad6777921f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.Log4jLookup</span></td><td><code>e251d9b67df314c9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.LowerLookup</span></td><td><code>25b4994346d9b2f8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MainMapLookup</span></td><td><code>694655276c31a221</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MapLookup</span></td><td><code>861dc5ef7f9eba17</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MarkerLookup</span></td><td><code>0e6cfb87a0c7358e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.PropertiesLookup</span></td><td><code>f67aa3f01fef3433</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ResourceBundleLookup</span></td><td><code>dff3503cd4fd69fa</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.RuntimeStrSubstitutor</span></td><td><code>590e1a41e3dea09c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher</span></td><td><code>1efbae8b860a175f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.CharMatcher</span></td><td><code>8ee16bc7eefdf569</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.CharSetMatcher</span></td><td><code>b965ec92a009031a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.NoMatcher</span></td><td><code>a92cace2c0d9c44d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.StringMatcher</span></td><td><code>977cacda8d9639a8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.TrimMatcher</span></td><td><code>7ac4238f6f5fd9f5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrSubstitutor</span></td><td><code>a76f6e3acd82ceba</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StructuredDataLookup</span></td><td><code>a648dbfc33b2a3cb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.SystemPropertiesLookup</span></td><td><code>ea304698f3e20ff3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.UpperLookup</span></td><td><code>400c3db1f9e8f866</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.JndiManager</span></td><td><code>e0825bff258076cc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.JndiManager.JndiManagerFactory</span></td><td><code>1aa22ef35e7b39e1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.Severity</span></td><td><code>e0a278681586baa3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.Severity.1</span></td><td><code>02b905962856e77a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.UrlConnectionFactory</span></td><td><code>fe1aa91dfda4508b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.selector.ClassLoaderContextSelector</span></td><td><code>51fe4a37debf5837</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.time.MutableInstant</span></td><td><code>2c9f37fecc94af66</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.time.MutableInstant.1</span></td><td><code>7a31d4476154e2e9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Assert</span></td><td><code>2070440162309ceb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.BasicAuthorizationProvider</span></td><td><code>91fb6f421e386e2e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Builder</span></td><td><code>20256cb6660350b3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ClockFactory</span></td><td><code>db9e6b37e1499815</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.CloseShieldOutputStream</span></td><td><code>a8ceb873be4f4648</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Closer</span></td><td><code>07ec2ceb73d38d9f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Constants</span></td><td><code>e00fe6db3eea27c6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry</span></td><td><code>fe7e78055d6ed7e9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.RegisteredCancellable</span></td><td><code>d05cfcef69b80229</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DummyNanoClock</span></td><td><code>e9842706c10ce8fe</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ExecutorServices</span></td><td><code>0b1502384d7b4f9d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.FileUtils</span></td><td><code>766389fdd5ee060d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Loader</span></td><td><code>cedf46f3f66ccef0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.NameUtil</span></td><td><code>772e62d4e7d20f38</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.NetUtils</span></td><td><code>849ffc3d21a50c91</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ReflectionUtil</span></td><td><code>e2f901f8fe40d1d0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ShutdownCallbackRegistry</span></td><td><code>bdd0c536e9a68d83</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Source</span></td><td><code>6f5ecb54afad7816</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.SystemClock</span></td><td><code>bc39a01c38896121</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.TypeUtil</span></td><td><code>123af7991e2fd49c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.WatchManager</span></td><td><code>47fc42cba55d23e5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.WatchManager.LocalUUID</span></td><td><code>5fd069d5d43df719</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.InternalLoggerRegistry</span></td><td><code>b2827fd2af2bab8d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.SystemUtils</span></td><td><code>8510c1195c1220ad</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter</span></td><td><code>48949375ea5a5723</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.1</span></td><td><code>ea17dff3a6169455</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.4</span></td><td><code>5e0717381949424f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.AbstractFormatter</span></td><td><code>348dd778769adfe1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.DynamicPatternSequence</span></td><td><code>9f79e07c2c68b56e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.DynamicPatternSequence.1</span></td><td><code>fe85a302bf3b8a85</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.PatternSequence</span></td><td><code>db4235d90c172fd7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.SecondPatternSequence</span></td><td><code>57503f9339067ca9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.SecondPatternSequence.3</span></td><td><code>1489d3c15befc2d0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.StaticPatternSequence</span></td><td><code>435b060183e0d88c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.StaticPatternSequence.1</span></td><td><code>96a1bd9c8ca4cd32</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternDynamicFormatter.TimestampedFormatter</span></td><td><code>3a3802b3c3872416</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternFormatter</span></td><td><code>62029f8041d40579</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternFormatter.1</span></td><td><code>92f1d5866773ee5a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternFormatter.Builder</span></td><td><code>360de3904fc0cab7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.internal.instant.InstantPatternThreadLocalCachedFormatter</span></td><td><code>e015db22a8cfdd15</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.LogManagerStatus</span></td><td><code>72283b78de816d5d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.map.UnmodifiableArrayBackedMap</span></td><td><code>1ab1161de9876941</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.map.UnmodifiableArrayBackedMap.UnmodifiableEntry</span></td><td><code>33e7c55ce5c2856e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.map.UnmodifiableArrayBackedMap.UnmodifiableEntryIterator</span></td><td><code>680caa8f603deb5a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.map.UnmodifiableArrayBackedMap.UnmodifiableEntrySet</span></td><td><code>b9a985911b3409de</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.JsonTemplateLayout</span></td><td><code>d1669451c0722d69</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder</span></td><td><code>56647e358489e1cc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Context</span></td><td><code>ba498c12b165fb52</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.StringBuilderEncoder</span></td><td><code>9ca6ccf62de72a7a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults</span></td><td><code>23378bcce0909e49</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.CaseConverterResolver</span></td><td><code>4909575cb5d693db</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.CaseConverterResolverFactory</span></td><td><code>ede68117c41e2040</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.CounterResolver</span></td><td><code>1556a0cea16114f0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.CounterResolverFactory</span></td><td><code>97a3f68838147920</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolver</span></td><td><code>283c35693cf6b300</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory</span></td><td><code>71e0bc2b48ea3fcf</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventAdditionalFieldInterceptor</span></td><td><code>1a43df9531fd7f9b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext</span></td><td><code>17d497bca3bae43f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder</span></td><td><code>8c8fab14e03ac4e5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactories</span></td><td><code>6bca25734e743514</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactory</span></td><td><code>6a1aab863cd7a77e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverInterceptor</span></td><td><code>6058c6fb1245a597</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverInterceptors</span></td><td><code>cd485ddab9dd60c5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventResolverStringSubstitutor</span></td><td><code>678c8652c240c8e9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.EventRootObjectKeyInterceptor</span></td><td><code>fb38052d82bce886</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolver</span></td><td><code>d69d009044eadee7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory</span></td><td><code>64d089fb1cebcb60</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory</span></td><td><code>3273b1ddc8af573b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.LevelResolver</span></td><td><code>bc98acff730bc0a0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory</span></td><td><code>5aaf3513894e7d8b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.LoggerResolver</span></td><td><code>248d4d2dc159fb0f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory</span></td><td><code>52aaf118bfc9f3d8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MainMapResolver</span></td><td><code>425b1bc291bb3631</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory</span></td><td><code>19ad876d9013dab7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MapResolver</span></td><td><code>acc9adf10859fbf5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory</span></td><td><code>dfd6db928e7e16b6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MarkerResolver</span></td><td><code>9e49d2c39a55b52d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory</span></td><td><code>02d5f412d31f7c69</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolver</span></td><td><code>0ccd068f66d4816f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory</span></td><td><code>300e74bf37e19320</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MessageResolver</span></td><td><code>c4d2a82a3b1ecd3e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory</span></td><td><code>3faef2f63ac7d5d0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.PatternResolver</span></td><td><code>70c0f2e674d74400</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory</span></td><td><code>a0b3ace26e2d2951</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ReadOnlyStringMapResolver</span></td><td><code>cbe3e327997f1dfd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ReadOnlyStringMapResolver.2</span></td><td><code>2ed827b55caf996d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ReadOnlyStringMapResolver.LoopContext</span></td><td><code>0c33a20138487117</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ReadOnlyStringMapResolver.LoopMethod</span></td><td><code>a351bf58c8f3ff5b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.SourceResolver</span></td><td><code>642dc016a42b13e5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory</span></td><td><code>373ab68981bcbe59</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.StackTraceElementResolver</span></td><td><code>f27cacd566f5709e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.StackTraceElementResolverFactory</span></td><td><code>887134aa5458dee6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.StackTraceStringResolver</span></td><td><code>ddebdb9b1d5d755b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver</span></td><td><code>3cdd1d51dc484137</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverConfig</span></td><td><code>df0a2c71d76eb13c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverFactories</span></td><td><code>bf204b2f45bcafaa</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverInterceptors</span></td><td><code>17e08c2a4556daba</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers</span></td><td><code>851d6296dbb1a4e4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.EmptyArrayResolver</span></td><td><code>5b1b8e058191dbc8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.EmptyObjectResolver</span></td><td><code>c1636af5f6c0ea1e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.FieldResolverContext</span></td><td><code>43051bd2e9f4978e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.FlatteningFieldResolverMethod</span></td><td><code>0405991f545bb9d3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.MapResolver</span></td><td><code>925c08ccee1641bf</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.NullResolver</span></td><td><code>ba7601d18c58fe85</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.PrefixedFieldResolverMethod</span></td><td><code>e3d9d0568113a866</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.RawStringResolver</span></td><td><code>0e5e860522f96893</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers.UnresolvableTemplateResolver</span></td><td><code>ea0eaf4a740e4ccd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolver</span></td><td><code>e24cbb6e9e49f3ed</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory</span></td><td><code>7b79096118dccf61</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolver</span></td><td><code>df60b56c4fcfec8b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory</span></td><td><code>9364fbb075461628</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadResolver</span></td><td><code>954cbc82e6d0674c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory</span></td><td><code>523512333aa34d8f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TimestampResolver</span></td><td><code>9ad550f11208b35d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TimestampResolver.PatternResolver</span></td><td><code>e493e7f17e5ad6f3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory</span></td><td><code>3c098074333090fd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.JsonReader</span></td><td><code>9c269eda262e6202</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.JsonReader.Delimiter</span></td><td><code>e86275cc0a69adda</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.JsonWriter</span></td><td><code>a3a26c564ed7467f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.JsonWriter.Builder</span></td><td><code>91b380b380dee9df</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.MapAccessor</span></td><td><code>1442ec6147dea8e0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.RecyclerFactories</span></td><td><code>c93f4367bd34b334</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.RecyclerFactory</span></td><td><code>f8e1b243824a5c03</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.RecyclerFactoryConverter</span></td><td><code>da1c1ee049634c47</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.ThreadLocalRecycler</span></td><td><code>4f1c77fcb1ddd7fe</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.ThreadLocalRecyclerFactory</span></td><td><code>70cca4fd5f446ea2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter</span></td><td><code>d22511316f42ec4a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter</span></td><td><code>6122f596f77a2dc0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.layout.template.json.util.Uris</span></td><td><code>ba8ec690f283fcff</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.AbstractMessageFactory</span></td><td><code>e9dac4515df8ce23</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.DefaultFlowMessageFactory</span></td><td><code>be788f076dca0cc0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ParameterFormatter</span></td><td><code>eb276e550c9d4540</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ParameterFormatter.MessagePatternAnalysis</span></td><td><code>75164aa8a6ff079d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory</span></td><td><code>bc64dda9481c1b01</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ReusableMessageFactory</span></td><td><code>6d203970db43c096</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ReusableParameterizedMessage</span></td><td><code>9296c09e3ba943a4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ReusableSimpleMessage</span></td><td><code>40782fd96f9d06e2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.SimpleMessage</span></td><td><code>8febf49cfcf775d1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.AbstractLogger</span></td><td><code>ae6004478eba13b6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.AbstractLoggerAdapter</span></td><td><code>2c05927cdef11761</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.DefaultThreadContextMap</span></td><td><code>11ce6cc8f0aa0bdf</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.DefaultThreadContextStack</span></td><td><code>120774c49aeb2864</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.LoggerContext</span></td><td><code>82b9da065ae22831</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.Provider</span></td><td><code>fb8fd0df8eb59bf1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.StandardLevel</span></td><td><code>08a88bb529c47d3e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.ThreadContextMapFactory</span></td><td><code>feeba9207be6e2ac</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusConsoleListener</span></td><td><code>9ca252e5a4091e71</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger</span></td><td><code>1c6221b77d6234a0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger.Config</span></td><td><code>1ec44aeb592d7793</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger.InstanceHolder</span></td><td><code>ae1bbcb55581c412</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger.PropertiesUtilsDouble</span></td><td><code>f8e461a92a2776af</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Cast</span></td><td><code>cfe13badf9a0ba90</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Constants</span></td><td><code>03c3428c0a88a86c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.EnglishEnums</span></td><td><code>8ff1c790fe847c98</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.EnvironmentPropertySource</span></td><td><code>87fbc37370a64dce</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Lazy</span></td><td><code>8c8dacc87c12702a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LazyBoolean</span></td><td><code>512b0a9a047c4abd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LazyUtil</span></td><td><code>f41dc66f7b046ec3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LazyUtil.1</span></td><td><code>816b401ccf54f5ea</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LazyUtil.SafeLazy</span></td><td><code>25af67911aa147a9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LoaderUtil</span></td><td><code>8c929df72e7c47b6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LoaderUtil.ThreadContextClassLoaderGetter</span></td><td><code>9a593fdbdb067c2e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LoaderUtil.UrlResource</span></td><td><code>3d6f537c99520043</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.OsgiServiceLocator</span></td><td><code>b2b1e88a4daaf71b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesPropertySource</span></td><td><code>8460520a4d09794a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesUtil</span></td><td><code>4f11c0bb1085895a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesUtil.Environment</span></td><td><code>e2e9d1fd8f02eb0c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertyFilePropertySource</span></td><td><code>b61b5d790145e015</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertySource.Comparator</span></td><td><code>7213d497095f3477</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertySource.Util</span></td><td><code>56f18cb6c4efb02c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.ProviderUtil</span></td><td><code>07dcf5d66c4a44f7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.ServiceLoaderUtil</span></td><td><code>a5f5f0285292151e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.ServiceLoaderUtil.ServiceLoaderSpliterator</span></td><td><code>d7131a86ea7959d2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.SortedArrayStringMap</span></td><td><code>6095ff673881ec97</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.StackLocator</span></td><td><code>92be9413a986feb2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.StackLocatorUtil</span></td><td><code>626893a0f7ae9511</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.StringBuilders</span></td><td><code>add6fd6ffc115a5f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Strings</span></td><td><code>94173f82e56f1325</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.SystemPropertiesPropertySource</span></td><td><code>ae65b9ae381a1722</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.Log4jLogger</span></td><td><code>3954cabea8115449</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.Log4jLoggerFactory</span></td><td><code>39c0ecf54e20fe1c</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.Log4jMDCAdapter</span></td><td><code>ad62ec9a4952143e</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.Log4jMDCAdapter.ThreadLocalMapOfStacks</span></td><td><code>49d1a5e0b1504ae9</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.Log4jMarkerFactory</span></td><td><code>942a73cf37200c87</code></td></tr><tr><td><span class="el_class">org.apache.logging.slf4j.SLF4JServiceProvider</span></td><td><code>df35ad37b8ae9019</code></td></tr><tr><td><span class="el_class">org.apache.maven.plugin.surefire.log.api.NullConsoleLogger</span></td><td><code>9e19e8c6ec7e2af1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.BaseProviderFactory</span></td><td><code>3859e78bd81eea39</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.BiProperty</span></td><td><code>d22c13c56d5b4593</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Command</span></td><td><code>3cd54166633f8826</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Constants</span></td><td><code>decb9de81c53dc77</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.DumpErrorSingleton</span></td><td><code>0fb68b22eecee565</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkedProcessEventType</span></td><td><code>1e71b700dec298fc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkingReporterFactory</span></td><td><code>2d7c909ce11eeb34</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.ForkingRunListener</span></td><td><code>744b5d40c4f10a33</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.MasterProcessCommand</span></td><td><code>f08b5f822818a0c3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.booter.Shutdown</span></td><td><code>6192bb4f897c382f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.cli.CommandLineOption</span></td><td><code>2a8534c3e1d989bc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.provider.AbstractProvider</span></td><td><code>a003e0bc84287c70</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture</span></td><td><code>810c9018ba7d1ecc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture.ForwardingPrintStream</span></td><td><code>dc07bdd48c8c97da</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ConsoleOutputCapture.NullOutputStream</span></td><td><code>5731848fa72c76c9</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.ReporterConfiguration</span></td><td><code>a4d0f02ee0a3ce3b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.RunMode</span></td><td><code>98c8973998a3b082</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.SimpleReportEntry</span></td><td><code>be57bd60074f466f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.Stoppable</span></td><td><code>8c4d60b7f1b297d2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.report.TestOutputReportEntry</span></td><td><code>b7f0e6ae6773a3e5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder</span></td><td><code>c51329e6fe95e03f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.BufferedStream</span></td><td><code>8b0941aadffa99f3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.Memento</span></td><td><code>08133f22d237900c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.Segment</span></td><td><code>ec7b2e9f3dc519b5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamDecoder.StreamReadStatus</span></td><td><code>c88d377c8a9d79d9</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.AbstractStreamEncoder</span></td><td><code>5b9d2cab05438b39</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.stream.SegmentType</span></td><td><code>14eec9565e61e8f0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.suite.RunResult</span></td><td><code>af7c32d6d7db124b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.DirectoryScannerParameters</span></td><td><code>011c1405154cf543</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.IncludedExcludedPatterns</span></td><td><code>e9dcd696bf90972f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest</span></td><td><code>89f52bebbeb73147</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.ClassMatcher</span></td><td><code>33c4dbc3f599382c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.MethodMatcher</span></td><td><code>3f11ccaf5ed4525c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.ResolvedTest.Type</span></td><td><code>39ddabaaae3cbeff</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.RunOrderParameters</span></td><td><code>54e3b7abf0f0a29a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestArtifactInfo</span></td><td><code>534706d1cf843371</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestListResolver</span></td><td><code>6d5d31720568eeb5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.testset.TestRequest</span></td><td><code>c693581994b610fb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.CloseableIterator</span></td><td><code>1bb59460a90e1562</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.DefaultRunOrderCalculator</span></td><td><code>683a9b55f792b222</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.DefaultScanResult</span></td><td><code>3abe973f1a2038a4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.ReflectionUtils</span></td><td><code>463b61419dafb4bc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.RunOrder</span></td><td><code>9c1d4990c18ccb49</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.TestsToRun</span></td><td><code>1a59fa62362c2dd4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.TestsToRun.ClassesIterator</span></td><td><code>020222250551ddb8</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel</span></td><td><code>b76efd5ee4f6a78a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleWritableChannel</span></td><td><code>7b40a9206100f626</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels</span></td><td><code>a28ebb2dc3d003c6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels.3</span></td><td><code>1911457c5208109a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.Channels.4</span></td><td><code>61df49d28956b732</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ClassMethod</span></td><td><code>831eee1f29d6b004</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DaemonThreadFactory</span></td><td><code>4065ee5e2ad99385</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.NamedThreadFactory</span></td><td><code>0dc63f2f250c8f58</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.DumpFileUtils</span></td><td><code>260268350116ea1a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ImmutableMap</span></td><td><code>c8d76b0bb433e1e6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ImmutableMap.Node</span></td><td><code>61855d8450e86cb5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.api.util.internal.ObjectUtils</span></td><td><code>d0584b88701e9b97</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.AbstractPathConfiguration</span></td><td><code>2ad3d057ec281500</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BooterDeserializer</span></td><td><code>a2a1a3132d868a74</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClassLoaderConfiguration</span></td><td><code>5bafac5e09ac0782</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Classpath</span></td><td><code>81f738f937cf4b38</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClasspathConfiguration</span></td><td><code>b651758fedc3de2d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader</span></td><td><code>440cf8805d3444be</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.1</span></td><td><code>6e995a711f46e676</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.CommandRunnable</span></td><td><code>ba4a7ee973ae4b5c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter</span></td><td><code>a794e9fb31eadc62</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.1</span></td><td><code>b3625082bcbcaa1f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.3</span></td><td><code>678e81beb9b382e4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.4</span></td><td><code>372f50842fee613b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.6</span></td><td><code>b9d98b15b0fecacf</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.7</span></td><td><code>b800c311c38e0430</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.8</span></td><td><code>ca68133139a629aa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.PingScheduler</span></td><td><code>06d1ac7994d5841f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedNodeArg</span></td><td><code>e055a24d27c554f3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessChecker</span></td><td><code>b82c06c78bf2ac81</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessCheckerType</span></td><td><code>da0fb0508acb6a88</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessHandleChecker</span></td><td><code>7dd4e1737a18e010</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PropertiesWrapper</span></td><td><code>c4362cb430c125af</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProviderConfiguration</span></td><td><code>84eb716577efc3a7</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.StartupConfiguration</span></td><td><code>f457135a627728a6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.SystemPropertyManager</span></td><td><code>0446c7c116836016</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.TypeEncodedValue</span></td><td><code>1b039936542eee72</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory</span></td><td><code>c30b5b062f066468</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory.1</span></td><td><code>ba92f258e1ad2b01</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory.2</span></td><td><code>4c48d7caa822072a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.CommandChannelDecoder</span></td><td><code>65f2965c86411193</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.EventChannelEncoder</span></td><td><code>114071f00780f71e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.EventChannelEncoder.StackTrace</span></td><td><code>e7231bc2c7014c40</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelProcessorFactory</span></td><td><code>b54085754461a0d1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory</span></td><td><code>132a213649249d64</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.CommandDecoder</span></td><td><code>055764432f6c9cf0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.CommandDecoder.1</span></td><td><code>9d88d04fa41adab4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.stream.EventEncoder</span></td><td><code>ffcc98dcf5bfb461</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.CancellationTokenAdapter</span></td><td><code>0aec9562b8041078</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.JUnitPlatformProvider</span></td><td><code>741b7241ae807580</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.LauncherAdapter</span></td><td><code>960d119d0d60c846</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.LauncherSessionAdapter</span></td><td><code>f441e5bdca582e8f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.LauncherSessionFactory</span></td><td><code>49ca09c593239180</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter</span></td><td><code>9dd3b53d3e03c357</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter.1</span></td><td><code>73907025c6e08294</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter.ResultDisplay</span></td><td><code>ad527a283ecb2c37</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.TestPlanScannerFilter</span></td><td><code>307cdd6c49f34ebb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ClassMethodIndexer</span></td><td><code>ba8ad3894cbb8752</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.lang3.StringUtils</span></td><td><code>2f1592cde95bbe05</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.utils.StringUtils</span></td><td><code>abd8480c7152bf46</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils</span></td><td><code>011b23cd829ec86c</code></td></tr><tr><td><span class="el_class">org.apiguardian.api.API.Status</span></td><td><code>95d0ffea805fc01a</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI</span></td><td><code>08ed18203ba6cfe5</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.1</span></td><td><code>6da2f5aeec2abf21</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.2</span></td><td><code>16e4dc2e407a0862</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.ProviderService</span></td><td><code>60b0e943d5cf4c91</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertArrayEquals</span></td><td><code>15f31ff3e67dccd2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertDoesNotThrow</span></td><td><code>879e279cf096dacb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertEquals</span></td><td><code>c5d665480ede2701</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertFalse</span></td><td><code>d92520576693da13</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertInstanceOf</span></td><td><code>09322e62eb4d81a3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotEquals</span></td><td><code>a80d7ab4d8836c41</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotNull</span></td><td><code>46d18b68183c3354</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotSame</span></td><td><code>eb54819731da5d28</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNull</span></td><td><code>8588906d0d27c23c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertSame</span></td><td><code>1d6a5050b1245403</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertThrows</span></td><td><code>a799a7215d5c9028</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertTrue</span></td><td><code>1644a4cea3dd0501</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertionUtils</span></td><td><code>5086cd25c130f738</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.Assertions</span></td><td><code>862fe7fc3cda0760</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator</span></td><td><code>728a928d4e20d9d1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.IndicativeSentences</span></td><td><code>4238025d7fb08656</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores</span></td><td><code>1dde2d73154ccbf3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Simple</span></td><td><code>ce93cb8e4666d084</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Standard</span></td><td><code>133af030ac0b7bff</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.TestInstance.Lifecycle</span></td><td><code>e3149368ad943100</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.condition.EnabledIfCondition</span></td><td><code>1a78d2f18e446a54</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.condition.MethodBasedCondition</span></td><td><code>ebbd8986d2932bb6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ConditionEvaluationResult</span></td><td><code>c5e0b323ec90a978</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext</span></td><td><code>a20cce26ccec0ed7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Namespace</span></td><td><code>68b03c84e2e2c6dd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Store</span></td><td><code>0baa13ac41e91bc4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.InvocationInterceptor</span></td><td><code>f5eeb3bea3854307</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.TestInstancePreDestroyCallback</span></td><td><code>76a867fcdd84abd8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.TestInstantiationAwareExtension.ExtensionContextScope</span></td><td><code>aa73779fa739b650</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.TestTemplateInvocationContext</span></td><td><code>556594474294e17b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.TestWatcher</span></td><td><code>b95402db661823b4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.parallel.ResourceLockTarget</span></td><td><code>38db25bc5af34888</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.JupiterTestEngine</span></td><td><code>d829fc129094a4a7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.CachingJupiterConfiguration</span></td><td><code>6106f4102e077f60</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.ConfigurationParameterConverter</span></td><td><code>219c27574e9aebce</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.DefaultJupiterConfiguration</span></td><td><code>684b5b84bf508f87</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.EnumConfigurationParameterConverter</span></td><td><code>82ded022982776a4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.FilteringConfigurationParameterConverter</span></td><td><code>686b4b8bc657d0a8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter</span></td><td><code>013f4f59e374d4d2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.AbstractExtensionContext</span></td><td><code>551a364717f32633</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.CallbackSupport</span></td><td><code>8446bbb4bfd63ace</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor</span></td><td><code>4a833593228e6d40</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.ClassInfo</span></td><td><code>f99c2953db5148f3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.LifecycleMethods</span></td><td><code>81d1637c68b27009</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassExtensionContext</span></td><td><code>97674b57dad909ed</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassTestDescriptor</span></td><td><code>645148896745e02f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DefaultTestInstanceFactoryContext</span></td><td><code>42963c7136b397f7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DisplayNameUtils</span></td><td><code>0da2496721430234</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DynamicDescendantFilter</span></td><td><code>f17574f68025407e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DynamicDescendantFilter.Mode</span></td><td><code>9a000b8fa3dd8d38</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector</span></td><td><code>ded086e8398edb59</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector.1</span></td><td><code>7f162e6f0e8ad1fe</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExtensionUtils</span></td><td><code>f1075bc713614431</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor</span></td><td><code>dbb46b3d1994bfa0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext</span></td><td><code>24f8516b48145c57</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterTestDescriptor</span></td><td><code>049828524f3ad737</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.LifecycleMethodUtils</span></td><td><code>c9bc01dee0316477</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor</span></td><td><code>f4fdd53776140a57</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor.MethodInfo</span></td><td><code>b69b3d7410fe50ff</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodExtensionContext</span></td><td><code>d3d6dcca13a2e290</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ResourceLockAware</span></td><td><code>1b1fff61c8189643</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ResourceLockAware.1</span></td><td><code>26363f6ed40ad8aa</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TemplateExecutor</span></td><td><code>a7484f63d869cb46</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils</span></td><td><code>d2a8413fd5b02658</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor</span></td><td><code>844d04b7e0158810</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.1</span></td><td><code>e30b7fb3e55230bc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateExtensionContext</span></td><td><code>46e48b649475a92b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateInvocationTestDescriptor</span></td><td><code>b3405293e32a6f85</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor</span></td><td><code>c8829a24757335c5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.TestTemplateExecutor</span></td><td><code>4b420fb7626b8855</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.Validatable</span></td><td><code>f1c6e8a5bff3d39f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor</span></td><td><code>2f22c43dcf5d3ea3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor.DescriptorWrapperOrderer</span></td><td><code>e2f42d8b7d2bc335</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassOrderingVisitor</span></td><td><code>4cda027d9ddf8da9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassSelectorResolver</span></td><td><code>34d04d2f70338616</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DeclaredMethodSelector</span></td><td><code>9b3312514fb70efd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DiscoverySelectorResolver</span></td><td><code>3285c32d5ea8b7fe</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodOrderingVisitor</span></td><td><code>6fdca30c0d24f1a6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSegmentResolver</span></td><td><code>35fd44539da894ce</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver</span></td><td><code>a50119a6ec5255af</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType</span></td><td><code>b50e0edb0db4e847</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod</span></td><td><code>571382dbc860cf28</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestMethod</span></td><td><code>2113a61cbb0ed5d3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod</span></td><td><code>29e5b76191a2681e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestableMethod</span></td><td><code>07c71aa7f7a24eec</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.TestClassPredicates</span></td><td><code>8510e257a5e08b89</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConditionEvaluator</span></td><td><code>d6fa58630991fa99</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConstructorInvocation</span></td><td><code>82ed286e187e29d3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultExecutableInvoker</span></td><td><code>5a08142482580850</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultTestInstances</span></td><td><code>c59638cf8ca82f8f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionContextSupplier</span></td><td><code>a9321ed89be21e44</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionContextSupplier.ScopeBasedExtensionContextSupplier</span></td><td><code>c5fdd1706754a49c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InterceptingExecutableInvoker</span></td><td><code>5ede5849b5a9c0cf</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.ReflectiveInterceptorCall</span></td><td><code>31be88c38257c72c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain</span></td><td><code>21bd399a61e56fdc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.InterceptedInvocation</span></td><td><code>a534f80b5ecf31de</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.ValidatingInvocation</span></td><td><code>cc027160d4fba1b1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext</span></td><td><code>8b9f38cdd9baa774</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.Builder</span></td><td><code>7b6a113831ced23c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.State</span></td><td><code>4acf05f4ac4a93ce</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.LauncherStoreFacade</span></td><td><code>d2197a072bb03ef3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.MethodInvocation</span></td><td><code>e60bb2da044b1e24</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.NamespaceAwareStore</span></td><td><code>9ca6e1e308ff2f56</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ParameterResolutionUtils</span></td><td><code>e966f154bda175a1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.TestInstancesProvider</span></td><td><code>6bdb7e43a53f0f33</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.AutoCloseExtension</span></td><td><code>72a267b0fed10b16</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DefaultRepetitionInfo</span></td><td><code>c97949f7c5fe6960</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DisabledCondition</span></td><td><code>c6cc04fc92999229</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.ExtensionRegistry</span></td><td><code>b98ddc56d2d957f4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry</span></td><td><code>f15a06d8564816ec</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry.Entry</span></td><td><code>33baee2c70392fe9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestDisplayNameFormatter</span></td><td><code>57b92827048765f4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestExtension</span></td><td><code>5f3516ce8b864942</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestInvocationContext</span></td><td><code>2f5e0e301b6104b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepetitionExtension</span></td><td><code>0faa5d773008b800</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory</span></td><td><code>22da82cbe3ff11db</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory.FailureTracker</span></td><td><code>bb74240ba70eccc5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestInfoParameterResolver</span></td><td><code>cf9e50487d8103ab</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestReporterParameterResolver</span></td><td><code>a0823aa2bade142f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutConfiguration</span></td><td><code>d7196de4c0df2543</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutDurationParser</span></td><td><code>7270b85f600fc1c1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutExtension</span></td><td><code>b4602cffb949028a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory</span></td><td><code>0594bed666758943</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.MethodReflectionUtils</span></td><td><code>dcacefd67fff09e2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector</span></td><td><code>ef12812bc6bd30c6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ArgumentCountValidationMode</span></td><td><code>db68c350960e4cfd</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try</span></td><td><code>3339e50fee9293e7</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Failure</span></td><td><code>ab517557e9044f8d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Success</span></td><td><code>7a704c95fddb8409</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory</span></td><td><code>fb0af736e79ba76b</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory.DelegatingLogger</span></td><td><code>76f4fa5d46717648</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.AnnotationSupport</span></td><td><code>7793ed10ad655f19</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.HierarchyTraversalMode</span></td><td><code>6b8aef01bf0fb401</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.ModifierSupport</span></td><td><code>b3f09e11f5c18acc</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.ReflectionSupport</span></td><td><code>35ae3880803282b4</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils</span></td><td><code>6e75905cda721651</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassLoaderUtils</span></td><td><code>8dd491481f73adaa</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassNamePatternFilterUtils</span></td><td><code>716c4a6e09f30d47</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassNamePatternFilterUtils.FilterType</span></td><td><code>ba72b0cda33365a6</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassUtils</span></td><td><code>2862bcd6ec2d75cf</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClasspathScannerLoader</span></td><td><code>f98418f4b743eb60</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.CollectionUtils</span></td><td><code>4bb048147fcd9942</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.DefaultClasspathScanner</span></td><td><code>8470e779a81a4705</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.KotlinReflectionUtils</span></td><td><code>2515b452e403acf2</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.LruCache</span></td><td><code>b14731ae7ceb1c0f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.Preconditions</span></td><td><code>7299ac80017c75aa</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils</span></td><td><code>a3ce7f68f391e14b</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.CycleErrorHandling</span></td><td><code>68a102c195e90a75</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.CycleErrorHandling.1</span></td><td><code>345436d28c65b4de</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.CycleErrorHandling.2</span></td><td><code>09062fba873657d7</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode</span></td><td><code>ebfba59d30f11cbd</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ServiceLoaderUtils</span></td><td><code>acd2a1e276d1bb2f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.StringUtils</span></td><td><code>a5cd54750d7604f5</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.UnrecoverableExceptions</span></td><td><code>8e2138bba0cbb7f0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CancellationToken</span></td><td><code>22c36d0c9cd00ef3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter</span></td><td><code>0599475e14d3eab1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter.1</span></td><td><code>2f87001b2a6344cf</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeTestDescriptorVisitor</span></td><td><code>552a4f89546e6514</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ConfigurationParameters</span></td><td><code>76f24c6e628ba7b8</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.DiscoveryIssue.Severity</span></td><td><code>489892c9b84b1bc8</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener</span></td><td><code>52afb51f2672f15e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener.1</span></td><td><code>c7da25604c9c2322</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener</span></td><td><code>121a0a996d310f01</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener.1</span></td><td><code>f34535a4b6c5967c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ExecutionRequest</span></td><td><code>92ca4632ef3e5c12</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.Filter</span></td><td><code>8f5a14372db59473</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.FilterResult</span></td><td><code>69938aaa2a828a07</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.RegularCancellationToken</span></td><td><code>f54fa72ffa40e074</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult</span></td><td><code>e2f12da0aced0131</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult.Status</span></td><td><code>2bd0aa41ec56fe90</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor</span></td><td><code>34696357199ad0cc</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Type</span></td><td><code>c047a13af362884d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Visitor</span></td><td><code>cbd7a1d91a56d83f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult</span></td><td><code>5578efdc39874259</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult.Status</span></td><td><code>8062b8117e85109a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId</span></td><td><code>6bfdbf7f0d700c69</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId.Segment</span></td><td><code>e2f9158c1fc0783d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueIdFormat</span></td><td><code>d884dda215f12541</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.ClassSelector</span></td><td><code>3c5108bb0b15c451</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.DiscoverySelectors</span></td><td><code>7da5e7b1ecbc2a6f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.AbstractTestDescriptor</span></td><td><code>f694768c1b242c33</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.ClassSource</span></td><td><code>93d0d5548a78b469</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.EngineDescriptor</span></td><td><code>acf92373ef538b8e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.MethodSource</span></td><td><code>bf2504c18b29f4f6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver</span></td><td><code>fcb227c483eaf00f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.DiscoveryIssueReporter</span></td><td><code>cf7955bdc7ae28f9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.DiscoveryIssueReporter.Condition</span></td><td><code>bbbf893958322cf8</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution</span></td><td><code>4d1f7fa7a856d6f7</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.DefaultContext</span></td><td><code>78ba33750f89c30d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver</span></td><td><code>458811cd0a820979</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.Builder</span></td><td><code>53024ea9fc463609</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext</span></td><td><code>d9c1e929e3bcdf3e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver</span></td><td><code>dbb2b0a06dd58796</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match</span></td><td><code>6de00bc5b32d7006</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match.Type</span></td><td><code>6e7ea4cf22498a52</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Resolution</span></td><td><code>1459eee50a0b992d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource</span></td><td><code>fb66f0ea79918a61</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource.LockMode</span></td><td><code>e552c49d740237aa</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine</span></td><td><code>a0ea213b5e292059</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor</span></td><td><code>2e9e876440921413</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.LockManager</span></td><td><code>7362136ff02cfa28</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node</span></td><td><code>3c75ba02d66169dd</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node.SkipResult</span></td><td><code>5ac31f7dfacb2682</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeExecutionAdvisor</span></td><td><code>191dde6637634b6d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask</span></td><td><code>ff1bdcd76c99763c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DefaultDynamicTestExecutor</span></td><td><code>0826c73f87b41102</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DynamicTaskState</span></td><td><code>1c2c068e5975c9b2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTaskContext</span></td><td><code>43b1454d643b6868</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTreeWalker</span></td><td><code>a7aeedef755430fa</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils</span></td><td><code>58be7675ea33a7ec</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils.1</span></td><td><code>9850dcea35236671</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NopLock</span></td><td><code>1237cd1eba36ecac</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService</span></td><td><code>7c588c7c12db9887</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SingleLock</span></td><td><code>3095c2785ac12666</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ThrowableCollector</span></td><td><code>e63515550c118214</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.Namespace</span></td><td><code>75f88e2c2b9b9536</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore</span></td><td><code>1e966836f2d1d6f7</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.CloseAction</span></td><td><code>00639465026b9145</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.CompositeKey</span></td><td><code>858b0096b78c1944</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.DeferredSupplier</span></td><td><code>4ed50aff8154a324</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.EvaluatedValue</span></td><td><code>6b0c01625d12f9de</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.StoredValue</span></td><td><code>7c9aab72049e7fef</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.StoredValue.DeferredOptionalValue</span></td><td><code>295bb761d7ce9ca9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.store.NamespacedHierarchicalStore.StoredValue.Value</span></td><td><code>bc330326549d48a5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult</span></td><td><code>b3bd757194c79d9e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult.Status</span></td><td><code>8f8f50dfbef07de0</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener</span></td><td><code>3b1dc34302f1672c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener.1</span></td><td><code>7d3f44c172fc6b7c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener</span></td><td><code>5ded47af1150cfdd</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener.1</span></td><td><code>1a5732a3830783e9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestExecutionListener</span></td><td><code>af9ea5f238fc155d</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestIdentifier</span></td><td><code>54012eb3c198e312</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestPlan</span></td><td><code>ec4251ec48f692dc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor</span></td><td><code>c534071b7ba85a25</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.CompositeEngineExecutionListener</span></td><td><code>2f20b2ac8afa8143</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.CompositeTestExecutionListener</span></td><td><code>f808072d7c084b05</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultDiscoveryRequest</span></td><td><code>5f0aca5dd50c5cc5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncher</span></td><td><code>9396cbc78ee52051</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherConfig</span></td><td><code>54d71ab8036742cf</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherExecutionRequest</span></td><td><code>4ef9fabd1f552df2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession</span></td><td><code>ec52899bbb05e60c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.1</span></td><td><code>88cc58155c287282</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.ClosedLauncher</span></td><td><code>2eb36dc2d262e604</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingEngineExecutionListener</span></td><td><code>fdc08eda26179534</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingLauncher</span></td><td><code>6a16dddd72c362d8</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingLauncherDiscoveryRequest</span></td><td><code>4fdd6112f3448432</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DiscoveryIssueCollector</span></td><td><code>47329f365cb96232</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DiscoveryIssueNotifier</span></td><td><code>53d4a227b82de1c3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator</span></td><td><code>1b1a39e6924a0741</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.1</span></td><td><code>2d570b18b8a0344e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryResultValidator</span></td><td><code>32405d98e9b56664</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineExecutionOrchestrator</span></td><td><code>cd0f191fdac77e87</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineFilterer</span></td><td><code>6b343d37cf0b54b9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineIdValidator</span></td><td><code>fc4a028d1d7c3bfc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ExecutionListenerAdapter</span></td><td><code>2d0d0d2cb1bc5615</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.HierarchicalOutputDirectoryCreator</span></td><td><code>9c48f55ca77b3fe6</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.InterceptingLauncher</span></td><td><code>d39f697ec86e12eb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.InternalTestPlan</span></td><td><code>9a3269f98cc8e197</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder</span></td><td><code>6768abb92976decd</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder.1</span></td><td><code>3694427b1480c32b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.IterationOrder.2</span></td><td><code>fbc19f4ffc3c96fb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig</span></td><td><code>5ee41d5c876bbb17</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig.Builder</span></td><td><code>3d185b3f0cd7b878</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters</span></td><td><code>f009457fdc987ca4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.Builder</span></td><td><code>c1415a56c3ad2fa5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider</span></td><td><code>5d5a67e106f5234a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.2</span></td><td><code>39dee64a9cf3bd26</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.3</span></td><td><code>70ecce9b213983f8</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder</span></td><td><code>88ad273feb73c882</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryResult</span></td><td><code>21392bb58963c084</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryResult.EngineResultInfo</span></td><td><code>362f5180cecb221a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherExecutionRequestBuilder</span></td><td><code>83b59b6ab0e89078</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherFactory</span></td><td><code>2061fb8c5c248623</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherListenerRegistry</span></td><td><code>ebf8c81ddbf9f006</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherPhase</span></td><td><code>b8dc8823163e41d3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ListenerRegistry</span></td><td><code>3552d737a963576c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener</span></td><td><code>33c9d30ff5674836</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.Outcome</span></td><td><code>0b2309844de303f3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderRegistry</span></td><td><code>8597febd92f4a14c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry</span></td><td><code>a3f3cee8864d9fda</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener</span></td><td><code>d52dd84072b3253b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StreamInterceptingTestExecutionListener</span></td><td><code>218793f3a08e5bd9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingDiscoveryListener</span></td><td><code>69e41e83381012ff</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingDiscoveryListener.DiscoveryEvent</span></td><td><code>fc87338933a8fb4a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingDiscoveryListener.EngineDiscoveryEvent</span></td><td><code>fb321027b30edac0</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingDiscoveryListener.LauncherDiscoveryEvent</span></td><td><code>57c2351657465393</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener</span></td><td><code>d4082f82f114e077</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener.ExecutionEvent</span></td><td><code>140e4af48b294d01</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener.SkippedTestEvent</span></td><td><code>f2b0c94174e0d2ac</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener.TestEvent</span></td><td><code>f413c134edc6c0d3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener.TestExecutionEvent</span></td><td><code>4f99ec8b6ca0deb2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.FlightRecordingExecutionListener.TestPlanExecutionEvent</span></td><td><code>7fca3e8ce0ec69cc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.jfr.JfrUtils</span></td><td><code>848a33b158d7349f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.UniqueIdTrackingListener</span></td><td><code>3ac9a0fe48ee7865</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener</span></td><td><code>24508b66df80779b</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener</span></td><td><code>b7229e478d3d15b7</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners</span></td><td><code>8254530406357618</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners.LauncherDiscoveryListenerType</span></td><td><code>5f448cc517dd5618</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.session.LauncherSessionListeners</span></td><td><code>45055c2186cdb3cb</code></td></tr><tr><td><span class="el_class">org.mockito.Answers</span></td><td><code>afd86bd70185fc83</code></td></tr><tr><td><span class="el_class">org.mockito.ArgumentMatchers</span></td><td><code>30453f217beea892</code></td></tr><tr><td><span class="el_class">org.mockito.MockedStatic</span></td><td><code>3d00d51edc103950</code></td></tr><tr><td><span class="el_class">org.mockito.Mockito</span></td><td><code>f3c149d6942cc722</code></td></tr><tr><td><span class="el_class">org.mockito.configuration.DefaultMockitoConfiguration</span></td><td><code>b174879ae8ed115e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.MockedStaticImpl</span></td><td><code>3acbdb957ee05edd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.MockitoCore</span></td><td><code>565b29d36d475859</code></td></tr><tr><td><span class="el_class">org.mockito.internal.PremainAttach</span></td><td><code>2c55710b3d403cec</code></td></tr><tr><td><span class="el_class">org.mockito.internal.PremainAttachAccess</span></td><td><code>868bee0538961f6a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.ScopedMockImpl</span></td><td><code>a11268c8bd5b7142</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.CaptorAnnotationProcessor</span></td><td><code>2f21a4570b50b64a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.ClassPathLoader</span></td><td><code>173a7c62160e6dbf</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.DefaultDoNotMockEnforcer</span></td><td><code>6a7cb49285062e7d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.GlobalConfiguration</span></td><td><code>0df96c19dabdcfc0</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.IndependentAnnotationEngine</span></td><td><code>54aaab1155cc41fd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.InjectingAnnotationEngine</span></td><td><code>3402d3906098d7e2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.MockAnnotationProcessor</span></td><td><code>4914cf1e5e7f4559</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.SpyAnnotationEngine</span></td><td><code>6b53375c8a8a5cc1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.DefaultMockitoPlugins</span></td><td><code>f2b7ceb1ff6789f3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.DefaultPluginSwitch</span></td><td><code>bae35df711d1f747</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginFinder</span></td><td><code>bd3cbb4ee283ccc1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginInitializer</span></td><td><code>072018c08a02e9ee</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginLoader</span></td><td><code>1702b486e8f8c9ad</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginRegistry</span></td><td><code>edba7ea1c6a85364</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.Plugins</span></td><td><code>b0a44acc68acdddb</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.DelegatingMethod</span></td><td><code>aa9a3605cadc5938</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.MockSettingsImpl</span></td><td><code>3040d7b3b87e5329</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.SuspendMethod</span></td><td><code>5807a496dfc9c4c6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ByteBuddyCrossClassLoaderSerializationSupport</span></td><td><code>b07e753f8b4d10a1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.BytecodeGenerator</span></td><td><code>b96181544d17b32a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker</span></td><td><code>e372c3e2dc897b3b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator</span></td><td><code>a9b4822d932ee27f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper</span></td><td><code>12c82eda7cfe1974</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper.MethodParameterStrippingMethodVisitor</span></td><td><code>79a4defa88fc3f6c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper.ParameterAddingClassVisitor</span></td><td><code>ccec02c662d06a64</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker</span></td><td><code>eef3070c3de7f6f2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.1</span></td><td><code>0a1d6e3c5d9900c2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.InlineStaticMockControl</span></td><td><code>e24549a387c76985</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockFeatures</span></td><td><code>3948e31575d7accd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice</span></td><td><code>27730be038d5518c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ConstructorShortcut</span></td><td><code>72121439f54461c6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ConstructorShortcut.1</span></td><td><code>a091ee446a93db7f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.RealMethodCall</span></td><td><code>9832a40fc0a575ef</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ReturnValueWrapper</span></td><td><code>aa7e25ff4d172a4b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.SelfCallInfo</span></td><td><code>bd24ec454c41c517</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.StaticMethodCall</span></td><td><code>9c5fe2a59807c642</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ModuleHandler</span></td><td><code>addb759457799176</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ModuleHandler.3</span></td><td><code>dbee40635b946f97</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ModuleHandler.ModuleSystemFound</span></td><td><code>b4c7c55be2a75dcd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.StackWalkerChecker</span></td><td><code>68e569e3f7178506</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.SubclassBytecodeGenerator</span></td><td><code>862116fa0474e9e4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator</span></td><td><code>9b77b7f9f15ce65b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.MockitoMockKey</span></td><td><code>6ab1c48e921f0e50</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.TypeCachingLock</span></td><td><code>f3718822abb34b6b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeSupport</span></td><td><code>d98a4f5abd337730</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor</span></td><td><code>7e19a7250dd27860</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.DispatcherDefaultingToRealMethod</span></td><td><code>bc608d13bed06cbb</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.ForEquals</span></td><td><code>7995423926597d97</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.codegen.Consumer.MockitoMock.SfSjiI1m</span></td><td><code>525a4cd926891a1a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.codegen.ExecutorService.MockitoMock.W7aMIa83</span></td><td><code>eed4ba4def80050f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.instance.DefaultInstantiatorProvider</span></td><td><code>844386c7887007f1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.instance.ObjenesisInstantiator</span></td><td><code>7a7c1771759c8b2f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.settings.CreationSettings</span></td><td><code>1d27e65e4db303b9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.Localized</span></td><td><code>df79022d5f63dcbe</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.LocationFactory</span></td><td><code>6e3846984f7d9362</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.LocationFactory.DefaultLocationFactory</span></td><td><code>962892aa849afdfc</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.LocationImpl</span></td><td><code>530a4709e6947f60</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.LocationImpl.MetadataShim</span></td><td><code>e0e02617575176a4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter</span></td><td><code>3ae97774773f8cc1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.exceptions.stacktrace.DefaultStackTraceCleaner</span></td><td><code>ccefdaf75b25508d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.exceptions.stacktrace.DefaultStackTraceCleanerProvider</span></td><td><code>b96ca03f68c6b0bc</code></td></tr><tr><td><span class="el_class">org.mockito.internal.exceptions.stacktrace.StackTraceFilter</span></td><td><code>f1e5dd123e555b09</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.InvocationNotifierHandler</span></td><td><code>81a88d2a9823ca2e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.MockHandlerFactory</span></td><td><code>60aaf611c9f037ba</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.MockHandlerImpl</span></td><td><code>40af730c41726d19</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.NullResultGuardian</span></td><td><code>887855f598dc7f26</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.ArgumentsProcessor</span></td><td><code>48a63d334fbe1568</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.DefaultInvocationFactory</span></td><td><code>fd7a2f1ca0abf244</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InterceptedInvocation</span></td><td><code>2bc1759562590122</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InterceptedInvocation.1</span></td><td><code>a808ee7e12b0c370</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMarker</span></td><td><code>f36ccd569efd70f7</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMatcher</span></td><td><code>a60a277cde788c00</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMatcher.1</span></td><td><code>d5c4b96c4388ebd1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationsFinder</span></td><td><code>d125e72698a81c75</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.MatcherApplicationStrategy</span></td><td><code>e8e6c5931cd35a1f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.MatchersBinder</span></td><td><code>7855054a8c7718ee</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.RealMethod.IsIllegal</span></td><td><code>64f3caff97edef01</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.StubInfoImpl</span></td><td><code>9766984c92e9959b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.TypeSafeMatching</span></td><td><code>db8fac8befb40512</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.mockref.MockWeakReference</span></td><td><code>1fbf38ee01ef223b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.listeners.StubbingLookupNotifier</span></td><td><code>6f87fdb14780b091</code></td></tr><tr><td><span class="el_class">org.mockito.internal.listeners.VerificationStartedNotifier</span></td><td><code>bc97b666d47bf342</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Any</span></td><td><code>ddca80baaf883a0c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.ArrayEquals</span></td><td><code>27688bbbffae1861</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Equality</span></td><td><code>341b019eaeb85d40</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Equals</span></td><td><code>84c89c09d537ae1d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.InstanceOf</span></td><td><code>5c0eab070e987a7e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.LocalizedMatcher</span></td><td><code>f3da081806496e9c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ArgumentMatcherStorageImpl</span></td><td><code>d9b8becac423331b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.MockingProgressImpl</span></td><td><code>b4b478523e99786f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.MockingProgressImpl.1</span></td><td><code>9f7db825fdcdf194</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.SequenceNumber</span></td><td><code>a68ee1dd45f51b97</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ThreadSafeMockingProgress</span></td><td><code>452aa6e38ddff43e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ThreadSafeMockingProgress.1</span></td><td><code>79ae9726492f0c4f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.BaseStubbing</span></td><td><code>7fb9abb0c3eadb7f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.ConsecutiveStubbing</span></td><td><code>557234368bf5ca41</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.DoAnswerStyleStubbing</span></td><td><code>6e7ca0308caa0784</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.InvocationContainerImpl</span></td><td><code>6fc98009157aaa61</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.OngoingStubbingImpl</span></td><td><code>747b28f7f0499aba</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.StubbedInvocationMatcher</span></td><td><code>73693c29dbd5f1d4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.StubberImpl</span></td><td><code>0598892699f1408c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.AbstractThrowsException</span></td><td><code>4d8774faf570ee8b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.CallsRealMethods</span></td><td><code>e57edbc68b0e39e6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.DefaultAnswerValidator</span></td><td><code>bc157688cbf26d9c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.InvocationInfo</span></td><td><code>35c4a7d4431e2604</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.Returns</span></td><td><code>419d0de7c8cd9ec2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.ThrowsException</span></td><td><code>d5453a6546fff054</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer</span></td><td><code>b4af5d0cc4127c43</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs</span></td><td><code>9290a19f5dbdf1b2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsEmptyValues</span></td><td><code>46f5568049a76ee7</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsMocks</span></td><td><code>99d9220ab6ee9e86</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsMoreEmptyValues</span></td><td><code>708bd411a28382b5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls</span></td><td><code>f434f2f732e6e80e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.TriesToReturnSelf</span></td><td><code>13e6f22c3923267d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.Checks</span></td><td><code>693b7ec3dc9db88a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.ConsoleMockitoLogger</span></td><td><code>f6ec54a756328702</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.DefaultMockingDetails</span></td><td><code>445b7a7104a677ce</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.KotlinInlineClassUtil</span></td><td><code>8f2e65801baf9ad5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockCreationValidator</span></td><td><code>83a10f2760252cf3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockNameImpl</span></td><td><code>009cd5fc276ed0dd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockUtil</span></td><td><code>283cf2a045158285</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.ObjectMethodsGuru</span></td><td><code>e958146f93547352</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.Platform</span></td><td><code>4668ecfd22ecc7e7</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.Primitives</span></td><td><code>f31d8bebbb09f0aa</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.Iterables</span></td><td><code>f7eb3a38de601237</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal</span></td><td><code>24c845c0cee0c23b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal.1</span></td><td><code>defaf890898faa64</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal.Cleaner</span></td><td><code>fe82f09eda153c82</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap</span></td><td><code>317df0cbe9bf65e4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.LatentKey</span></td><td><code>49d0008ff01c2270</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.WeakKey</span></td><td><code>c9b8ab481aee9c32</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.WithInlinedExpunction</span></td><td><code>2900bb8f66594337</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentSet</span></td><td><code>01665a2956990716</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentSet.Cleaner</span></td><td><code>8e47207f365780a7</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport</span></td><td><code>0dc06bb2a25f935e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.FromClassGenericMetadataSupport</span></td><td><code>719fc73727f5e855</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.NotGenericReturnTypeSupport</span></td><td><code>53a5fe206788d096</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.ParameterizedReturnType</span></td><td><code>d0b181f635488268</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.TypeVarBoundedType</span></td><td><code>23715d46dd3a1f03</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.TypeVariableReturnType</span></td><td><code>1b0bc548fe6ad52f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.InstrumentationMemberAccessor</span></td><td><code>00b247ec3e952710</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.ModuleMemberAccessor</span></td><td><code>df6459cdb157634f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.AtLeast</span></td><td><code>742247f606a7d3c4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.DefaultRegisteredInvocations</span></td><td><code>48184ff2108397ec</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.MockAwareVerificationMode</span></td><td><code>140035dc62d048aa</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.Times</span></td><td><code>ce9c3ea7bcdbf3e4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationDataImpl</span></td><td><code>960bc0e7bc4cb209</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationEventImpl</span></td><td><code>c5d4f54b84a790e3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationModeFactory</span></td><td><code>9d00ab6e5382924b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.checkers.AtLeastXNumberOfInvocationsChecker</span></td><td><code>129db1498c6df606</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.checkers.MissingInvocationChecker</span></td><td><code>bc21ba1054e605b2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.checkers.NumberOfInvocationsChecker</span></td><td><code>bd3469583e9e6716</code></td></tr><tr><td><span class="el_class">org.mockito.mock.MockType</span></td><td><code>0b5105452bbd0790</code></td></tr><tr><td><span class="el_class">org.mockito.mock.SerializableMode</span></td><td><code>d8db118920e53367</code></td></tr><tr><td><span class="el_class">org.mockito.plugins.DoNotMockEnforcer</span></td><td><code>d84a80636a3b2091</code></td></tr><tr><td><span class="el_class">org.mockito.plugins.DoNotMockEnforcer.Cache</span></td><td><code>7ad724250d9a8fd2</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisBase</span></td><td><code>0c1d2fd83029257f</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisStd</span></td><td><code>f35c83a75caea811</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.BaseInstantiatorStrategy</span></td><td><code>b0aaa6460452f5ce</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.StdInstantiatorStrategy</span></td><td><code>abae05ba56ea35a6</code></td></tr><tr><td><span class="el_class">org.slf4j.Logger.MockitoMock.L4gDphJy</span></td><td><code>5cbea920ba5ef300</code></td></tr><tr><td><span class="el_class">org.slf4j.LoggerFactory</span></td><td><code>45630a2ef9211bd2</code></td></tr><tr><td><span class="el_class">org.slf4j.MDC</span></td><td><code>21c0421f945a1458</code></td></tr><tr><td><span class="el_class">org.slf4j.event.Level</span></td><td><code>4ced2c509667233d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.AbstractLogger</span></td><td><code>0927772f80afa51d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMDCAdapter</span></td><td><code>354fafb117483fdb</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMDCAdapter.1</span></td><td><code>8f0671fb507009fb</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.BasicMarkerFactory</span></td><td><code>d8e0b7e9d11b515c</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.FormattingTuple</span></td><td><code>f769e1b68746078d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.LegacyAbstractLogger</span></td><td><code>9c0bab469712e43b</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.MessageFormatter</span></td><td><code>e2bc58b82ebe1d3d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPLogger</span></td><td><code>cc3b71486cb54cd0</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPLoggerFactory</span></td><td><code>eaf704972ef7000c</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPMDCAdapter</span></td><td><code>d816a97d0b663014</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOP_FallbackServiceProvider</span></td><td><code>44c4aa253bad3620</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NamedLoggerBase</span></td><td><code>839cd505f1335986</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter</span></td><td><code>c9b912a7116daa87</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter.Level</span></td><td><code>07530b930aa1c996</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Reporter.TargetChoice</span></td><td><code>0aa347cd82827a6b</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteLoggerFactory</span></td><td><code>2c5fb1b0f92b644d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteServiceProvider</span></td><td><code>c99ff2d1c9be6145</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.ThreadLocalMapOfStacks</span></td><td><code>2b24a935616f8730</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Util</span></td><td><code>859d67cf0632e467</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.OutputChoice</span></td><td><code>1210473ae6c23a02</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.OutputChoice.OutputChoiceType</span></td><td><code>b1a3560a9741f5b4</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLogger</span></td><td><code>1d2d4d9ea2830f3d</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLoggerConfiguration</span></td><td><code>1f2875dbbf5941d4</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleLoggerFactory</span></td><td><code>e94c2f64e0e452e9</code></td></tr><tr><td><span class="el_class">org.slf4j.simple.SimpleServiceProvider</span></td><td><code>ce6bc4ce1561b64c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsBasicCredentials</span></td><td><code>19883cefe77024a5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsBasicCredentials.Builder</span></td><td><code>97f5f8020a1ea7c2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsCredentialsProvider</span></td><td><code>8e95f9cba3790394</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain</span></td><td><code>0407ec4efd26a883</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain.Builder</span></td><td><code>fdf015c81312401f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain.BuilderImpl</span></td><td><code>044cf86baa3bfe39</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider</span></td><td><code>5bd25ef0235b6249</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider.BuilderImpl</span></td><td><code>675e662bad4f63bd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.CredentialUtils</span></td><td><code>7aef522267f96684</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider</span></td><td><code>e60fabf2324227d4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider.Builder</span></td><td><code>2e3e319748dc5973</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider</span></td><td><code>5bdd8b11c9750151</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider</span></td><td><code>09fbccd6f8e41286</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider.BuilderImpl</span></td><td><code>79b948b38772514b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider</span></td><td><code>52f4207558825474</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider.BuilderImpl</span></td><td><code>dec8632ff0f011e6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.StaticCredentialsProvider</span></td><td><code>49b708f44491173f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.SystemPropertyCredentialsProvider</span></td><td><code>3f8eff4439467335</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider</span></td><td><code>569d2b9eb2d34926</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider.BuilderImpl</span></td><td><code>7bb561af41b5f508</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.internal.Ec2MetadataConfigProvider</span></td><td><code>2a3376fa7a1f8d36</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.internal.Ec2MetadataConfigProvider.Builder</span></td><td><code>e8a19a68d7c6145e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.internal.HttpCredentialsLoader</span></td><td><code>9394e617670bbd5c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.internal.LazyAwsCredentialsProvider</span></td><td><code>95ffe411d766ef04</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.credentials.internal.SystemSettingsCredentialsProvider</span></td><td><code>d7a75e960906b1ff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.signer.AwsSignerExecutionAttribute</span></td><td><code>a1b7c1bfa39363d1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.signer.AwsSignerExecutionAttribute.UnsetHttpSigner</span></td><td><code>2bc1dfba44878f79</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.auth.signer.AwsSignerExecutionAttribute.UnsetIdentity</span></td><td><code>b732528c3b51318a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.AwsExecutionAttribute</span></td><td><code>ea6f7589f757dda1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.AwsRequest</span></td><td><code>2d0162cf73f61849</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.AwsRequest.BuilderImpl</span></td><td><code>aca910d6fafc17d7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.AwsResponse</span></td><td><code>686a855ed0114bc2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.AwsResponse.BuilderImpl</span></td><td><code>524394e86ac85152</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver</span></td><td><code>9a7b14139d3330d9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver.Builder</span></td><td><code>554d2b966f17273b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.builder.AwsClientBuilder</span></td><td><code>25b9d783288ef3de</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder</span></td><td><code>31152f45c4606eda</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.config.AwsAdvancedClientOption</span></td><td><code>23b95dbf73705ace</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.config.AwsClientOption</span></td><td><code>aab3589aee525305</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler</span></td><td><code>f0ee2519149aca27</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.Crc32ValidationResponseHandler</span></td><td><code>d9de581b369aee1d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.defaultsmode.DefaultsMode</span></td><td><code>2bdd602a09efa1ac</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider</span></td><td><code>008369ca058a0841</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider.Builder</span></td><td><code>8707f400132ec976</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider.ClientEndpoint</span></td><td><code>34f903c1d84250db</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.DualstackEnabledProvider</span></td><td><code>58abc1e2a2c5d1b6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.DualstackEnabledProvider.Builder</span></td><td><code>bc59b0128143899e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.FipsEnabledProvider</span></td><td><code>260e33d5bf5b8179</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.endpoint.FipsEnabledProvider.Builder</span></td><td><code>399e8374f177dcb3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor</span></td><td><code>be11c42248685aa6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor</span></td><td><code>d2a3ed23c1a3b74e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor</span></td><td><code>c08c115336ccaa47</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.AwsExecutionContextBuilder</span></td><td><code>6b90c8f6d5a2d4bb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.AwsProtocolMetadata</span></td><td><code>21d2618b997395a9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.AwsProtocolMetadata.Builder</span></td><td><code>db66c184bcf91b0e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.AwsServiceProtocol</span></td><td><code>4aad3428acf90e20</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.auth.Sigv4aSigningRegionSetProvider</span></td><td><code>be89138abbd80829</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.auth.Sigv4aSigningRegionSetProvider.Builder</span></td><td><code>35b65dec920d4420</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.client.config.AwsClientOptionValidation</span></td><td><code>456d5e5559d78caf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.defaultsmode.AutoDefaultsModeDiscovery</span></td><td><code>3511d6d4c441d656</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.defaultsmode.DefaultsModeConfiguration</span></td><td><code>4ac8a6c922ceada6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.internal.defaultsmode.DefaultsModeResolver</span></td><td><code>3c2f96ca28d44db9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.retry.AwsRetryStrategy</span></td><td><code>8f2e317f279466bd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.retry.AwsRetryStrategy.1</span></td><td><code>c459575e929c8070</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.awscore.retry.AwsRetryStrategy.2</span></td><td><code>fc754146e6f90da6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.ClientType</span></td><td><code>bf843bd7c0301760</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.CompressionConfiguration</span></td><td><code>59304d6f120f4509</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.CompressionConfiguration.DefaultBuilder</span></td><td><code>635a52268cf953f2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkField</span></td><td><code>78b8b4bb4fb716b4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkField.Builder</span></td><td><code>efe5f572471d3bd0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkGlobalTime</span></td><td><code>58183d98d537162f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkRequest</span></td><td><code>3d32ce224ec10358</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkResponse</span></td><td><code>6902730f6f3b580f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkResponse.BuilderImpl</span></td><td><code>d12d14e9571f10b3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SdkSystemSetting</span></td><td><code>f8125208621bc577</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.SelectedAuthScheme</span></td><td><code>67b9261d2ab81dec</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.builder.SdkClientBuilder</span></td><td><code>043850f190ffa7f4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder</span></td><td><code>9473aa3685e421f2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.NonManagedSdkHttpClient</span></td><td><code>da0a1374a5d98ec0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.ClientOption</span></td><td><code>ac484473b42d257b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.ClientOverrideConfiguration</span></td><td><code>e6c639c438df5755</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.ClientOverrideConfiguration.Builder</span></td><td><code>80785540eff02c78</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.ClientOverrideConfiguration.DefaultBuilder</span></td><td><code>5c1b77d4bc93014c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.SdkAdvancedClientOption</span></td><td><code>993214a2681ed0e4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.SdkClientConfiguration</span></td><td><code>3248e843eef36476</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.SdkClientConfiguration.Builder</span></td><td><code>fe9a1b6416841e86</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.SdkClientOption</span></td><td><code>f4265cde6ff91b36</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.config.SdkClientOptionValidation</span></td><td><code>5cdc94d47dc58214</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.handler.ClientExecutionParams</span></td><td><code>2e6d948152855c5b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.client.handler.SdkSyncClientHandler</span></td><td><code>7fb642ae0f907c30</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.exception.SdkClientException</span></td><td><code>c89dc41f2edf0fd6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.exception.SdkClientException.BuilderImpl</span></td><td><code>662159579148c93d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.exception.SdkException</span></td><td><code>1af4df2b6aef7fdd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.exception.SdkException.BuilderImpl</span></td><td><code>a192b1e542a0cfd7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.http.HttpResponseHandler</span></td><td><code>70b4db293464a565</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.http.MetricCollectingHttpResponseHandler</span></td><td><code>e5b05eab053e1e74</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ClasspathInterceptorChainFactory</span></td><td><code>21754097cc4f7e64</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute</span></td><td><code>6b89ca99722de055</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute.DefaultValueStorage</span></td><td><code>b4cbf7343721f779</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute.DerivationValueStorage</span></td><td><code>8b0b4305aa4b6e6b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute.DerivedAttributeBuilder</span></td><td><code>6618f604b3461e1f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute.MappedAttributeBuilder</span></td><td><code>f9c3fce90dac0db3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttribute.MappedValueStorage</span></td><td><code>4a39e418bafa3632</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttributes</span></td><td><code>cc42bbdb8b2022c3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionAttributes.UnmodifiableExecutionAttributes</span></td><td><code>6f59125e6bc7dae1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionInterceptor</span></td><td><code>231eccbcfd20b209</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain</span></td><td><code>702caff07edd3999</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.InterceptorContext</span></td><td><code>79c2e75207eb7592</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.InterceptorContext.Builder</span></td><td><code>eb6ac7e9ebb7da37</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.SdkExecutionAttribute</span></td><td><code>20bd43b82e683eb1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.interceptor.SdkInternalExecutionAttribute</span></td><td><code>5ba6e77421dcd4df</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.InternalCoreExecutionAttribute</span></td><td><code>204ebc99e86739fc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.SdkInternalTestAdvancedClientOption</span></td><td><code>1a4c5c1c54187114</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.handler.BaseClientHandler</span></td><td><code>d4b2a0030023b41b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler</span></td><td><code>48d1945e5dbeced5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient</span></td><td><code>6ae2de85ca754ffd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.HttpClientDependencies</span></td><td><code>f4b73c5fc26d15bc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.HttpClientDependencies.Builder</span></td><td><code>64a60d1d7ed7c2eb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.SdkClientTime</span></td><td><code>e03485d7d93d07f8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.CachingSdkHttpServiceProvider</span></td><td><code>46bd48d3d793f2d7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.ClasspathSdkHttpServiceProvider</span></td><td><code>b5da6582ad3c5aa1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.DefaultSdkAsyncHttpClientBuilder</span></td><td><code>d7a61660a818766f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.DefaultSdkHttpClientBuilder</span></td><td><code>9258b5a7cd8619ea</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.SdkHttpServiceProviderChain</span></td><td><code>a90ea94b980a36aa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.SdkServiceLoader</span></td><td><code>f3eda0751a342038</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.http.loader.SystemPropertyHttpServiceProvider</span></td><td><code>98a81bb06f5030ff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor</span></td><td><code>08c5801c25ebb5a1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.retry.ClockSkewAdjuster</span></td><td><code>194c6971c13fe269</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.retry.SdkDefaultRetrySetting</span></td><td><code>b977755c3080dde5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.retry.SdkDefaultRetryStrategy</span></td><td><code>f2f8c33a389127d5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.retry.SdkDefaultRetryStrategy.1</span></td><td><code>71dc02bb55649d28</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.AppIdResolver</span></td><td><code>99f42df237d3456a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.BusinessMetricsUtils</span></td><td><code>4f2c47147a72cd4e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.DefaultSystemUserAgent</span></td><td><code>52906e90bcc8c98c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.SdkClientUserAgentProperties</span></td><td><code>86da2584d60ad53c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.SdkUserAgentBuilder</span></td><td><code>de1ef2ed9bf6671a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.UserAgentConstant</span></td><td><code>976d0b2c02391989</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.useragent.UserAgentLangValues</span></td><td><code>798a4e1b469833e4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.util.ClassLoaderHelper</span></td><td><code>684529fe4f05942a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.util.HttpChecksumResolver</span></td><td><code>f76785fa0a9ca7b9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.internal.util.MetricUtils</span></td><td><code>8062def3aebdbde7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.metrics.CoreMetric</span></td><td><code>4de4b4130785ba50</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.protocol.MarshallLocation</span></td><td><code>c0e82b5e5d46b033</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.protocol.MarshallingKnownType</span></td><td><code>773ebf46bd77671d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.protocol.MarshallingType</span></td><td><code>ffbbb9e6737850d8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.protocol.MarshallingType.1</span></td><td><code>51e16eea82d345db</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.retry.RetryMode</span></td><td><code>de8d5a70641e2dae</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.retry.RetryMode.Resolver</span></td><td><code>17095ed64959f4c9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.ListTrait</span></td><td><code>2a32048e24dc84ce</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.ListTrait.Builder</span></td><td><code>2a8c98c2837b415b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.LocationTrait</span></td><td><code>221b34a31cee04a5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.LocationTrait.Builder</span></td><td><code>807457d2be1d6580</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.TimestampFormatTrait.Format</span></td><td><code>abfb580c6aefd9b7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.traits.TraitType</span></td><td><code>b1da4142c621db36</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.useragent.BusinessMetricCollection</span></td><td><code>6ef1c327605c32c2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.useragent.BusinessMetricFeatureId</span></td><td><code>0e5b11dc6af8c5cf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.util.DefaultSdkAutoConstructList</span></td><td><code>c2ba004c10e367e3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.core.util.SystemUserAgent</span></td><td><code>78058351a2d1bf06</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.Protocol</span></td><td><code>c23bb0d95b6d3159</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.ProtocolNegotiation</span></td><td><code>06ff530ec0e7ecdf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.SdkHttpClient.Builder</span></td><td><code>3e0cd37e532ba686</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.SdkHttpConfigurationOption</span></td><td><code>b429543432622a8d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.SdkHttpMethod</span></td><td><code>f39abbc847ae1e80</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.SystemPropertyTlsKeyManagersProvider</span></td><td><code>c81347825e35c22a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ApacheHttpClient</span></td><td><code>b69a0767a2752b52</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ApacheHttpClient.ApacheConnectionManagerFactory</span></td><td><code>5f1cd631980ff799</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ApacheHttpClient.DefaultBuilder</span></td><td><code>5527f1baa0188670</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ApacheSdkHttpService</span></td><td><code>171abefb844986ab</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ProxyConfiguration</span></td><td><code>36dd4973177062bf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.ProxyConfiguration.DefaultClientProxyConfigurationBuilder</span></td><td><code>d38ad7b20455e648</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.ApacheHttpRequestConfig</span></td><td><code>c3411a612628b239</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.ApacheHttpRequestConfig.Builder</span></td><td><code>2b5e985e1c25843f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.DefaultConfiguration</span></td><td><code>227261f8255e1626</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory</span></td><td><code>695a9fdf23178268</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory.DelegatingHttpClientConnectionManager</span></td><td><code>5808ca18d2aa05d0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory.InstrumentedHttpClientConnectionManager</span></td><td><code>5042ea9bcb982375</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.IdleConnectionReaper</span></td><td><code>316588a69fa3d909</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.IdleConnectionReaper.ReaperTask</span></td><td><code>f6c28848e7f2b9fe</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.SdkConnectionKeepAliveStrategy</span></td><td><code>e170f6397671f23a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory</span></td><td><code>930da8695647dd85</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.impl.ApacheHttpRequestFactory</span></td><td><code>f9501354df514164</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.apache.internal.impl.ApacheSdkHttpClient</span></td><td><code>b7c0ed8050e62c15</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.aws.internal.scheme.DefaultAwsV4AuthScheme</span></td><td><code>52ccef63a61c3739</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.aws.internal.signer.DefaultAwsV4HttpSigner</span></td><td><code>a43fdd04089e2148</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.aws.scheme.AwsV4AuthScheme</span></td><td><code>899e6a5657a12b6d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.aws.signer.AwsV4FamilyHttpSigner</span></td><td><code>f201eb44bf2dd555</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner</span></td><td><code>3b56a0b3cffac8d9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.internal.scheme.DefaultNoAuthAuthScheme</span></td><td><code>104f196d914d4898</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.internal.scheme.DefaultNoAuthAuthScheme.1</span></td><td><code>b7aaf3e3e9e8c5cc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.internal.scheme.DefaultNoAuthAuthScheme.2</span></td><td><code>b0effb7c5cbc7c6e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.internal.scheme.DefaultNoAuthAuthScheme.3</span></td><td><code>09b33d7ac985b655</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.scheme.NoAuthAuthScheme</span></td><td><code>8c55f70f71da89c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.spi.internal.scheme.DefaultAuthSchemeOption</span></td><td><code>ecfb31971377720d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.spi.internal.scheme.DefaultAuthSchemeOption.BuilderImpl</span></td><td><code>9d661eaff6056fff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption</span></td><td><code>7c3da0dddb4af932</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.spi.signer.HttpSigner</span></td><td><code>2d4a37dee641f84e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.http.auth.spi.signer.SignerProperty</span></td><td><code>896de69f9e160065</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.IdentityProviders</span></td><td><code>64800ee4e649d592</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.ResolveIdentityRequest</span></td><td><code>7f638fe7d6540050</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.internal.DefaultIdentityProviders</span></td><td><code>c225eaca7e691c90</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.internal.DefaultIdentityProviders.BuilderImpl</span></td><td><code>ef37297eab1fd47b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.internal.DefaultResolveIdentityRequest</span></td><td><code>1323ab9e5199871b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.identity.spi.internal.DefaultResolveIdentityRequest.BuilderImpl</span></td><td><code>44b60e8a8d37b827</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.internal.http.AbstractFileStoreTlsKeyManagersProvider</span></td><td><code>5713a082c5c3e19d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.metrics.MetricCategory</span></td><td><code>f3f0226795a3474b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.metrics.MetricLevel</span></td><td><code>cb577160adbb399c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.metrics.NoOpMetricCollector</span></td><td><code>381c892d295dc42d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.metrics.SdkMetric</span></td><td><code>71a1696fc05ccbfd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.metrics.internal.DefaultSdkMetric</span></td><td><code>ccf1a2cc1e0ab37f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.profiles.ProfileFile</span></td><td><code>c30d35d5579bf326</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.profiles.ProfileFile.Aggregator</span></td><td><code>7f036d1662591a7a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.profiles.ProfileFileLocation</span></td><td><code>b032f87997bbf7bc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.profiles.ProfileFileSupplier</span></td><td><code>41edc7d55c9894f9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.profiles.ProfileFileSystemSetting</span></td><td><code>5a3faed6553e8bbc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry</span></td><td><code>37e6a03a726a1a8e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry.Builder</span></td><td><code>0699c92f3b576518</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry.MarshallingLocationRegistry</span></td><td><code>ffeca69eb17cbf7d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry.MarshallingLocationRegistry.Builder</span></td><td><code>57ba71afc0176517</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry.MarshallingTypeRegistry</span></td><td><code>a5ff7d949724a130</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.AbstractMarshallingRegistry.MarshallingTypeRegistry.Builder</span></td><td><code>833f47cf797d6d23</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.OperationInfo</span></td><td><code>4775197685e8ea5f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.OperationInfo.Builder</span></td><td><code>626328089745776c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.OperationMetadataAttribute</span></td><td><code>914bcdd0879eac01</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.StringToInstant</span></td><td><code>ab7b67d4d7364957</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.core.StringToValueConverter</span></td><td><code>49fac6d7b7f10cd4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.AwsJsonProtocol</span></td><td><code>0036e9de36b2957a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory</span></td><td><code>3fa93bc5d097be6e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory.Builder</span></td><td><code>c861809c432b03c2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.AwsJsonProtocolMetadata</span></td><td><code>b462ad7a1f0bd0c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.AwsJsonProtocolMetadata.Builder</span></td><td><code>00ce3bc5a51c4847</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory</span></td><td><code>d605f41fa62d1e8d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory.Builder</span></td><td><code>abbf9f62177bfca5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.BaseAwsStructuredJsonFactory</span></td><td><code>3505db71ea5d836c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.DefaultJsonContentTypeResolver</span></td><td><code>f7b072baf018b09c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.JsonOperationMetadata</span></td><td><code>878514823f46cb01</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.JsonOperationMetadata.Builder</span></td><td><code>4ffe08c06c3ddd97</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.AwsStructuredPlainJsonFactory</span></td><td><code>86c0efd9987dba7d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.AwsStructuredPlainJsonFactory.1</span></td><td><code>e2a8ae9567921643</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.AwsJsonErrorMessageParser</span></td><td><code>7cf7de08b4fb6903</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.AwsJsonProtocolErrorUnmarshaller</span></td><td><code>2930a368aec8a60a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.AwsJsonProtocolErrorUnmarshaller.Builder</span></td><td><code>a8e9d07bd7fbc7cd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.AwsJsonResponseHandler</span></td><td><code>1ef322088f8e446a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.DefaultJsonUnmarshallerRegistry</span></td><td><code>99a141d1dcc759f0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.DefaultJsonUnmarshallerRegistry.Builder</span></td><td><code>ebd080b9533d1380</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.DefaultProtocolUnmarshallDependencies</span></td><td><code>e0069063cdc9e3ac</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.DefaultProtocolUnmarshallDependencies.Builder</span></td><td><code>14068189d6880cb1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.HeaderUnmarshaller</span></td><td><code>1d6e1390f99e5ccc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.HeaderUnmarshaller.SimpleHeaderUnmarshaller</span></td><td><code>e48754831551210c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonErrorCodeParser</span></td><td><code>56bed54e9cf54a5d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonProtocolUnmarshaller</span></td><td><code>caeceae1b626e9c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonProtocolUnmarshaller.Builder</span></td><td><code>b64803cee1a4a1ff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonProtocolUnmarshaller.SimpleTypeJsonUnmarshaller</span></td><td><code>8b624622c00e2f32</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonResponseHandler</span></td><td><code>2a3068730c5f0643</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonUnmarshallingParser</span></td><td><code>be71da717bb8ef99</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.JsonUnmarshallingParser.Builder</span></td><td><code>5b95baaebf0bc98f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.SdkClientJsonProtocolAdvancedOption</span></td><td><code>2132828734bd54db</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.json.internal.unmarshall.SdkJsonErrorMessageParser</span></td><td><code>ed166f186a71016f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.jsoncore.JsonNodeParser</span></td><td><code>88af7260fa3ea03a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.jsoncore.JsonNodeParser.Builder</span></td><td><code>9a439cd294297960</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.protocols.jsoncore.JsonValueNodeFactory</span></td><td><code>464c48017563bd5b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.EndpointTag</span></td><td><code>876d8cba0b8b94b9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.EndpointTag.EndpointTagCache</span></td><td><code>5a457d32f45d409b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.GeneratedPartitionMetadataProvider</span></td><td><code>be07c6580ac06b00</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.GeneratedRegionMetadataProvider</span></td><td><code>ec2593ec5e9a92f8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.GeneratedServiceMetadataProvider</span></td><td><code>78e686595c4d9839</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.PartitionEndpointKey</span></td><td><code>96efa2b1f33c9740</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.PartitionEndpointKey.DefaultBuilder</span></td><td><code>d0e2605c7f119ea8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.PartitionMetadata</span></td><td><code>07495fd3e95f3890</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.Region</span></td><td><code>abf87652054d8df2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.Region.RegionCache</span></td><td><code>f49b5c5e3bf0c020</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceEndpointKey</span></td><td><code>1365063e61437fa6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceEndpointKey.DefaultBuilder</span></td><td><code>096cfb4acdc4bd1a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceMetadata</span></td><td><code>2537da5cda2351bf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceMetadataAdvancedOption</span></td><td><code>94c79877e87d28aa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceMetadataConfiguration</span></td><td><code>27c0c88ddb2eba33</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.ServiceMetadataConfiguration.Builder</span></td><td><code>d755a0e643dd669c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.internal.DefaultServicePartitionMetadata</span></td><td><code>4b64c2d1d767f2e9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.internal.MetadataLoader</span></td><td><code>6e1ee966ea99f50d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.internal.util.ServiceMetadataUtils</span></td><td><code>8956053efc04782e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsCnPartitionMetadata</span></td><td><code>0bd505d5ee4c6dfd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsEuscPartitionMetadata</span></td><td><code>35769b0d5a017f0b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsIsoBPartitionMetadata</span></td><td><code>a31879f742c9e86c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsIsoEPartitionMetadata</span></td><td><code>846263e7bae6317a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsIsoFPartitionMetadata</span></td><td><code>f751e2c6614ff63b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsIsoPartitionMetadata</span></td><td><code>e9feb530afb663a5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsPartitionMetadata</span></td><td><code>fff112d5b72e1deb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.partitionmetadata.AwsUsGovPartitionMetadata</span></td><td><code>61d1e17909742f1c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AfSouth1</span></td><td><code>b9d16063e74bb8bc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApEast1</span></td><td><code>81625bdda2a918d0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApEast2</span></td><td><code>cafa58079c3d1c73</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApNortheast1</span></td><td><code>7a02b86594a31822</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApNortheast2</span></td><td><code>434ea642f44dc565</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApNortheast3</span></td><td><code>a1a7739b10bd6546</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSouth1</span></td><td><code>3e691161fec32e01</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSouth2</span></td><td><code>309cb58ea102eea5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast1</span></td><td><code>3d2f90ddcc503729</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast2</span></td><td><code>7d0e1ab889035409</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast3</span></td><td><code>063a13e9db6e6b63</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast4</span></td><td><code>fc93fa973cf82180</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast5</span></td><td><code>fdd02680d7312318</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast6</span></td><td><code>d0c6d85f0417cb2f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.ApSoutheast7</span></td><td><code>dbbcd516cdf909fd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsCnGlobal</span></td><td><code>ca81dcf0d2eb8c9e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsGlobal</span></td><td><code>641f861cdbfaf86c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsIsoBGlobal</span></td><td><code>f5ad0f971d959802</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsIsoEGlobal</span></td><td><code>86b1f4659604782c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsIsoFGlobal</span></td><td><code>6e058fcf3007ba56</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsIsoGlobal</span></td><td><code>2832a2bd0454f8d1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.AwsUsGovGlobal</span></td><td><code>8f453a36a1b5f488</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.CaCentral1</span></td><td><code>4f76227b2d39c196</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.CaWest1</span></td><td><code>ce2355f5906afef7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.CnNorth1</span></td><td><code>40f0e04cb67a2d93</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.CnNorthwest1</span></td><td><code>26508894892e7d4e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuCentral1</span></td><td><code>0eeac62cc5f9d808</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuCentral2</span></td><td><code>6f78f9f35bdfb38f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuIsoeWest1</span></td><td><code>73257bd2b29ae7d3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuNorth1</span></td><td><code>81f486587fff2d94</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuSouth1</span></td><td><code>b716ee69cf197f79</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuSouth2</span></td><td><code>c5db7c0a5a2b406f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuWest1</span></td><td><code>20a7cc728d1516dc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuWest2</span></td><td><code>92602ffe94a63307</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuWest3</span></td><td><code>c20c590ba8064f80</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.EuscDeEast1</span></td><td><code>3c996e4c82e64e5c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.IlCentral1</span></td><td><code>241ea44b04eb32e1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.MeCentral1</span></td><td><code>b4aba88c588ea3f4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.MeSouth1</span></td><td><code>37717508d3f69293</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.MxCentral1</span></td><td><code>27623a0e44b6e589</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.SaEast1</span></td><td><code>3744a504d8c65e86</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsEast1</span></td><td><code>968b410f6797c481</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsEast2</span></td><td><code>aed4d168e9f47fbf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsGovEast1</span></td><td><code>0e15ac74882b4992</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsGovWest1</span></td><td><code>072f86bd47dc6760</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsoEast1</span></td><td><code>e860061329e0a35a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsoWest1</span></td><td><code>a20b2d876ca50426</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsobEast1</span></td><td><code>6496a4976a29fef6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsobWest1</span></td><td><code>b75d63a74f391d0d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsofEast1</span></td><td><code>06871a0aa4c960a0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsIsofSouth1</span></td><td><code>111116217ce31eb0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsWest1</span></td><td><code>51369f6ecf8fc221</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.regionmetadata.UsWest2</span></td><td><code>ee52624cedea7c4e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AccessAnalyzerServiceMetadata</span></td><td><code>f8f8b8f50d5b6742</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AccountServiceMetadata</span></td><td><code>0339017b07091b52</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AcmPcaServiceMetadata</span></td><td><code>cd6be73a82f6809c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AcmServiceMetadata</span></td><td><code>b874662232077761</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AgreementMarketplaceServiceMetadata</span></td><td><code>a505724e438dc345</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AirflowServiceMetadata</span></td><td><code>b7de2719ee6bed83</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AmplifyServiceMetadata</span></td><td><code>a668645baab67ba8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AmplifybackendServiceMetadata</span></td><td><code>42cf36e3d7083337</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AmplifyuibuilderServiceMetadata</span></td><td><code>6a765f237ca1e991</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AossServiceMetadata</span></td><td><code>ecfb0fa126241ef7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiDetectiveServiceMetadata</span></td><td><code>eb1f963379005747</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiEcrPublicServiceMetadata</span></td><td><code>970c87bfc6b58a83</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiEcrServiceMetadata</span></td><td><code>e8f75a2d4bfecd37</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiIotdeviceadvisorServiceMetadata</span></td><td><code>349123e59dc87dc3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiIotwirelessServiceMetadata</span></td><td><code>1cd327696875c941</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiMediatailorServiceMetadata</span></td><td><code>b54af9fba95e632d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiPricingServiceMetadata</span></td><td><code>d3bef36f3899ff24</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiSagemakerServiceMetadata</span></td><td><code>e533e5baa799b916</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApiTunnelingIotServiceMetadata</span></td><td><code>b7943536f8b854d2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApigatewayServiceMetadata</span></td><td><code>0ddc5bfe1b66ed32</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppIntegrationsServiceMetadata</span></td><td><code>2a05200b9bc71c0e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppconfigServiceMetadata</span></td><td><code>c5256ff942549f70</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppconfigdataServiceMetadata</span></td><td><code>8853dda5e1d0bfca</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppflowServiceMetadata</span></td><td><code>bd6dd3bc397371c7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApplicationAutoscalingServiceMetadata</span></td><td><code>5071d962c79e089d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApplicationinsightsServiceMetadata</span></td><td><code>0d1e5e67f7575182</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppmeshServiceMetadata</span></td><td><code>8f95664e7fd827c6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApprunnerServiceMetadata</span></td><td><code>6c1072d8413c0e34</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Appstream2ServiceMetadata</span></td><td><code>d49ca92c643c3a10</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AppsyncServiceMetadata</span></td><td><code>18635f6d7f358bb0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ApsServiceMetadata</span></td><td><code>a699c75f03d14060</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ArcZonalShiftServiceMetadata</span></td><td><code>2fb80e663bba8339</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AthenaServiceMetadata</span></td><td><code>9debb08c5dea1e74</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AuditmanagerServiceMetadata</span></td><td><code>efdd108552bfe56f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AutoscalingPlansServiceMetadata</span></td><td><code>e78766378b08c53f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.AutoscalingServiceMetadata</span></td><td><code>9a83fdb68dc75fd6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BackupGatewayServiceMetadata</span></td><td><code>894b7bdbd4ea94ad</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BackupServiceMetadata</span></td><td><code>684a21c410e4c1d3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BatchServiceMetadata</span></td><td><code>bffb3cf3f75be5c8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BedrockServiceMetadata</span></td><td><code>c9bb366740f8d4a8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BillingconductorServiceMetadata</span></td><td><code>d34bcd7748d63546</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BraketServiceMetadata</span></td><td><code>edf3e3e229f88025</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.BudgetsServiceMetadata</span></td><td><code>f9cd7023374beff7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CasesServiceMetadata</span></td><td><code>1115d92cb017ab9b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CassandraServiceMetadata</span></td><td><code>338e84c957ea5a40</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CatalogMarketplaceServiceMetadata</span></td><td><code>0eb953c9039995d6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CeServiceMetadata</span></td><td><code>4b2b3770f070148b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ChimeServiceMetadata</span></td><td><code>77a30c023e16ce35</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CleanroomsServiceMetadata</span></td><td><code>681bdd1b579c9896</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Cloud9ServiceMetadata</span></td><td><code>c11bc20c3cf4acda</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudcontrolapiServiceMetadata</span></td><td><code>27a23784c7b6d827</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ClouddirectoryServiceMetadata</span></td><td><code>3934b59c9a65b298</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudformationServiceMetadata</span></td><td><code>fec293a959b23ec3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudfrontServiceMetadata</span></td><td><code>49ca3d5a0ffc2bb2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudhsmServiceMetadata</span></td><td><code>edcfba1090fe270c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Cloudhsmv2ServiceMetadata</span></td><td><code>c3cba8e29a772e12</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudsearchServiceMetadata</span></td><td><code>e1983e0f6f0dd645</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudtrailDataServiceMetadata</span></td><td><code>cd214c042104a42e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CloudtrailServiceMetadata</span></td><td><code>7b32e7b271e5fed6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodeartifactServiceMetadata</span></td><td><code>ecd36c08b3bbb5be</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodebuildServiceMetadata</span></td><td><code>57f57d5d2f9bdb80</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodecatalystServiceMetadata</span></td><td><code>2817423e8788f7e3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodecommitServiceMetadata</span></td><td><code>29018edd8e09ee72</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodedeployServiceMetadata</span></td><td><code>e2cfaa066e265bca</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodeguruProfilerServiceMetadata</span></td><td><code>5638c6f67bc6b57e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodeguruReviewerServiceMetadata</span></td><td><code>6270d44c550b698c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodepipelineServiceMetadata</span></td><td><code>c1d2f406cdff527d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodestarConnectionsServiceMetadata</span></td><td><code>dc935ffba30b424f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CodestarNotificationsServiceMetadata</span></td><td><code>5927fa55a6fd127f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CognitoIdentityServiceMetadata</span></td><td><code>02b971ca382dbe46</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CognitoIdpServiceMetadata</span></td><td><code>f89de5d6d2078879</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CognitoSyncServiceMetadata</span></td><td><code>27b25513e8bc0096</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ComprehendServiceMetadata</span></td><td><code>51f75626ad132d4f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ComprehendmedicalServiceMetadata</span></td><td><code>c29a2e6085a5d87e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ComputeOptimizerServiceMetadata</span></td><td><code>ce89a35668e31f79</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ConfigServiceMetadata</span></td><td><code>b65b47b6af0247b5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ConnectCampaignsServiceMetadata</span></td><td><code>c61431e26174a2b1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ConnectServiceMetadata</span></td><td><code>f3616c0e3326b866</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ContactLensServiceMetadata</span></td><td><code>d4b53ec64a345526</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ControltowerServiceMetadata</span></td><td><code>c0070dea90772504</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CostOptimizationHubServiceMetadata</span></td><td><code>301fb47d36441c8f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.CurServiceMetadata</span></td><td><code>114e5953bc8f89b7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DataAtsIotServiceMetadata</span></td><td><code>3ff411697c86c752</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DataIotServiceMetadata</span></td><td><code>5752e0f38cb6da06</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DataJobsIotServiceMetadata</span></td><td><code>31b2b67948c64e5b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DataMediastoreServiceMetadata</span></td><td><code>fb15efb985bc54a2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DatabrewServiceMetadata</span></td><td><code>71d3ebbfb7434364</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DataexchangeServiceMetadata</span></td><td><code>10fbd8e87b2db7ad</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DatapipelineServiceMetadata</span></td><td><code>dc0d6e5fd11094a7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DatasyncServiceMetadata</span></td><td><code>0c2398f4757d02ab</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DatazoneServiceMetadata</span></td><td><code>a79c8ba2559018ba</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DaxServiceMetadata</span></td><td><code>bcd588fe4e19358f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DevicefarmServiceMetadata</span></td><td><code>ff1c1c3c08f34a86</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DevopsGuruServiceMetadata</span></td><td><code>0125a7dfc9b516d8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DirectconnectServiceMetadata</span></td><td><code>5c53ce43ac184e1d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DiscoveryServiceMetadata</span></td><td><code>b6d6c90c10880cc3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DlmServiceMetadata</span></td><td><code>d96c6e233a7dc9ea</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DmsServiceMetadata</span></td><td><code>b4ec8cc714e4b9d1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DocdbServiceMetadata</span></td><td><code>aa117781573a5ced</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DrsServiceMetadata</span></td><td><code>d199d822a0c400cb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DsServiceMetadata</span></td><td><code>a33202d9b51f2fa7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.DynamodbServiceMetadata</span></td><td><code>e2adbbc5fd52e949</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EbsServiceMetadata</span></td><td><code>e4716749a21593b9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Ec2ServiceMetadata</span></td><td><code>2e8c291a49e5ae5f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EcsServiceMetadata</span></td><td><code>7c1666fbc8fb0c61</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EdgeSagemakerServiceMetadata</span></td><td><code>389db4e8f6644044</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EksAuthServiceMetadata</span></td><td><code>ccf5fce5c8598957</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EksServiceMetadata</span></td><td><code>3780b313508d9975</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ElasticacheServiceMetadata</span></td><td><code>9603e8d21deebc1a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ElasticbeanstalkServiceMetadata</span></td><td><code>161f5372c1501ec1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ElasticfilesystemServiceMetadata</span></td><td><code>da141bec27c01711</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ElasticloadbalancingServiceMetadata</span></td><td><code>afdfa0b95f6f6f80</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ElasticmapreduceServiceMetadata</span></td><td><code>73692c5f8cc10caa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EmailServiceMetadata</span></td><td><code>e5be3dc89aa25614</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EmrContainersServiceMetadata</span></td><td><code>df9f8576a8d3d55e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EmrServerlessServiceMetadata</span></td><td><code>82183d2f38b89e5d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EnhancedS3ServiceMetadata</span></td><td><code>0fc6e696e46f3364</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EntitlementMarketplaceServiceMetadata</span></td><td><code>49a345453affcbf1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EsServiceMetadata</span></td><td><code>884565a300e8d0d9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.EventsServiceMetadata</span></td><td><code>de3b44d01a792d94</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FinspaceApiServiceMetadata</span></td><td><code>d8356e542edcf490</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FinspaceServiceMetadata</span></td><td><code>c1c1157055b8a9df</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FirehoseServiceMetadata</span></td><td><code>49054b626ce3b998</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FmsServiceMetadata</span></td><td><code>d50a729c8a6fbd0c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ForecastServiceMetadata</span></td><td><code>36d1a51ce80de5c2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ForecastqueryServiceMetadata</span></td><td><code>76514cebf79165c6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FrauddetectorServiceMetadata</span></td><td><code>421cedbbba0903ba</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.FsxServiceMetadata</span></td><td><code>45528d0171fbb110</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GameliftServiceMetadata</span></td><td><code>6d310cc90576a1cc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GameliftstreamsServiceMetadata</span></td><td><code>0a3a5608082aef29</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GeoServiceMetadata</span></td><td><code>5832ab9b8e0a9fce</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GlacierServiceMetadata</span></td><td><code>91e45030dfc55b97</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GlobalacceleratorServiceMetadata</span></td><td><code>138f5fe4ed0aa8f1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GlueServiceMetadata</span></td><td><code>623f18924bbbde25</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GrafanaServiceMetadata</span></td><td><code>026257b1cf9cd6c8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GreengrassServiceMetadata</span></td><td><code>567befb564f487a4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GroundstationServiceMetadata</span></td><td><code>218a04396e78b532</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.GuarddutyServiceMetadata</span></td><td><code>66114585b8434583</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.HealthServiceMetadata</span></td><td><code>d78c40bda9d2e0d3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.HealthlakeServiceMetadata</span></td><td><code>a257cdcab9cc771e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IamServiceMetadata</span></td><td><code>baf4093f7e6b9d3b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IdentityChimeServiceMetadata</span></td><td><code>6d4b8fb7b9658d1c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IdentitystoreServiceMetadata</span></td><td><code>b03836762b64b6f8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ImportexportServiceMetadata</span></td><td><code>8e43f52768b8c969</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IngestTimestreamServiceMetadata</span></td><td><code>8a93199b046c7727</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Inspector2ServiceMetadata</span></td><td><code>7af88cdcadd52515</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.InspectorServiceMetadata</span></td><td><code>0bba21f724ffd488</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.InternetmonitorServiceMetadata</span></td><td><code>2f628c4c9a85e0e4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotServiceMetadata</span></td><td><code>af0c19054b4b330c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IoteventsServiceMetadata</span></td><td><code>a1ae204b3350f1cd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IoteventsdataServiceMetadata</span></td><td><code>5f14de485b13ea1f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotfleetwiseServiceMetadata</span></td><td><code>eaf3851191ef3010</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotsecuredtunnelingServiceMetadata</span></td><td><code>099a0fd76842a960</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotsitewiseServiceMetadata</span></td><td><code>1e5bc31078fcd1df</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotthingsgraphServiceMetadata</span></td><td><code>0936fa3f4359a9fa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IottwinmakerServiceMetadata</span></td><td><code>65b45a67d88a3fa0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IotwirelessServiceMetadata</span></td><td><code>7d5f8a663cab39d5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IvsServiceMetadata</span></td><td><code>59743c7270d56cd3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IvschatServiceMetadata</span></td><td><code>038fb08cdd46bfb9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.IvsrealtimeServiceMetadata</span></td><td><code>4399752f0b6ba2b7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KafkaServiceMetadata</span></td><td><code>3386b8d9d8ad8faa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KafkaconnectServiceMetadata</span></td><td><code>ef090e7ba42226f9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KendraRankingServiceMetadata</span></td><td><code>eaed05811539890f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KendraServiceMetadata</span></td><td><code>787256d27169ac43</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KinesisServiceMetadata</span></td><td><code>e4fb32494dd5282d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KinesisanalyticsServiceMetadata</span></td><td><code>cadd75239770c27f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KinesisvideoServiceMetadata</span></td><td><code>7615ed72f2189c85</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.KmsServiceMetadata</span></td><td><code>9832e1afb07e15f2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LakeformationServiceMetadata</span></td><td><code>83bd7dfd83ece98f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LambdaServiceMetadata</span></td><td><code>6ce6ab757c4630c9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LicenseManagerLinuxSubscriptionsServiceMetadata</span></td><td><code>e519a966a9c948e2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LicenseManagerServiceMetadata</span></td><td><code>00e34fa7f0c18f8b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LicenseManagerUserSubscriptionsServiceMetadata</span></td><td><code>2d9ce189ce5bc89d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LightsailServiceMetadata</span></td><td><code>7edc9800246922b1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LogsServiceMetadata</span></td><td><code>9d8af9fbf76d608c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.LookoutequipmentServiceMetadata</span></td><td><code>468962ac14dfcc5a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.M2ServiceMetadata</span></td><td><code>4badb19011421964</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MachinelearningServiceMetadata</span></td><td><code>cbdf4e2dac4a050a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Macie2ServiceMetadata</span></td><td><code>61d61287d5e6612d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ManagedblockchainQueryServiceMetadata</span></td><td><code>c638d20ec36ec13a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ManagedblockchainServiceMetadata</span></td><td><code>602a3a83527668df</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MarketplacecommerceanalyticsServiceMetadata</span></td><td><code>aa82e8263b6a1df3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediaPipelinesChimeServiceMetadata</span></td><td><code>ede8400dda7ca228</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediaconnectServiceMetadata</span></td><td><code>a541bcf73406035b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediaconvertServiceMetadata</span></td><td><code>57eaaf77b4df4fbd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MedialiveServiceMetadata</span></td><td><code>1082a50671f7310c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediapackageServiceMetadata</span></td><td><code>12f76f7374f911aa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediapackageVodServiceMetadata</span></td><td><code>6cae4edcb9c4def1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Mediapackagev2ServiceMetadata</span></td><td><code>0e441ea884a0e801</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MediastoreServiceMetadata</span></td><td><code>ceb0b86fa32db1af</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MeetingsChimeServiceMetadata</span></td><td><code>9f9a4457569b367f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MemoryDbServiceMetadata</span></td><td><code>e07dc556ba0e6fdd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MessagingChimeServiceMetadata</span></td><td><code>4d5ce82f847f2a84</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MeteringMarketplaceServiceMetadata</span></td><td><code>0206d9f031d60f37</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MetricsSagemakerServiceMetadata</span></td><td><code>0c7ffcf95d22e20c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MghServiceMetadata</span></td><td><code>bb38b8be3b44a430</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MgnServiceMetadata</span></td><td><code>df890f1316363674</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MigrationhubOrchestratorServiceMetadata</span></td><td><code>3b895d5cc0bffeb0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MigrationhubStrategyServiceMetadata</span></td><td><code>876b7c604a69efe4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MobileanalyticsServiceMetadata</span></td><td><code>afc13c894a24b63a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ModelsLexServiceMetadata</span></td><td><code>ed2a18750789bc8e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ModelsV2LexServiceMetadata</span></td><td><code>4d0bd564fcded33f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MonitoringServiceMetadata</span></td><td><code>da86ff5dc57f07b2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MqServiceMetadata</span></td><td><code>16a2a2b0eb3510a9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.MturkRequesterServiceMetadata</span></td><td><code>3c45c895ed7bb900</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NeptuneServiceMetadata</span></td><td><code>8b518b238197d6d5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NetworkFirewallServiceMetadata</span></td><td><code>87e59f8691814657</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NetworkmanagerServiceMetadata</span></td><td><code>dc3c1b5262d7b900</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NotificationsContactsServiceMetadata</span></td><td><code>c81ab921a81be497</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NotificationsServiceMetadata</span></td><td><code>25c16e832eaad294</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.NovaActServiceMetadata</span></td><td><code>e30e3a6595d5ee1e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OamServiceMetadata</span></td><td><code>cd4c3178175d598c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OidcServiceMetadata</span></td><td><code>8aede9d02091773a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OmicsServiceMetadata</span></td><td><code>4e39c9b8bfffabdc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OrganizationsServiceMetadata</span></td><td><code>21bb3963e2c22e19</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OsisServiceMetadata</span></td><td><code>3da90a338d299f76</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.OutpostsServiceMetadata</span></td><td><code>d5ffacd3f98467c6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ParticipantConnectServiceMetadata</span></td><td><code>1a911c3eafbdea16</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PartnercentralChannelServiceMetadata</span></td><td><code>f9ab3459a9cf2ba9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PersonalizeServiceMetadata</span></td><td><code>742009c68a3dfebf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PiServiceMetadata</span></td><td><code>fed6e408c7f04334</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PinpointServiceMetadata</span></td><td><code>6ba96de443430ecc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PipesServiceMetadata</span></td><td><code>91614c80082c2b3d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PollyServiceMetadata</span></td><td><code>29577072afdee810</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.PortalSsoServiceMetadata</span></td><td><code>af197c6f77b31c20</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ProfileServiceMetadata</span></td><td><code>51460af0bf543665</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ProtonServiceMetadata</span></td><td><code>72555411faac27b3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.QbusinessServiceMetadata</span></td><td><code>ba1ac4c500273e8f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.QueryTimestreamServiceMetadata</span></td><td><code>99df28329f47b9a7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.QuicksightServiceMetadata</span></td><td><code>954dc8bcc60d0fc3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RamServiceMetadata</span></td><td><code>c5b81670e914735e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RbinServiceMetadata</span></td><td><code>8834a6441157b86f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RdsDataServiceMetadata</span></td><td><code>d4c954261a72b292</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RdsServiceMetadata</span></td><td><code>01fddb7be46a16ad</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RedshiftServerlessServiceMetadata</span></td><td><code>e9197ee7d922e19c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RedshiftServiceMetadata</span></td><td><code>5750a45aaaacd032</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RekognitionServiceMetadata</span></td><td><code>9031cea34f70fdc0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ResiliencehubServiceMetadata</span></td><td><code>24c1a7f9387754c3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ResourceExplorer2ServiceMetadata</span></td><td><code>ecf9d361a50f1e6e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ResourceGroupsServiceMetadata</span></td><td><code>77c6b5af6bd70115</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RolesanywhereServiceMetadata</span></td><td><code>f61d2c0f7c0ea382</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Route53RecoveryControlConfigServiceMetadata</span></td><td><code>828161831bb53ffe</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Route53ServiceMetadata</span></td><td><code>d4bfc8aa5be10554</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Route53domainsServiceMetadata</span></td><td><code>85d0775e5e3b3715</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Route53profilesServiceMetadata</span></td><td><code>68d6227af60461d7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Route53resolverServiceMetadata</span></td><td><code>491048bd8f0458dd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RumServiceMetadata</span></td><td><code>c8d217b7dda5ba37</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RuntimeLexServiceMetadata</span></td><td><code>ed1ff088f9aba767</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RuntimeSagemakerServiceMetadata</span></td><td><code>79d50522212357ad</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.RuntimeV2LexServiceMetadata</span></td><td><code>574c90f9e8ac99d1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.S3ControlServiceMetadata</span></td><td><code>86e37c0120af9541</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.S3OutpostsServiceMetadata</span></td><td><code>0f6de60955f87571</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.S3ServiceMetadata</span></td><td><code>d3d77c18e28e5d16</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SagemakerGeospatialServiceMetadata</span></td><td><code>0b1d1f93d0eecb0e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SavingsplansServiceMetadata</span></td><td><code>dbe416c7896307ae</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SchedulerServiceMetadata</span></td><td><code>7d3ddbc1d0696ad8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SchemasServiceMetadata</span></td><td><code>6aaff4dc6a815b9b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SdbServiceMetadata</span></td><td><code>55ff157f73a94d54</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SecretsmanagerServiceMetadata</span></td><td><code>239fdaa74efdb259</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SecurityhubServiceMetadata</span></td><td><code>d368ee27e41fde2d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SecuritylakeServiceMetadata</span></td><td><code>378877e71ab6acb3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ServerlessrepoServiceMetadata</span></td><td><code>dd49313131880d67</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ServicecatalogAppregistryServiceMetadata</span></td><td><code>651841fd96f2a21f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ServicecatalogServiceMetadata</span></td><td><code>d475cd017ef6568a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ServicediscoveryServiceMetadata</span></td><td><code>327ff2e313f6be3f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ServicequotasServiceMetadata</span></td><td><code>e3fcf0e7f317a280</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ShieldServiceMetadata</span></td><td><code>fb778f1b6e51b77a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SignerServiceMetadata</span></td><td><code>e6d3219bd8037ee2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SimspaceweaverServiceMetadata</span></td><td><code>c7672810ff113c5c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SmsVoiceServiceMetadata</span></td><td><code>2fa25fec063041d0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SnowballServiceMetadata</span></td><td><code>24711285333ea608</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SnsServiceMetadata</span></td><td><code>14478ac8f43dfd41</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SqsServiceMetadata</span></td><td><code>89453e995fcdf7c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsmContactsServiceMetadata</span></td><td><code>e85ed0a7193b4b32</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsmIncidentsServiceMetadata</span></td><td><code>e0bb34666770593c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsmQuicksetupServiceMetadata</span></td><td><code>31b4d8bcc4cc5640</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsmSapServiceMetadata</span></td><td><code>82bb9a5eaebe448e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsmServiceMetadata</span></td><td><code>641433ea5e2690a8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SsoServiceMetadata</span></td><td><code>f186c06227a2026d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.StatesServiceMetadata</span></td><td><code>d33b7b529d3564f5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.StoragegatewayServiceMetadata</span></td><td><code>bb66410c96586d02</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.StreamsDynamodbServiceMetadata</span></td><td><code>dbb12c7c9d98a8fc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.StsServiceMetadata</span></td><td><code>7b2086719d62b3b7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SupportServiceMetadata</span></td><td><code>09ea14bc56628cfc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SupportappServiceMetadata</span></td><td><code>8159eba332c3f233</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SwfServiceMetadata</span></td><td><code>ce351d1a0efe1dc4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.SyntheticsServiceMetadata</span></td><td><code>ff20a7e1e11ee824</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TaggingServiceMetadata</span></td><td><code>97811c141574b908</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TaxServiceMetadata</span></td><td><code>581cf6f0196951c1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TextractServiceMetadata</span></td><td><code>06a43ed3c542a4b9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.ThinclientServiceMetadata</span></td><td><code>9741cede526c5720</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TnbServiceMetadata</span></td><td><code>35e784da7f8ed29b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TranscribeServiceMetadata</span></td><td><code>1aa4f19df32f2e8e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TranscribestreamingServiceMetadata</span></td><td><code>ba45ecbf63df90c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TransferServiceMetadata</span></td><td><code>0a8384f6941c75e4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TranslateServiceMetadata</span></td><td><code>00d5a890d8cb82be</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.TrustedadvisorServiceMetadata</span></td><td><code>5d746cee812d226d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.VerifiedpermissionsServiceMetadata</span></td><td><code>97bb60c1e1b18589</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.VoiceChimeServiceMetadata</span></td><td><code>12aa508bbeafd5e8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.VoiceidServiceMetadata</span></td><td><code>c09389db2ba7c183</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.VpcLatticeServiceMetadata</span></td><td><code>040df2272c1d9739</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WafRegionalServiceMetadata</span></td><td><code>8a47815211510b10</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WafServiceMetadata</span></td><td><code>3a1d9cb6b2605aa2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.Wafv2ServiceMetadata</span></td><td><code>1eda07abfa540952</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WellarchitectedServiceMetadata</span></td><td><code>2a28eb5a6222e43c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WisdomServiceMetadata</span></td><td><code>a57e3c3749a2d0d9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WorkdocsServiceMetadata</span></td><td><code>c5487407dfc8b1eb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WorkmailServiceMetadata</span></td><td><code>e3ed0a2ac53ebd9e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WorkspacesServiceMetadata</span></td><td><code>1ede1d891aea58c1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.WorkspacesWebServiceMetadata</span></td><td><code>1da36adddfef6792</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.regions.servicemetadata.XrayServiceMetadata</span></td><td><code>b7c539435d76d2e2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.DefaultRetryStrategy</span></td><td><code>15383c3ef877d921</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.DefaultRetryStrategy.Legacy</span></td><td><code>07c138e487bbae04</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.LegacyRetryStrategy</span></td><td><code>8708e20ff06e68ef</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.api.BackoffStrategy</span></td><td><code>945767f5e3b29e12</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.api.RetryStrategy.Builder</span></td><td><code>5804714c5988560c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.api.internal.backoff.BackoffStrategiesConstants</span></td><td><code>4a92cd3a7ba161a7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.api.internal.backoff.ExponentialDelayWithHalfJitter</span></td><td><code>b5138b26613250c7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.api.internal.backoff.ExponentialDelayWithJitter</span></td><td><code>f7cf120614c39173</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.BaseRetryStrategy</span></td><td><code>6dd32b11f8181ba4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.BaseRetryStrategy.Builder</span></td><td><code>d914bcfeae9296ad</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.DefaultLegacyRetryStrategy</span></td><td><code>0e69f92c1a3d75a4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.DefaultLegacyRetryStrategy.Builder</span></td><td><code>9ff33e5d826e7806</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.circuitbreaker.TokenBucketStore</span></td><td><code>98344c63f670239f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.retries.internal.circuitbreaker.TokenBucketStore.Builder</span></td><td><code>a34d28c0d475c6a6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.DefaultLambdaBaseClientBuilder</span></td><td><code>f0cc40def31ef83e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.DefaultLambdaClient</span></td><td><code>f2e6395a82388c04</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.DefaultLambdaClientBuilder</span></td><td><code>51c7a74d998506ed</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.LambdaClient</span></td><td><code>07345ee516dbf553</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.LambdaClient.MockitoMock.b8U7l52d</span></td><td><code>e7e50ed7e8f9405d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.LambdaAuthSchemeParams</span></td><td><code>816a21f96c5a57ba</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.LambdaAuthSchemeProvider</span></td><td><code>8c099589b9529a61</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.internal.DefaultLambdaAuthSchemeParams</span></td><td><code>a9cf928e316f7c7d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.internal.DefaultLambdaAuthSchemeParams.Builder</span></td><td><code>719e2d9f75418bdb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.internal.DefaultLambdaAuthSchemeProvider</span></td><td><code>75c33300bc790be8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.auth.scheme.internal.LambdaAuthSchemeInterceptor</span></td><td><code>5d2f847fda0d6966</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.endpoints.LambdaEndpointProvider</span></td><td><code>538d6c592f47fb17</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.endpoints.internal.DefaultLambdaEndpointProvider</span></td><td><code>06b7532e2ad2f5d0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.endpoints.internal.LambdaRequestSetEndpointInterceptor</span></td><td><code>62533e27689a716f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.endpoints.internal.LambdaResolveEndpointInterceptor</span></td><td><code>5ce0f293c1125f08</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CallbackDetails</span></td><td><code>02fc38e5f52d1210</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CallbackDetails.BuilderImpl</span></td><td><code>5896d483a3bf1a76</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CallbackOptions</span></td><td><code>91c9239267316cdd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CallbackOptions.BuilderImpl</span></td><td><code>04f7102646347067</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails</span></td><td><code>89e337016de7915c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails.BuilderImpl</span></td><td><code>3b79a50a53546ea4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeFailedDetails</span></td><td><code>a9031dea5d560d72</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeFailedDetails.BuilderImpl</span></td><td><code>1195a4558e8d6151</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeOptions</span></td><td><code>e50386e6f7311074</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeOptions.BuilderImpl</span></td><td><code>3a7d90e2a0106267</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeStartedDetails</span></td><td><code>f8ce278c658864b5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeStartedDetails.BuilderImpl</span></td><td><code>6b409432c343d2ce</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeSucceededDetails</span></td><td><code>44bd156ee078c73e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ChainedInvokeSucceededDetails.BuilderImpl</span></td><td><code>1b05b3c8101918ea</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</span></td><td><code>60b2415ad5834438</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse.BuilderImpl</span></td><td><code>53f2832e906da3b2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState</span></td><td><code>c56bf84124def2da</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState.BuilderImpl</span></td><td><code>774b1a657457410f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ContextDetails</span></td><td><code>f81d6ec5ebd1c7c1</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ContextDetails.BuilderImpl</span></td><td><code>03e70e49994552df</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ContextOptions</span></td><td><code>b617389f33b90a40</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ContextOptions.BuilderImpl</span></td><td><code>d64ae18abe9aa037</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ErrorObject</span></td><td><code>83f2ea56b7e7387c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ErrorObject.BuilderImpl</span></td><td><code>9c32d5f0da3c48e8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.Event</span></td><td><code>5dfdb3e01c62a489</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.Event.BuilderImpl</span></td><td><code>43d32108c18f9292</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventError</span></td><td><code>1db14351e9d9ef1a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventError.BuilderImpl</span></td><td><code>2c41c050365644b8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventInput</span></td><td><code>2bb6498f6d2418f7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventInput.BuilderImpl</span></td><td><code>8985f855ffeb2830</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventResult</span></td><td><code>137cb6f0e473363c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventResult.BuilderImpl</span></td><td><code>7e64ec6629e2ae3b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.EventType</span></td><td><code>8fb92569e48bc8a6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ExecutionDetails</span></td><td><code>bc0a389897d822db</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ExecutionDetails.BuilderImpl</span></td><td><code>af67cf4f79464ef7</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ExecutionSucceededDetails</span></td><td><code>9d82a0ffa7c8e266</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.ExecutionSucceededDetails.BuilderImpl</span></td><td><code>88d2f171cbe2123a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest</span></td><td><code>3ae2685287398b83</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest.BuilderImpl</span></td><td><code>e33f53eec6a4b7cc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</span></td><td><code>ec252dbf40eda93e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse.BuilderImpl</span></td><td><code>50e4c1f6328598fa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.InvocationType</span></td><td><code>59b74300ec7daabf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.LambdaRequest</span></td><td><code>73384813ed3cd7f4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.LambdaRequest.BuilderImpl</span></td><td><code>c673b2efa66dff4a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.LambdaResponse</span></td><td><code>dfac03d1ce42ab70</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.LambdaResponse.BuilderImpl</span></td><td><code>b4d9bb33b3b719c3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.Operation</span></td><td><code>4b2c487a947592c2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.Operation.BuilderImpl</span></td><td><code>88f720ab62f11852</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationAction</span></td><td><code>9d8f1d8bb1a3474a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationStatus</span></td><td><code>7e11de6cc74de6bb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationType</span></td><td><code>20dba78afbd4e373</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationUpdate</span></td><td><code>1486d50d1e5fbdd2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationUpdate.BuilderImpl</span></td><td><code>c591dfcfd852a6ab</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.OperationsCopier</span></td><td><code>007a72c981b4f719</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.RetryDetails</span></td><td><code>d6e7de4035577aa4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.RetryDetails.BuilderImpl</span></td><td><code>dd1102aa4364a506</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StackTraceEntriesCopier</span></td><td><code>752445856b37901b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepDetails</span></td><td><code>619817622dbc68cf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepDetails.BuilderImpl</span></td><td><code>08a8dc1670ad8ad6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepFailedDetails</span></td><td><code>7a4b4bb90972fc09</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepFailedDetails.BuilderImpl</span></td><td><code>d2432ccf3b83bb48</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepOptions</span></td><td><code>f33bc03abce682cd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepOptions.BuilderImpl</span></td><td><code>312c21ea977393e8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepStartedDetails</span></td><td><code>7cabed8520b85942</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepStartedDetails.BuilderImpl</span></td><td><code>16eb1c2ab6ce39cf</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepSucceededDetails</span></td><td><code>b0c3b9de55ff5356</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.StepSucceededDetails.BuilderImpl</span></td><td><code>79a12aa1d1d0e7eb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitDetails</span></td><td><code>0003f12336041c38</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitDetails.BuilderImpl</span></td><td><code>53f1ea196939f7bc</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitOptions</span></td><td><code>33d537ec67f44fb5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitOptions.BuilderImpl</span></td><td><code>2c3c11547df4127b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitStartedDetails</span></td><td><code>f2805ff9201874aa</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitStartedDetails.BuilderImpl</span></td><td><code>e42d0557e6a89db0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitSucceededDetails</span></td><td><code>30ae0fbea81fcba2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.model.WaitSucceededDetails.BuilderImpl</span></td><td><code>47ccf02a67939ee0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.services.lambda.transform.GetDurableExecutionStateRequestMarshaller</span></td><td><code>7a36dcbf4b28e198</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.ErrorReportConfiguration</span></td><td><code>1e196f23c61211b9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.JsonFactory</span></td><td><code>349f6aa20d1e68d4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.JsonFactory.Feature</span></td><td><code>af4a6f02d4920fd2</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.JsonFactoryBuilder</span></td><td><code>81c616a47077b0e0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.JsonGenerator.Feature</span></td><td><code>cdb9e0fdb8f11740</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.JsonParser.Feature</span></td><td><code>90bc2f969eed4f60</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.StreamReadConstraints</span></td><td><code>e396e4b794823ee9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.StreamReadFeature</span></td><td><code>43d007b77a229bf6</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.StreamWriteConstraints</span></td><td><code>21d4e02b09b5148e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.StreamWriteFeature</span></td><td><code>2f98d27ecd15c045</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.TSFBuilder</span></td><td><code>0fb98c41810c957c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.TokenStreamFactory</span></td><td><code>681416f43abef97c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.io.CharTypes</span></td><td><code>2013b12b5deb8160</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.io.JsonStringEncoder</span></td><td><code>a59d6949a7959cb5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.io.SerializedString</span></td><td><code>8bde2c4a5318cd1a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.json.JsonReadFeature</span></td><td><code>7bec450685ceec0d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.sym.ByteQuadsCanonicalizer</span></td><td><code>973daa5e0e4c9ed9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.sym.ByteQuadsCanonicalizer.TableInfo</span></td><td><code>bfc4f3d6ba755eed</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.sym.CharsToNameCanonicalizer</span></td><td><code>01b5b9cd06183948</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.sym.CharsToNameCanonicalizer.TableInfo</span></td><td><code>08045daa3a1c0912</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.util.JsonRecyclerPools</span></td><td><code>a8c3661ad9bd92d0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.util.JsonRecyclerPools.ThreadLocalPool</span></td><td><code>220e14cc8b098f62</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.thirdparty.jackson.core.util.RecyclerPool.ThreadLocalPoolBase</span></td><td><code>7359b42ac741f206</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap</span></td><td><code>1be2c84583555e5d</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.Builder</span></td><td><code>c3c478eadc08fb07</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.Builder.1</span></td><td><code>93d6e096c9278f7a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.CachedValue</span></td><td><code>3ff632128137f8fb</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.ConstantValue</span></td><td><code>2d44b1dfd78d5b32</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.DependencyGraph</span></td><td><code>bbe7f09f877fdf04</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.DerivedValue</span></td><td><code>5c9f4d81b5887dff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.ExpectCachedLazyValueSource</span></td><td><code>9f23acc91d65ff9f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.Key</span></td><td><code>394d49ccb287cdb9</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.AttributeMap.Key.UnsafeValueType</span></td><td><code>0962e2fff61ad00f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.CollectionUtils</span></td><td><code>973b54c55100f37a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.DaemonThreadFactory</span></td><td><code>fa8bdadbdd7828b5</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.Either</span></td><td><code>5e54a6613211a321</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.FunctionalUtils</span></td><td><code>fe5f2faa18697b0f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ImmutableMap</span></td><td><code>f2e3eb306c930ecd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ImmutableMap.Builder</span></td><td><code>59c4ed73619dcd1c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.IoUtils</span></td><td><code>937f190a7512d731</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.JavaSystemSetting</span></td><td><code>d9120462f2555b14</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.Lazy</span></td><td><code>825b45d4efd52326</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.Logger</span></td><td><code>1d3cf49b70a2b354</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.NamedThreadFactory</span></td><td><code>da98226103eed0d8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.NumericUtils</span></td><td><code>b92bc0a53448d738</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.OptionalUtils</span></td><td><code>314da0f400b908ec</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.Pair</span></td><td><code>48fdf3ffe9fe43c0</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ProxyConfigProvider</span></td><td><code>25c478e6dc731258</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ProxyEnvironmentSetting</span></td><td><code>ec9c31751992214e</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ProxySystemSetting</span></td><td><code>6cd98b008e634948</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.StringUtils</span></td><td><code>91ace1755703f520</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.SystemSetting</span></td><td><code>4d7f27100a3a37b8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ThreadFactoryBuilder</span></td><td><code>3fa8b8ee6b647810</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.ToString</span></td><td><code>fcb5c5958f505e95</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.UnmodifiableMapOfLists</span></td><td><code>0143f89d295343a8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.UserHomeDirectoryUtils</span></td><td><code>3dfb15347667469c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.Validate</span></td><td><code>c6e956bd2b322716</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.builder.SdkBuilder</span></td><td><code>b3fe0d2b0d3a0fff</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.builder.ToCopyableBuilder</span></td><td><code>3139189734a4ca0a</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.CachedSupplier</span></td><td><code>a0aa2e71a01d3be8</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.CachedSupplier.Builder</span></td><td><code>1886af12373ff3ed</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.CachedSupplier.PrefetchStrategy</span></td><td><code>6dd2a63230ba6289</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.CachedSupplier.StaleValueBehavior</span></td><td><code>fef6660608e77278</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.OneCallerBlocks</span></td><td><code>9934c5984001afef</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.bounded.BoundedCache</span></td><td><code>db1380a27938384f</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.bounded.BoundedCache.Builder</span></td><td><code>a11c70cb1cd9455b</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.lru.LruCache</span></td><td><code>dd18ce5e753a0e33</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.cache.lru.LruCache.Builder</span></td><td><code>782ca2af426289bd</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.http.SdkHttpUtils</span></td><td><code>82f48a37eb85c2c4</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.internal.EnumUtils</span></td><td><code>7889b8a018e91395</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.internal.SystemSettingUtils</span></td><td><code>6bde571041069fc3</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.internal.SystemSettingUtilsTestBackdoor</span></td><td><code>befaf520063aa972</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.internal.proxy.ProxyEnvironmentVariableConfigProvider</span></td><td><code>3b2a6edc75e59083</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.internal.proxy.ProxySystemPropertyConfigProvider</span></td><td><code>29f2831591fe846c</code></td></tr><tr><td><span class="el_class">software.amazon.awssdk.utils.uri.SdkUri</span></td><td><code>50dbbcfdb77a865f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CallbackIntegrationTest</span></td><td><code>5820179673da5071</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CallbackIntegrationTest.TrackingSerDes</span></td><td><code>01656f3f8f9dbc56</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.ChildContextIntegrationTest</span></td><td><code>2aa1dfdcabbdc6ab</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CustomConfigIntegrationTest</span></td><td><code>2797bb4c2c64e332</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CustomConfigIntegrationTest.TrackingSerDes</span></td><td><code>8f6385f126eb94dd</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CustomSerDesIntegrationTest</span></td><td><code>c6a8f429e7d5034a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.CustomSerDesIntegrationTest.TrackingSerDes</span></td><td><code>9b4b0097b27559fb</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig.html" class="el_class">software.amazon.lambda.durable.DurableConfig</a></td><td><code>5df59f22f4e39e34</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableConfig$Builder.html" class="el_class">software.amazon.lambda.durable.DurableConfig.Builder</a></td><td><code>413695324fdfc354</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableConfigTest</span></td><td><code>a7d2d8260993ac7c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableContext.html" class="el_class">software.amazon.lambda.durable.DurableContext</a></td><td><code>aa19a4b4ce7c9a73</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest</span></td><td><code>a0d4b64b36e25c8e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.1</span></td><td><code>300ecb40e20cdd3c</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.2</span></td><td><code>27cedd8c5b82b65f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.3</span></td><td><code>8b4c9922a48224a9</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.4</span></td><td><code>82236ef094ac1543</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.5</span></td><td><code>435a5c7c401059dc</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableContextTest.6</span></td><td><code>ef0c63f659cd1914</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableExecutionCheckpointTest</span></td><td><code>0a3e0dcf25336ee0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableFuture.html" class="el_class">software.amazon.lambda.durable.DurableFuture</a></td><td><code>d63fe7eded6f14bb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableFutureTest</span></td><td><code>5693fc603beed88d</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/DurableHandler.html" class="el_class">software.amazon.lambda.durable.DurableHandler</a></td><td><code>bc66f5f0522963b2</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableHandlerTest</span></td><td><code>aec53c2551235c7d</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurableHandlerTest.TestDurableHandler</span></td><td><code>d3deb1229d023bfb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.DurationValidationIntegrationTest</span></td><td><code>d3a48b27a0102004</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.ExceptionIntegrationTest</span></td><td><code>f7b1ab3c2dc2c8e1</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.ExceptionIntegrationTest.CustomBusinessException</span></td><td><code>e8424e3e5961b881</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.IntegrationTest</span></td><td><code>df74cee28bbf88ab</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.IntegrationTest.TestInput</span></td><td><code>37d0e69efc73ac26</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.IntegrationTest.TestOutput</span></td><td><code>4deadf961b614f19</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.InvokeIntegrationTest</span></td><td><code>bde74a9b1c3b5f64</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.InvokeIntegrationTest.TestInput</span></td><td><code>5fc7680a22043ed9</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.InvokeIntegrationTest.TestOutput</span></td><td><code>c96a04cc85bb5c35</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.MapFunctionTest</span></td><td><code>d88ef59a3939244e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.MapInputValidationTest</span></td><td><code>2aabd3878f3e41a2</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.MapIntegrationTest</span></td><td><code>44cda70f89522b74</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.MapIntegrationTest.1</span></td><td><code>51c286191795acd8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.MapIntegrationTest.2</span></td><td><code>966b92aed6b9a7d7</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.NestedStepIntegrationTest</span></td><td><code>5a9890585c19f520</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/ParallelDurableFuture.html" class="el_class">software.amazon.lambda.durable.ParallelDurableFuture</a></td><td><code>18c8201088e56820</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.ParallelIntegrationTest</span></td><td><code>47b9c25dadb0502b</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.ReplayValidationTest</span></td><td><code>75fb2b69003ca94c</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.StepSemanticsIntegrationTest</span></td><td><code>fda3c0c8d36de4f6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TestContext</span></td><td><code>438d31cbd0d227e5</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TestUtils</span></td><td><code>aabe7d0dc3b63f01</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken.html" class="el_class">software.amazon.lambda.durable.TypeToken</a></td><td><code>3367dc1240e98035</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$1.html" class="el_class">software.amazon.lambda.durable.TypeToken.1</a></td><td><code>2c09b7ee6dd69490</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable/TypeToken$2.html" class="el_class">software.amazon.lambda.durable.TypeToken.2</a></td><td><code>2b1913fad31c3ac6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest</span></td><td><code>4a2edef867ec6cf5</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.1</span></td><td><code>27dc38c9a4bbabf4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.2</span></td><td><code>80d78763e31ce618</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.3</span></td><td><code>5c1ddff80b151f23</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.4</span></td><td><code>bdae53286b152f20</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.5</span></td><td><code>ac9d4966ec9af4cb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.TypeTokenTest.6</span></td><td><code>c034abf55fba3f6f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.WaitForConditionIntegrationTest</span></td><td><code>c60a74bebfb729d0</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.client.DurableExecutionClient.MockitoMock.XozHYC6x</span></td><td><code>03424af2e4fdecf2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.client/LambdaDurableFunctionsClient.html" class="el_class">software.amazon.lambda.durable.client.LambdaDurableFunctionsClient</a></td><td><code>54b72652860d7495</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig.html" class="el_class">software.amazon.lambda.durable.config.CallbackConfig</a></td><td><code>d30aa52b23e807c4</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CallbackConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.CallbackConfig.Builder</a></td><td><code>58231513f2fb592b</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.CallbackConfigTest</span></td><td><code>c22a615568665b4e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/CompletionConfig.html" class="el_class">software.amazon.lambda.durable.config.CompletionConfig</a></td><td><code>e68db7b954d377fc</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.CompletionConfigTest</span></td><td><code>63a039fb9018c1f4</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig.html" class="el_class">software.amazon.lambda.durable.config.InvokeConfig</a></td><td><code>13a0e09aacec29ef</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/InvokeConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.InvokeConfig.Builder</a></td><td><code>01a7e95c39a8a5ab</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig.html" class="el_class">software.amazon.lambda.durable.config.MapConfig</a></td><td><code>0372b006766f3b06</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/MapConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.MapConfig.Builder</a></td><td><code>708d268c3b836dfb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.MapConfigTest</span></td><td><code>5a174f4ca427fe96</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig.html" class="el_class">software.amazon.lambda.durable.config.ParallelBranchConfig</a></td><td><code>ff487b107358d6d9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelBranchConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.ParallelBranchConfig.Builder</a></td><td><code>065c0795c30d8fc9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig.html" class="el_class">software.amazon.lambda.durable.config.ParallelConfig</a></td><td><code>81dab4c2f64bdfb4</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/ParallelConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.ParallelConfig.Builder</a></td><td><code>90d4f9bb61decccf</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.ParallelConfigTest</span></td><td><code>6b3a0472dc3fdc11</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig.html" class="el_class">software.amazon.lambda.durable.config.RunInChildContextConfig</a></td><td><code>ce56f9e020c63227</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/RunInChildContextConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.RunInChildContextConfig.Builder</a></td><td><code>91c163e23d909ee7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig.html" class="el_class">software.amazon.lambda.durable.config.StepConfig</a></td><td><code>b8d17e5ba79aff26</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.StepConfig.Builder</a></td><td><code>8234f74591072ae8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.StepConfigTest</span></td><td><code>78ec578e86722dc7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/StepSemantics.html" class="el_class">software.amazon.lambda.durable.config.StepSemantics</a></td><td><code>0a9f299f1f707c32</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig.html" class="el_class">software.amazon.lambda.durable.config.WaitForCallbackConfig</a></td><td><code>b89a2d603acaf675</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForCallbackConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.WaitForCallbackConfig.Builder</a></td><td><code>dd85d4ad456502ea</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.WaitForCallbackConfigTest</span></td><td><code>d91aa55f2cc73fed</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig.html" class="el_class">software.amazon.lambda.durable.config.WaitForConditionConfig</a></td><td><code>0688cf05f6ddd760</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.config/WaitForConditionConfig$Builder.html" class="el_class">software.amazon.lambda.durable.config.WaitForConditionConfig.Builder</a></td><td><code>43b15d7e01467b5e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.config.WaitForConditionConfigTest</span></td><td><code>81f10832ca032488</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/BaseContextImpl.html" class="el_class">software.amazon.lambda.durable.context.BaseContextImpl</a></td><td><code>ac8aec25a6b97ae5</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.context.BaseContextImplTest</span></td><td><code>3a8a7ca526c9cfab</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/DurableContextImpl.html" class="el_class">software.amazon.lambda.durable.context.DurableContextImpl</a></td><td><code>d3d8c23a0998b13e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.context/StepContextImpl.html" class="el_class">software.amazon.lambda.durable.context.StepContextImpl</a></td><td><code>099d94ef50d04678</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.CloudBasedIntegrationTest</span></td><td><code>8d57157e0ec227e9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/CallbackExample.html" class="el_class">software.amazon.lambda.durable.examples.callback.CallbackExample</a></td><td><code>adbc5c12ce265643</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.callback.CallbackExampleTest</span></td><td><code>6b5f9dba2845a94e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample.html" class="el_class">software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample</a></td><td><code>77f66ef893b27287</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.callback/WaitForCallbackFailedExample$FailedSerDes.html" class="el_class">software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample.FailedSerDes</a></td><td><code>9b3745c6928799ef</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExampleTest</span></td><td><code>d7bc9e5922a54b40</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ChildContextExample.html" class="el_class">software.amazon.lambda.durable.examples.child.ChildContextExample</a></td><td><code>924e69201988e9a3</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.child.ChildContextExampleTest</span></td><td><code>20f023a5d893acf0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample.html" class="el_class">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample</a></td><td><code>a07b38c07376bdeb</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input</a></td><td><code>baad617e28df77f8</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.child/ManyAsyncChildContextExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Output</a></td><td><code>418a96aefb64a658</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExampleTest</span></td><td><code>f613bce12442fcdf</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample.html" class="el_class">software.amazon.lambda.durable.examples.general.CustomConfigExample</a></td><td><code>c0c7d77129d050aa</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$CustomData.html" class="el_class">software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData</a></td><td><code>09f908d72c6892b4</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomConfigExample$SnakeCaseSerDes.html" class="el_class">software.amazon.lambda.durable.examples.general.CustomConfigExample.SnakeCaseSerDes</a></td><td><code>4d2778428067bb67</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.CustomConfigExampleTest</span></td><td><code>245a23a50659411d</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/CustomPollingExample.html" class="el_class">software.amazon.lambda.durable.examples.general.CustomPollingExample</a></td><td><code>a962c07ed7767829</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.CustomPollingExampleTest</span></td><td><code>e3eee25a0598df3b</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample.html" class="el_class">software.amazon.lambda.durable.examples.general.ErrorHandlingExample</a></td><td><code>79734ce77f146d8a</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/ErrorHandlingExample$ServiceUnavailableException.html" class="el_class">software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException</a></td><td><code>80d2ea67128bcc63</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.ErrorHandlingExampleTest</span></td><td><code>77e4c48c0a328db0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericInputOutputExample</a></td><td><code>1b13c1110370972a</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericInputOutputExample$1.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericInputOutputExample.1</a></td><td><code>e9f986b2c116c47b</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.GenericInputOutputExampleTest</span></td><td><code>c0190ea14b9474f6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.GenericInputOutputExampleTest.1</span></td><td><code>37a3c51e86d70787</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.GenericInputOutputExampleTest.2</span></td><td><code>04bfcd6902d178fc</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample</a></td><td><code>8dc910bce456600f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$1.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample.1</a></td><td><code>4b502d6b16e02fe2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$2.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample.2</a></td><td><code>4d6da3ef71fa6eee</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$3.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample.3</a></td><td><code>882868cb75ca9557</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample.Input</a></td><td><code>4d80f1cd3f7ccf4c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/GenericTypesExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExample.Output</a></td><td><code>812e7c77067b5a4b</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.GenericTypesExampleTest</span></td><td><code>e445e76ae8bcf241</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.general/LoggingExample.html" class="el_class">software.amazon.lambda.durable.examples.general.LoggingExample</a></td><td><code>346b89160c979263</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.general.LoggingExampleTest</span></td><td><code>7b017cbba4ad1f40</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.invoke.InvokeExampleTest</span></td><td><code>b15bc1c2a308c08f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.invoke/SimpleInvokeExample.html" class="el_class">software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample</a></td><td><code>0efae37dafb7a43f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/ComplexMapExample.html" class="el_class">software.amazon.lambda.durable.examples.map.ComplexMapExample</a></td><td><code>f65900f85687dea7</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.map.ComplexMapExampleTest</span></td><td><code>f479bcf661036288</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample.html" class="el_class">software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample</a></td><td><code>87e582fab65b2389</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/DeserializationFailedMapExample$FailedSerDes.html" class="el_class">software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample.FailedSerDes</a></td><td><code>a22680fb6e71652d</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.map.DeserializationFailedMapExampleTest</span></td><td><code>f36ed62d030e6a0c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.map/SimpleMapExample.html" class="el_class">software.amazon.lambda.durable.examples.map.SimpleMapExample</a></td><td><code>d428a5ff75e54e07</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.map.SimpleMapExampleTest</span></td><td><code>c2172fc670d186dd</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample.html" class="el_class">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample</a></td><td><code>971841be8d34f756</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$FailedSerDes.html" class="el_class">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.FailedSerDes</a></td><td><code>c9f4fd5aa77c3951</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/DeserializationFailedParallelExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input</a></td><td><code>59cd64fdfaf50971</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExampleTest</span></td><td><code>76013a52a9420592</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelExample</a></td><td><code>a19bbbdae49adbc6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelExample.Input</a></td><td><code>6c6da1008e4ae9c9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelExample.Output</a></td><td><code>277d8fc2c3b276e6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelExampleTest</span></td><td><code>e59ed73474fdd22f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample</a></td><td><code>faf01e45b81c0fbe</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input</a></td><td><code>3d21c0872060a418</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelFailureToleranceExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Output</a></td><td><code>96031635b6f19b36</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExampleTest</span></td><td><code>f57671c1222916a9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample</a></td><td><code>391b0adbceda5485</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input</a></td><td><code>48781e969e585c36</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.parallel/ParallelWithWaitExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Output</a></td><td><code>1c24cec3aa47445f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExampleTest</span></td><td><code>b0fc1dc04c8d48c7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample.html" class="el_class">software.amazon.lambda.durable.examples.step.DeserializationFailureExample</a></td><td><code>e9542bfec222a99c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/DeserializationFailureExample$FailedSerDes.html" class="el_class">software.amazon.lambda.durable.examples.step.DeserializationFailureExample.FailedSerDes</a></td><td><code>fd18b8d9d1ff8b4e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.step.DeserializationFailureExampleTest</span></td><td><code>703cc424f558a17f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample.html" class="el_class">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample</a></td><td><code>280a3ba02c09edd6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input</a></td><td><code>bb9f4b8adc6e00d7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/ManyAsyncStepsExample$Output.html" class="el_class">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Output</a></td><td><code>3e33e85694f62f13</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExampleTest</span></td><td><code>c5c8c14b4a91035f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/RetryExample.html" class="el_class">software.amazon.lambda.durable.examples.step.RetryExample</a></td><td><code>c9ca84d4bd190370</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.step.RetryExampleTest</span></td><td><code>bb7a90f64ce94631</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.step/SimpleStepExample.html" class="el_class">software.amazon.lambda.durable.examples.step.SimpleStepExample</a></td><td><code>8785e7e710076fb8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.step.SimpleStepExampleTest</span></td><td><code>925d641b41c3a099</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/ApprovalRequest.html" class="el_class">software.amazon.lambda.durable.examples.types.ApprovalRequest</a></td><td><code>5a55978de57368b7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.types/GreetingRequest.html" class="el_class">software.amazon.lambda.durable.examples.types.GreetingRequest</a></td><td><code>8c1392e342e95e1e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample.html" class="el_class">software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample</a></td><td><code>f736a2e0de5bccfe</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/ConcurrentWaitForConditionExample$Input.html" class="el_class">software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input</a></td><td><code>d59bd7766440a7ba</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExampleTest</span></td><td><code>745164ca1e5c9ebc</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitAsyncExample.html" class="el_class">software.amazon.lambda.durable.examples.wait.WaitAsyncExample</a></td><td><code>905a7876254191d7</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.wait.WaitAsyncExampleTest</span></td><td><code>40454143170541c6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitExample.html" class="el_class">software.amazon.lambda.durable.examples.wait.WaitExample</a></td><td><code>79eae817d7a1673f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.wait.WaitExampleTest</span></td><td><code>beaae340522117bc</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-examples/software.amazon.lambda.durable.examples.wait/WaitForConditionExample.html" class="el_class">software.amazon.lambda.durable.examples.wait.WaitForConditionExample</a></td><td><code>f877dde48f3961e2</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.examples.wait.WaitForConditionExampleTest</span></td><td><code>ca00452b49da1eba</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackException.html" class="el_class">software.amazon.lambda.durable.exception.CallbackException</a></td><td><code>c4337e8c0df9b953</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.CallbackExceptionTest</span></td><td><code>a430e7289de42e5a</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackFailedException.html" class="el_class">software.amazon.lambda.durable.exception.CallbackFailedException</a></td><td><code>a5e7c0bc271a7093</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackSubmitterException.html" class="el_class">software.amazon.lambda.durable.exception.CallbackSubmitterException</a></td><td><code>49f1a7d7cdf11d61</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/CallbackTimeoutException.html" class="el_class">software.amazon.lambda.durable.exception.CallbackTimeoutException</a></td><td><code>615b738dc6ab1a4b</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ChildContextFailedException.html" class="el_class">software.amazon.lambda.durable.exception.ChildContextFailedException</a></td><td><code>5595319dd963c75f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableExecutionException.html" class="el_class">software.amazon.lambda.durable.exception.DurableExecutionException</a></td><td><code>8fac0bb607443791</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.DurableExecutionExceptionTest</span></td><td><code>c5822b4a019fcde0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/DurableOperationException.html" class="el_class">software.amazon.lambda.durable.exception.DurableOperationException</a></td><td><code>5e2425f660ed0e2e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/IllegalDurableOperationException.html" class="el_class">software.amazon.lambda.durable.exception.IllegalDurableOperationException</a></td><td><code>c37e2825cc5d46cf</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeException.html" class="el_class">software.amazon.lambda.durable.exception.InvokeException</a></td><td><code>865cb5bbfb177d4e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.InvokeExceptionTest</span></td><td><code>0f079fc47fda63de</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeFailedException.html" class="el_class">software.amazon.lambda.durable.exception.InvokeFailedException</a></td><td><code>4f9de09c3ef79bad</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeStoppedException.html" class="el_class">software.amazon.lambda.durable.exception.InvokeStoppedException</a></td><td><code>79c97acb75a4d663</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/InvokeTimedOutException.html" class="el_class">software.amazon.lambda.durable.exception.InvokeTimedOutException</a></td><td><code>77247048a88d26ac</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/MapIterationFailedException.html" class="el_class">software.amazon.lambda.durable.exception.MapIterationFailedException</a></td><td><code>6e16feed7bae2394</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/NonDeterministicExecutionException.html" class="el_class">software.amazon.lambda.durable.exception.NonDeterministicExecutionException</a></td><td><code>8578be3a56781c92</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/ParallelBranchFailedException.html" class="el_class">software.amazon.lambda.durable.exception.ParallelBranchFailedException</a></td><td><code>e445fa09e1e79e5f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/SerDesException.html" class="el_class">software.amazon.lambda.durable.exception.SerDesException</a></td><td><code>265af419eb492b28</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.SerDesExceptionTest</span></td><td><code>f24eb8d2b2fabe32</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepException.html" class="el_class">software.amazon.lambda.durable.exception.StepException</a></td><td><code>e4c6a2e1fb3dddc9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepFailedException.html" class="el_class">software.amazon.lambda.durable.exception.StepFailedException</a></td><td><code>8e4f6d587f702a57</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.StepFailedExceptionTest</span></td><td><code>b0a4132ddb07edd1</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/StepInterruptedException.html" class="el_class">software.amazon.lambda.durable.exception.StepInterruptedException</a></td><td><code>8ac69770f5418259</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.StepInterruptedExceptionTest</span></td><td><code>9a0ba346cb69557f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/UnrecoverableDurableExecutionException.html" class="el_class">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</a></td><td><code>b797519db564bb62</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionExceptionTest</span></td><td><code>07a3d7b10e8973b6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.exception/WaitForConditionFailedException.html" class="el_class">software.amazon.lambda.durable.exception.WaitForConditionFailedException</a></td><td><code>02a2b43ab0912d4d</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher.html" class="el_class">software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher</a></td><td><code>bafd09d30daa5882</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ApiRequestDelayedBatcher$Item.html" class="el_class">software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher.Item</a></td><td><code>4995907ed4d79930</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.ApiRequestDelayedBatcherTest</span></td><td><code>8b8d7bd9fcfcbed6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/CheckpointManager.html" class="el_class">software.amazon.lambda.durable.execution.CheckpointManager</a></td><td><code>ca79dd2eb6dc6b67</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.CheckpointManagerTest</span></td><td><code>77ff1ad4e034e690</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.DurableExecutionTest</span></td><td><code>3f7d82a631bc1db9</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.DurableExecutionWrapperTest</span></td><td><code>b697f5239671e4a2</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.DurableExecutionWrapperTest.TestInput</span></td><td><code>e3515c2010cb80ec</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.DurableExecutionWrapperTest.TestOutput</span></td><td><code>45c90b71cbef16c0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/DurableExecutor.html" class="el_class">software.amazon.lambda.durable.execution.DurableExecutor</a></td><td><code>429470a405dfe206</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionManager.html" class="el_class">software.amazon.lambda.durable.execution.ExecutionManager</a></td><td><code>46eb84341a2828fd</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.ExecutionManager.1</span></td><td><code>f2fcf8b0308d9332</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.execution.ExecutionManagerTest</span></td><td><code>f712d39632f0b932</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ExecutionMode.html" class="el_class">software.amazon.lambda.durable.execution.ExecutionMode</a></td><td><code>86a892b39dcf0498</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/InternalExecutor.html" class="el_class">software.amazon.lambda.durable.execution.InternalExecutor</a></td><td><code>15bda0c1fb5cc86b</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/OperationIdGenerator.html" class="el_class">software.amazon.lambda.durable.execution.OperationIdGenerator</a></td><td><code>44125dc31ec68419</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/SuspendExecutionException.html" class="el_class">software.amazon.lambda.durable.execution.SuspendExecutionException</a></td><td><code>555f2e283fa2c2f2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadContext.html" class="el_class">software.amazon.lambda.durable.execution.ThreadContext</a></td><td><code>8fe540284812a432</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.execution/ThreadType.html" class="el_class">software.amazon.lambda.durable.execution.ThreadType</a></td><td><code>0e1d30f4b2a64d07</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/DurableLogger.html" class="el_class">software.amazon.lambda.durable.logging.DurableLogger</a></td><td><code>7fc5b43afa61b2c1</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.logging.DurableLoggerTest</span></td><td><code>2ce4e63ef2d8bc7a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.logging.DurableLoggerTest.Mode</span></td><td><code>dad8eb6bf6f24e9f</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.logging.DurableLoggerTest.Suppression</span></td><td><code>e158ccfad1ee908b</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.logging/LoggerConfig.html" class="el_class">software.amazon.lambda.durable.logging.LoggerConfig</a></td><td><code>2888a3b1c67a1780</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ConcurrencyCompletionStatus.html" class="el_class">software.amazon.lambda.durable.model.ConcurrencyCompletionStatus</a></td><td><code>0a87a6a54c223555</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionInput.html" class="el_class">software.amazon.lambda.durable.model.DurableExecutionInput</a></td><td><code>e66fdd3d683545b0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/DurableExecutionOutput.html" class="el_class">software.amazon.lambda.durable.model.DurableExecutionOutput</a></td><td><code>df84c0e0f028e342</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ExecutionStatus.html" class="el_class">software.amazon.lambda.durable.model.ExecutionStatus</a></td><td><code>1903447d6ded033e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult.html" class="el_class">software.amazon.lambda.durable.model.MapResult</a></td><td><code>8d68804327c30dc5</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapError.html" class="el_class">software.amazon.lambda.durable.model.MapResult.MapError</a></td><td><code>2bcd802b318ab187</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem.html" class="el_class">software.amazon.lambda.durable.model.MapResult.MapResultItem</a></td><td><code>b66da47e822e020d</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/MapResult$MapResultItem$Status.html" class="el_class">software.amazon.lambda.durable.model.MapResult.MapResultItem.Status</a></td><td><code>7e320cf4f27903d0</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.model.MapResultTest</span></td><td><code>a2690230f08263ca</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationIdentifier.html" class="el_class">software.amazon.lambda.durable.model.OperationIdentifier</a></td><td><code>7c7200f363c358bf</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/OperationSubType.html" class="el_class">software.amazon.lambda.durable.model.OperationSubType</a></td><td><code>3fbf3f8c86c692cc</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/ParallelResult.html" class="el_class">software.amazon.lambda.durable.model.ParallelResult</a></td><td><code>094dde315ed7a5e4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.model.ParallelResultTest</span></td><td><code>5e2ef85169d21f9e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.model/WaitForConditionResult.html" class="el_class">software.amazon.lambda.durable.model.WaitForConditionResult</a></td><td><code>2cb5df00732d9fa3</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/BaseDurableOperation.html" class="el_class">software.amazon.lambda.durable.operation.BaseDurableOperation</a></td><td><code>0bc12f1dcc1852e5</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/CallbackOperation.html" class="el_class">software.amazon.lambda.durable.operation.CallbackOperation</a></td><td><code>8bd7d07cab8877f8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.CallbackOperation.1</span></td><td><code>dbe75bf65fb437ff</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.CallbackOperationTest</span></td><td><code>f2ac4bbe9cce2dd8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.CallbackOperationTest.FailingSerDes</span></td><td><code>bbae4d74167fd192</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.CallbackOperationTest.TrackingSerDes</span></td><td><code>736c6aaf74c273de</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ChildContextOperation.html" class="el_class">software.amazon.lambda.durable.operation.ChildContextOperation</a></td><td><code>ed5617fc41268b24</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ChildContextOperation.1</span></td><td><code>1c20c7cb1207cb7a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ChildContextOperationTest</span></td><td><code>3ef5ef0f76fc85a1</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ConcurrencyOperation.html" class="el_class">software.amazon.lambda.durable.operation.ConcurrencyOperation</a></td><td><code>a4552423da3b1336</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ConcurrencyOperation.MockitoMock.wP4U79FB</span></td><td><code>a9fcbd9aa628ff05</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ConcurrencyOperationTest</span></td><td><code>fff17abc7def2327</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ConcurrencyOperationTest.TestConcurrencyOperation</span></td><td><code>147512956d471f3d</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/InvokeOperation.html" class="el_class">software.amazon.lambda.durable.operation.InvokeOperation</a></td><td><code>fbc8d44cd21fcfeb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.InvokeOperation.1</span></td><td><code>92665fedc4e70ad6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.InvokeOperationTest</span></td><td><code>c2f862a1afe9cf7e</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation.html" class="el_class">software.amazon.lambda.durable.operation.MapOperation</a></td><td><code>9410629484400ca6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/MapOperation$1.html" class="el_class">software.amazon.lambda.durable.operation.MapOperation.1</a></td><td><code>1c973662fe86cf33</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.MapOperation.2</span></td><td><code>bfa04e2c7604b15c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/ParallelOperation.html" class="el_class">software.amazon.lambda.durable.operation.ParallelOperation</a></td><td><code>b8521fbccc0bd9b7</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.ParallelOperationTest</span></td><td><code>78efed47ab0283d7</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/SerializableDurableOperation.html" class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperation</a></td><td><code>2c315cb3d7f8a2d4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperation.MockitoMock.J2mPB1pc</span></td><td><code>3748d79adf4a4482</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest</span></td><td><code>c2d9f21b7cc8514c</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.1</span></td><td><code>4ee19b375f38f641</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.10</span></td><td><code>a27d7f48b2ebeb6b</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.11</span></td><td><code>d5cb5f3d3bc111ce</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.12</span></td><td><code>d560f9361cbacc7c</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.13</span></td><td><code>e5f13827d8dd2fcb</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.2</span></td><td><code>2f55f801d340c978</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.3</span></td><td><code>2b80249ac560c1b1</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.4</span></td><td><code>27416932a2cfe26a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.5</span></td><td><code>5a596c10d188d666</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.6</span></td><td><code>e85d32d5f9206556</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.7</span></td><td><code>d17426793de9991d</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.8</span></td><td><code>09affdb6abae3194</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.SerializableDurableOperationTest.9</span></td><td><code>8ef3d19fa0c86833</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/StepOperation.html" class="el_class">software.amazon.lambda.durable.operation.StepOperation</a></td><td><code>2e4d72d6db074ac1</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.StepOperation.1</span></td><td><code>d7da36320f4b86be</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.StepOperationTest</span></td><td><code>88079de784be5887</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.StepOperationTest.CustomTestException</span></td><td><code>088c0088817e7314</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitForConditionOperation.html" class="el_class">software.amazon.lambda.durable.operation.WaitForConditionOperation</a></td><td><code>be76ed4be2708c17</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.WaitForConditionOperation.1</span></td><td><code>52aa86ff6630081a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.WaitForConditionOperationTest</span></td><td><code>0aa58c387615b323</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.operation/WaitOperation.html" class="el_class">software.amazon.lambda.durable.operation.WaitOperation</a></td><td><code>ba64834823cfbad4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.operation.WaitOperationTest</span></td><td><code>d39e995ed0987ac1</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy.html" class="el_class">software.amazon.lambda.durable.retry.JitterStrategy</a></td><td><code>3e0b855e6f2627f4</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$1.html" class="el_class">software.amazon.lambda.durable.retry.JitterStrategy.1</a></td><td><code>2a0408983e5831c9</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$2.html" class="el_class">software.amazon.lambda.durable.retry.JitterStrategy.2</a></td><td><code>9b26f38e3f0d96e2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/JitterStrategy$3.html" class="el_class">software.amazon.lambda.durable.retry.JitterStrategy.3</a></td><td><code>81d8db7380dffcc5</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.JitterStrategyTest</span></td><td><code>814e95cce732a177</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies.html" class="el_class">software.amazon.lambda.durable.retry.PollingStrategies</a></td><td><code>02e330cb0d6ef554</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/PollingStrategies$Presets.html" class="el_class">software.amazon.lambda.durable.retry.PollingStrategies.Presets</a></td><td><code>4947ba77e8363db8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.PollingStrategiesTest</span></td><td><code>78826e7077a1de3f</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryDecision.html" class="el_class">software.amazon.lambda.durable.retry.RetryDecision</a></td><td><code>a98b8abbaec12a50</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryDecisionTest</span></td><td><code>654cf9db929a83ec</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryIntegrationTest</span></td><td><code>71d9181b2464318a</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryIntegrationTest.1</span></td><td><code>baa78d10402b9980</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryIntegrationTest.2</span></td><td><code>6468639ad54a5e88</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryIntegrationTest.3</span></td><td><code>439c3197520422bf</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies.html" class="el_class">software.amazon.lambda.durable.retry.RetryStrategies</a></td><td><code>a5089566b18f717c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/RetryStrategies$Presets.html" class="el_class">software.amazon.lambda.durable.retry.RetryStrategies.Presets</a></td><td><code>f060a3cd605c604d</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.RetryStrategiesTest</span></td><td><code>dba82f3a881ad2b6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies.html" class="el_class">software.amazon.lambda.durable.retry.WaitStrategies</a></td><td><code>76ff7691677d0e5b</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.retry/WaitStrategies$Presets.html" class="el_class">software.amazon.lambda.durable.retry.WaitStrategies.Presets</a></td><td><code>1c64ae967dadfa91</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.retry.WaitStrategiesTest</span></td><td><code>d562aea1257980a2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module.html" class="el_class">software.amazon.lambda.durable.serde.AwsSdkV2Module</a></td><td><code>0c0bcab83e7bff0a</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkDeserializer.html" class="el_class">software.amazon.lambda.durable.serde.AwsSdkV2Module.SdkDeserializer</a></td><td><code>00f586448a99eed2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/AwsSdkV2Module$SdkSerializer.html" class="el_class">software.amazon.lambda.durable.serde.AwsSdkV2Module.SdkSerializer</a></td><td><code>7d068f40311f17b8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.AwsSdkV2ModuleTest</span></td><td><code>aa59aa1ff6a8b6bf</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes.html" class="el_class">software.amazon.lambda.durable.serde.DurableInputOutputSerDes</a></td><td><code>e6cbcf4622b09f11</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$1.html" class="el_class">software.amazon.lambda.durable.serde.DurableInputOutputSerDes.1</a></td><td><code>50850540b2505eb0</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$2.html" class="el_class">software.amazon.lambda.durable.serde.DurableInputOutputSerDes.2</a></td><td><code>d48bf45265cbeab2</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/DurableInputOutputSerDes$3.html" class="el_class">software.amazon.lambda.durable.serde.DurableInputOutputSerDes.3</a></td><td><code>f5dfc8fdeb238c91</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.DurableInputOutputSerDesTest</span></td><td><code>505b3fa2d2231bbe</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.serde/JacksonSerDes.html" class="el_class">software.amazon.lambda.durable.serde.JacksonSerDes</a></td><td><code>3b8981aec06b57bd</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTest</span></td><td><code>c9c6778dcb75a4a5</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTest.1CircularReference</span></td><td><code>507ff2269f67b1d7</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTest.TestData</span></td><td><code>3540df306147a579</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest</span></td><td><code>08faf9ee0a2682d8</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.1</span></td><td><code>cb11e0518dc8f0d1</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.10</span></td><td><code>863e007c932bdd28</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.11</span></td><td><code>6466434f419a76b4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.2</span></td><td><code>8c9b2a121430d200</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.3</span></td><td><code>0a94c101d4ab49aa</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.4</span></td><td><code>e7828a0cde48e8c2</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.5</span></td><td><code>540a19342dd06140</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.6</span></td><td><code>706b942f822c6586</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.7</span></td><td><code>dc758716610e2931</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.8</span></td><td><code>521d237c5c9fabde</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.9</span></td><td><code>a64bc010bcb92584</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.JacksonSerDesTypeTokenTest.TestObject</span></td><td><code>7399789b61860df6</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.serde.SerDes.MockitoMock.N8g2g0ZP</span></td><td><code>5f15d77f580357e8</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/CloudDurableTestRunner.html" class="el_class">software.amazon.lambda.durable.testing.CloudDurableTestRunner</a></td><td><code>b23d495cf963708e</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.CloudDurableTestRunnerTest</span></td><td><code>580e774aea2275aa</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/LocalDurableTestRunner.html" class="el_class">software.amazon.lambda.durable.testing.LocalDurableTestRunner</a></td><td><code>ecbc1828f692b638</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.LocalDurableTestRunnerTest</span></td><td><code>140d0acd019d8e45</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.LocalDurableTestRunnerTest.1</span></td><td><code>65552c14b5e3aa1c</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.SkipTimeTest</span></td><td><code>ef76624150ec97bc</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.SkipTimeTest.TestInput</span></td><td><code>333d6da42755c1d6</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestOperation.html" class="el_class">software.amazon.lambda.durable.testing.TestOperation</a></td><td><code>54dea8397ad969ef</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing/TestResult.html" class="el_class">software.amazon.lambda.durable.testing.TestResult</a></td><td><code>5d3594e66d854040</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/EventProcessor.html" class="el_class">software.amazon.lambda.durable.testing.local.EventProcessor</a></td><td><code>bcff3125ead2eb86</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.local.EventProcessor.1</span></td><td><code>e3b975fa9580106c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/LocalMemoryExecutionClient.html" class="el_class">software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient</a></td><td><code>9935e4c635fa2d71</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient.1</span></td><td><code>c615bcfc9d7f3c61</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClientTest</span></td><td><code>734a383c07f2519a</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java-testing/software.amazon.lambda.durable.testing.local/OperationResult.html" class="el_class">software.amazon.lambda.durable.testing.local.OperationResult</a></td><td><code>5571ce777aa88c7c</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ExceptionHelper.html" class="el_class">software.amazon.lambda.durable.util.ExceptionHelper</a></td><td><code>1b3765914a8e8352</code></td></tr><tr><td><a href="aws-durable-execution-sdk-java/software.amazon.lambda.durable.util/ParameterValidator.html" class="el_class">software.amazon.lambda.durable.util.ParameterValidator</a></td><td><code>873d1fd88e4837e4</code></td></tr><tr><td><span class="el_class">software.amazon.lambda.durable.validation.ParameterValidatorTest</span></td><td><code>c1fc5d629eb010e5</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECDSASignature</span></td><td><code>bf7560bcc0e27552</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECDSASignature.Raw</span></td><td><code>612d1fdcbc91e3d1</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECDSASignature.RawECDSA</span></td><td><code>a6aa09e6c512aa51</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECDSASignature.SHA1</span></td><td><code>b0b781b4f0e3faec</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECKeyFactory</span></td><td><code>7957ef10d6acbcc4</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECKeyPairGenerator</span></td><td><code>0cf87a64c6df86fd</code></td></tr><tr><td><span class="el_class">sun.security.ec.ECPublicKeyImpl</span></td><td><code>57bf7e24bf8d9e7b</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC</span></td><td><code>047b876ac98a1133</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.1</span></td><td><code>f831e2713965eef1</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderService</span></td><td><code>d7855095f52a725d</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderServiceA</span></td><td><code>84b6e3e9f56e578d</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider</span></td><td><code>75dc1878c65381a7</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider.1</span></td><td><code>3c312cdfef3f9db8</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider.ProviderService</span></td><td><code>e66e7f181e19c4a1</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11</span></td><td><code>40f0ba05ce299c48</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11.Descriptor</span></td><td><code>168514eafd23451b</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC</span></td><td><code>c848528cde3b9a66</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.1</span></td><td><code>329160750da2a246</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.ProviderService</span></td><td><code>b13e03db329cdd65</code></td></tr><tr><td><span class="el_class">sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo</span></td><td><code>9ed83010eeaa402e</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.14.202510111229</span></div></body></html>
    \ No newline at end of file
    diff --git a/coverage/jacoco.csv b/coverage/jacoco.csv
    new file mode 100644
    index 000000000..4be7d68e0
    --- /dev/null
    +++ b/coverage/jacoco.csv
    @@ -0,0 +1,181 @@
    +GROUP,PACKAGE,CLASS,INSTRUCTION_MISSED,INSTRUCTION_COVERED,BRANCH_MISSED,BRANCH_COVERED,LINE_MISSED,LINE_COVERED,COMPLEXITY_MISSED,COMPLEXITY_COVERED,METHOD_MISSED,METHOD_COVERED
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,DurableFuture,0,36,0,0,0,8,0,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,DurableConfig,11,222,4,8,4,61,3,20,0,17
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,TypeToken.new TypeToken() {...},0,4,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,TypeToken.new TypeToken() {...},0,4,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,DurableHandler,36,27,0,0,6,8,1,4,1,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,DurableContext,253,234,0,0,51,53,30,26,30,26
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,DurableConfig.Builder,0,62,0,0,0,19,0,9,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,TypeToken,4,87,2,6,2,20,2,10,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable,ParallelDurableFuture,8,17,0,0,1,4,1,2,1,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,MapResult.MapResultItem,0,33,0,0,0,4,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,OperationIdentifier,0,31,0,0,0,3,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,WaitForConditionResult,0,21,0,0,0,3,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,OperationSubType,3,63,0,0,1,12,1,3,1,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,MapResult,2,105,2,8,0,19,2,16,0,13
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,MapResult.MapResultItem.Status,0,21,0,0,0,4,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,DurableExecutionInput,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,ExecutionStatus,0,24,0,0,0,5,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,MapResult.MapError,0,24,0,0,0,3,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,ConcurrencyCompletionStatus,0,34,0,4,0,6,0,5,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,DurableExecutionOutput,0,33,0,0,0,4,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.model,ParallelResult,0,15,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,ConcurrencyOperation,56,436,9,37,14,100,8,31,0,16
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,WaitOperation,0,75,2,6,0,27,2,8,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,WaitForConditionOperation,25,296,8,26,5,79,8,23,0,13
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,StepOperation,28,313,7,36,8,79,7,29,0,13
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,CallbackOperation,14,116,3,10,4,29,3,11,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,MapOperation,35,324,9,36,9,86,9,22,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,ChildContextOperation,43,353,12,50,8,95,12,35,0,13
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,BaseDurableOperation,71,471,5,39,10,106,6,46,1,29
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,MapOperation.new TypeToken() {...},0,3,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,InvokeOperation,7,115,2,10,2,31,2,11,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,ParallelOperation,5,150,1,15,1,42,1,16,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.operation,SerializableDurableOperation,31,104,3,7,6,34,3,10,1,7
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,WaitStrategies.Presets,3,10,0,0,1,2,1,1,1,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,JitterStrategy,0,21,0,0,0,4,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,JitterStrategy.new JitterStrategy() {...},0,15,0,0,0,2,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,JitterStrategy.new JitterStrategy() {...},0,9,0,0,0,2,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,JitterStrategy.new JitterStrategy() {...},0,7,0,0,0,2,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,PollingStrategies.Presets,3,9,0,0,1,2,1,1,1,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,PollingStrategies,3,110,0,16,1,23,1,14,1,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,WaitStrategies,9,100,1,11,2,24,2,10,1,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,RetryStrategies,3,88,0,10,1,22,1,9,1,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,RetryStrategies.Presets,3,14,0,0,1,4,1,2,1,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.retry,RetryDecision,0,46,0,4,0,9,0,8,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.util,CompletedDurableFuture,9,0,0,0,4,0,2,0,2,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.util,ParameterValidator,0,170,0,40,0,39,0,29,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.util,ExceptionHelper,3,94,0,2,1,22,1,9,1,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,StepException,0,6,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,InvokeException,1,11,1,1,1,4,1,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,CallbackFailedException,2,23,2,2,1,6,2,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,MapIterationFailedException,3,34,2,2,1,6,2,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,InvokeStoppedException,0,4,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,CallbackTimeoutException,0,8,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,CallbackSubmitterException,0,7,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,CallbackException,0,23,0,0,0,6,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,StepInterruptedException,0,51,1,3,0,13,1,5,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,InvokeTimedOutException,0,4,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,DurableExecutionException,0,22,0,2,0,8,0,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,InvokeFailedException,0,4,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,ChildContextFailedException,3,34,2,2,1,6,2,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,IllegalDurableOperationException,0,11,0,0,0,5,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,StepFailedException,0,30,0,2,0,8,0,3,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,UnrecoverableDurableExecutionException,0,11,0,0,0,4,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,NonDeterministicExecutionException,0,11,0,0,0,5,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,WaitForConditionFailedException,1,17,1,1,0,5,1,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,SerDesException,0,9,0,0,0,4,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,DurableOperationException,0,58,0,4,0,15,0,10,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.exception,ParallelBranchFailedException,0,37,0,4,0,7,0,5,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,SuspendExecutionException,0,4,0,0,0,2,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,InternalExecutor,0,22,0,0,0,5,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ThreadType,0,28,0,0,0,7,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ThreadContext,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,OperationIdGenerator,7,41,0,2,2,9,0,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,DurableExecutor,1,190,1,13,0,51,1,15,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ExecutionMode,0,15,0,0,0,3,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ApiRequestDelayedBatcher.Item,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ExecutionManager,22,516,7,55,8,107,7,58,0,33
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,CheckpointManager,0,419,1,27,0,89,1,28,0,15
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.execution,ApiRequestDelayedBatcher,0,269,1,21,0,70,1,18,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.logging,DurableLogger,0,170,2,18,0,38,2,24,0,16
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.logging,LoggerConfig,5,11,0,0,1,2,1,2,1,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.context,StepContextImpl,0,46,2,4,0,13,2,5,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.context,BaseContextImpl,0,52,0,0,0,18,0,9,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.context,DurableContextImpl,0,485,4,18,0,124,4,27,0,20
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,WaitForCallbackConfig,0,43,0,4,0,9,0,7,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,RunInChildContextConfig.Builder,0,16,0,0,0,6,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,RunInChildContextConfig,0,21,0,0,0,6,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,WaitForConditionConfig.Builder,0,20,0,0,0,7,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,StepConfig,0,51,0,4,0,10,0,8,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,WaitForConditionConfig,0,51,0,2,0,14,0,7,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,StepConfig.Builder,0,32,0,0,0,12,0,5,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,InvokeConfig.Builder,5,27,0,0,2,10,1,4,1,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,MapConfig.Builder,0,44,0,4,0,14,0,7,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,CallbackConfig,0,41,0,0,0,10,0,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,MapConfig,0,53,0,4,0,11,0,8,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,CompletionConfig,0,90,0,8,0,13,0,11,0,7
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,InvokeConfig,0,41,0,0,0,10,0,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,WaitForCallbackConfig.Builder,0,18,0,0,0,6,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,ParallelBranchConfig.Builder,0,16,0,0,0,6,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,ParallelConfig,0,32,0,4,0,8,0,6,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,CallbackConfig.Builder,0,38,0,0,0,14,0,5,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,ParallelConfig.Builder,5,32,3,5,1,8,3,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,ParallelBranchConfig,6,15,0,0,1,5,1,3,1,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.config,StepSemantics,0,15,0,0,0,3,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,AwsSdkV2Module.SdkDeserializer,10,42,0,0,3,10,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,DurableInputOutputSerDes.new JsonDeserializer() {...},0,27,0,2,0,8,0,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,DurableInputOutputSerDes.new JsonSerializer() {...},10,3,0,0,3,1,1,1,1,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,DurableInputOutputSerDes.new JsonDeserializer() {...},11,3,0,0,2,1,1,1,1,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,AwsSdkV2Module.SdkSerializer,10,22,0,0,3,6,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,DurableInputOutputSerDes,14,120,2,2,8,23,2,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,AwsSdkV2Module,0,40,0,2,0,10,0,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.serde,JacksonSerDes,0,82,0,4,0,21,0,6,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java,software.amazon.lambda.durable.client,LambdaDurableFunctionsClient,30,9,0,0,12,3,2,1,2,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing.cloud,HistoryEventProcessor,755,0,160,0,212,0,100,0,8,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing.cloud,HistoryPoller,96,0,12,0,29,0,10,0,4,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing.local,LocalMemoryExecutionClient,40,720,16,60,10,172,18,57,2,30
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing.local,EventProcessor,113,324,15,25,24,92,15,23,0,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing.local,OperationResult,0,40,0,0,0,5,0,5,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing,CloudDurableTestRunner,231,101,5,1,47,19,12,6,9,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing,LocalDurableTestRunner,32,322,3,7,4,76,6,25,3,23
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing,TestResult,42,161,9,11,8,34,10,19,4,15
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing,AsyncExecution,310,0,30,0,74,0,38,0,23,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-testing,software.amazon.lambda.durable.testing,TestOperation,65,65,9,3,14,17,16,9,10,9
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.callback,WaitForCallbackFailedExample.FailedSerDes,2,17,1,1,1,3,1,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.callback,CallbackExample,6,105,1,1,0,18,1,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.callback,WaitForCallbackFailedExample,6,42,0,0,2,13,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample.Output,0,15,0,0,0,6,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample.new TypeToken() {...},0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample.new TypeToken() {...},0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample.new TypeToken() {...},0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,ErrorHandlingExample,4,75,0,0,1,21,0,7,0,7
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample,0,141,0,0,0,29,0,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,CustomConfigExample.SnakeCaseSerDes,14,25,0,0,4,5,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,LoggingExample,0,62,0,0,0,10,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,ErrorHandlingExample.ServiceUnavailableException,0,13,0,0,0,6,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,CustomConfigExample.CustomData,0,18,0,0,0,7,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,NoopExample,7,0,0,0,2,0,2,0,2,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericInputOutputExample,0,71,0,0,0,16,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericTypesExample.Input,0,9,0,0,0,4,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,GenericInputOutputExample.new TypeToken() {...},0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,CustomConfigExample,3,78,3,1,0,23,2,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.general,CustomPollingExample,3,57,0,0,2,14,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.types,GreetingRequest,0,21,0,2,0,7,0,5,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.types,ApprovalRequest,0,18,0,0,0,3,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.invoke,SimpleInvokeExample,0,32,0,0,0,8,0,2,0,2
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,ConcurrentWaitForConditionExample,0,65,0,2,0,13,0,5,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,WaitForConditionExample,0,31,0,2,0,6,0,4,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,WaitAtLeastInProcessExample,68,0,0,0,21,0,4,0,4,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,WaitAtLeastExample,68,0,0,0,21,0,4,0,4,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,WaitAsyncExample,0,50,0,0,0,9,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,WaitExample,67,15,0,0,13,3,3,3,3,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.wait,ConcurrentWaitForConditionExample.Input,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.child,ManyAsyncChildContextExample.Input,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.child,ChildContextExample,0,184,0,0,0,23,0,13,0,13
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.child,ManyAsyncChildContextExample.Output,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.child,ManyAsyncChildContextExample,0,151,0,2,0,25,0,7,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelExample,0,121,0,2,0,21,0,5,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelWithWaitExample.Output,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,DeserializationFailedParallelExample.FailedSerDes,2,17,1,1,1,3,1,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelExample.Output,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,DeserializationFailedParallelExample,20,56,2,0,5,13,2,3,1,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelFailureToleranceExample,0,150,0,6,0,29,0,7,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelFailureToleranceExample.Input,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,DeserializationFailedParallelExample.Input,0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelExample.Input,0,6,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelWithWaitExample.Input,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelWithWaitExample,0,148,0,0,0,21,0,8,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.parallel,ParallelFailureToleranceExample.Output,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.map,ComplexMapExample,0,130,0,0,0,17,0,8,0,8
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.map,DeserializationFailedMapExample,9,71,0,0,1,10,1,3,1,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.map,DeserializationFailedMapExample.FailedSerDes,0,19,0,2,0,4,0,2,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.map,SimpleMapExample,0,65,0,0,0,8,0,4,0,4
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,ManyAsyncStepsExample.Input,0,9,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,ManyAsyncStepsExample.Output,0,12,0,0,0,1,0,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,DeserializationFailureExample.FailedSerDes,2,17,1,1,1,3,1,1,0,1
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,SimpleStepExample,0,39,0,0,0,5,0,5,0,5
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,RetryExample,49,93,1,1,9,22,1,6,0,6
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,RetryInProcessExample,114,0,2,0,34,0,6,0,5,0
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,DeserializationFailureExample,8,35,0,0,2,9,0,3,0,3
    +AWS Lambda Durable Execution SDK Coverage Report/aws-durable-execution-sdk-java-examples,software.amazon.lambda.durable.examples.step,ManyAsyncStepsExample,0,141,0,2,0,23,0,6,0,5
    diff --git a/coverage/jacoco.svg b/coverage/jacoco.svg
    new file mode 100644
    index 000000000..2a12b3cba
    --- /dev/null
    +++ b/coverage/jacoco.svg
    @@ -0,0 +1 @@
    +<svg xmlns="http://www.w3.org/2000/svg" width="106" height="20" role="img" aria-label="coverage: 80.9%"><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="106" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="45" height="20" fill="#a4a61d"/><rect width="106" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="825" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">80.9%</text><text x="825" y="140" transform="scale(.1)" fill="#fff" textLength="350">80.9%</text></g></svg>
    \ No newline at end of file
    diff --git a/coverage/jacoco.xml b/coverage/jacoco.xml
    new file mode 100644
    index 000000000..62181cad6
    --- /dev/null
    +++ b/coverage/jacoco.xml
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="AWS Lambda Durable Execution SDK Coverage Report"><sessioninfo id="runnervm727z3-d872f5b9" start="1775695156201" dump="1775695168583"/><sessioninfo id="runnervm727z3-48c689b3" start="1775695173230" dump="1775695176978"/><sessioninfo id="runnervm727z3-441e5ec8" start="1775695180137" dump="1775695184843"/><sessioninfo id="runnervm727z3-b49d10b1" start="1775695185881" dump="1775695198285"/><group name="aws-durable-execution-sdk-java"><package name="software/amazon/lambda/durable"><class name="software/amazon/lambda/durable/DurableContext$MapFunction" sourcefilename="DurableContext.java"/><class name="software/amazon/lambda/durable/DurableFuture" sourcefilename="DurableFuture.java"><method name="allOf" desc="([Lsoftware/amazon/lambda/durable/DurableFuture;)Ljava/util/List;" line="41"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="allOf" desc="(Ljava/util/List;)Ljava/util/List;" line="55"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="anyOf" desc="([Lsoftware/amazon/lambda/durable/DurableFuture;)Ljava/lang/Object;" line="65"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$anyOf$2" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="68"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$anyOf$1" desc="(I)[Ljava/util/concurrent/CompletableFuture;" line="67"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$anyOf$0" desc="(Lsoftware/amazon/lambda/durable/DurableFuture;)Ljava/util/concurrent/CompletableFuture;" line="66"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/DurableConfig" sourcefilename="DurableConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/DurableConfig$Builder;)V" line="98"><counter type="INSTRUCTION" missed="0" covered="47"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="defaultConfig" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="117"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="126"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDurableExecutionClient" desc="()Lsoftware/amazon/lambda/durable/client/DurableExecutionClient;" line="135"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSerDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="144"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExecutorService" desc="()Ljava/util/concurrent/ExecutorService;" line="153"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getLoggerConfig" desc="()Lsoftware/amazon/lambda/durable/logging/LoggerConfig;" line="162"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPollingStrategy" desc="()Lsoftware/amazon/lambda/durable/retry/PollingStrategy;" line="171"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCheckpointDelay" desc="()Ljava/time/Duration;" line="180"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateConfiguration" desc="()V" line="184"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createDefaultDurableExecutionClient" desc="()Lsoftware/amazon/lambda/durable/client/DurableExecutionClient;" line="203"><counter type="INSTRUCTION" missed="6" covered="55"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="1" covered="17"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addUserAgentSuffix" desc="(Lsoftware/amazon/awssdk/services/lambda/LambdaClientBuilder;)Lsoftware/amazon/awssdk/services/lambda/LambdaClientBuilder;" line="236"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getProjectVersion" desc="(Ljava/lang/String;)Ljava/lang/String;" line="242"><counter type="INSTRUCTION" missed="5" covered="20"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="3" covered="6"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createDefaultExecutor" desc="()Ljava/util/concurrent/ExecutorService;" line="265"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$1" desc="()Ljava/time/Duration;" line="106"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$0" desc="(Ljava/lang/Runnable;)Ljava/lang/Thread;" line="85"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="64"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="11" covered="222"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="4" covered="61"/><counter type="COMPLEXITY" missed="3" covered="20"/><counter type="METHOD" missed="0" covered="17"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/DurableCallbackFuture" sourcefilename="DurableCallbackFuture.java"/><class name="software/amazon/lambda/durable/StepContext" sourcefilename="StepContext.java"/><class name="software/amazon/lambda/durable/TypeToken$1" sourcefilename="TypeToken.java"><method name="&lt;init&gt;" desc="(Ljava/lang/reflect/Type;)V" line="59"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/TypeToken$2" sourcefilename="TypeToken.java"><method name="&lt;init&gt;" desc="(Ljava/lang/reflect/Type;)V" line="75"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/DurableHandler" sourcefilename="DurableHandler.java"><method name="&lt;init&gt;" desc="()V" line="30"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="47"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="116"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/io/InputStream;Ljava/io/OutputStream;Lcom/amazonaws/services/lambda/runtime/Context;)V" line="130"><counter type="INSTRUCTION" missed="36" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="31"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="36" covered="27"/><counter type="LINE" missed="6" covered="8"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/DurableContext" sourcefilename="DurableContext.java"><method name="step" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;)Ljava/lang/Object;" line="37"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="step" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/StepConfig;)Ljava/lang/Object;" line="51"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="step" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;)Ljava/lang/Object;" line="64"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="step" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/StepConfig;)Ljava/lang/Object;" line="78"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="91"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/StepConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="108"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="123"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="step" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Supplier;)Ljava/lang/Object;" line="144"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="step" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Supplier;Lsoftware/amazon/lambda/durable/config/StepConfig;)Ljava/lang/Object;" line="156"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="step" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Supplier;)Ljava/lang/Object;" line="162"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="step" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Supplier;Lsoftware/amazon/lambda/durable/config/StepConfig;)Ljava/lang/Object;" line="168"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="stepAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Supplier;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="174"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="stepAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Supplier;Lsoftware/amazon/lambda/durable/config/StepConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="181"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="stepAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Supplier;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="187"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="stepAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Supplier;Lsoftware/amazon/lambda/durable/config/StepConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="193"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="wait" desc="(Ljava/lang/String;Ljava/time/Duration;)Ljava/lang/Void;" line="207"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invoke" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;" line="234"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invoke" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/config/InvokeConfig;)Ljava/lang/Object;" line="245"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invoke" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="251"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="invoke" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/InvokeConfig;)Ljava/lang/Object;" line="262"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="invokeAsync" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/config/InvokeConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="268"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invokeAsync" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="273"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invokeAsync" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/TypeToken;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="283"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createCallback" desc="(Ljava/lang/String;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/config/CallbackConfig;)Lsoftware/amazon/lambda/durable/DurableCallbackFuture;" line="306"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createCallback" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Lsoftware/amazon/lambda/durable/DurableCallbackFuture;" line="311"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createCallback" desc="(Ljava/lang/String;Ljava/lang/Class;)Lsoftware/amazon/lambda/durable/DurableCallbackFuture;" line="316"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContext" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;)Ljava/lang/Object;" line="347"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContext" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;)Ljava/lang/Object;" line="359"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContextAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="380"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContextAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="400"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="runInChildContext" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;)Ljava/lang/Object;" line="418"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="runInChildContext" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;)Ljava/lang/Object;" line="436"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="runInChildContextAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="453"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="map" desc="(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;)Lsoftware/amazon/lambda/durable/model/MapResult;" line="472"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="map" desc="(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;Lsoftware/amazon/lambda/durable/config/MapConfig;)Lsoftware/amazon/lambda/durable/model/MapResult;" line="483"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="map" desc="(Ljava/lang/String;Ljava/util/Collection;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;)Lsoftware/amazon/lambda/durable/model/MapResult;" line="489"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="map" desc="(Ljava/lang/String;Ljava/util/Collection;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;Lsoftware/amazon/lambda/durable/config/MapConfig;)Lsoftware/amazon/lambda/durable/model/MapResult;" line="495"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapAsync" desc="(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="500"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="mapAsync" desc="(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;Lsoftware/amazon/lambda/durable/config/MapConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="510"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="mapAsync" desc="(Ljava/lang/String;Ljava/util/Collection;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="515"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="parallel" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/ParallelDurableFuture;" line="527"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCallback" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiConsumer;)Ljava/lang/Object;" line="551"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForCallback" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiConsumer;)Ljava/lang/Object;" line="561"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCallback" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;)Ljava/lang/Object;" line="572"><counter type="INSTRUCTION" missed="2" covered="7"/><counter type="LINE" missed="1" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForCallback" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;)Ljava/lang/Object;" line="582"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCallbackAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="589"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForCallbackAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiConsumer;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="599"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCallbackAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="609"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCondition" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiFunction;)Ljava/lang/Object;" line="644"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCondition" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;)Ljava/lang/Object;" line="658"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForCondition" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;)Ljava/lang/Object;" line="664"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForCondition" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;)Ljava/lang/Object;" line="681"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForConditionAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiFunction;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="687"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="waitForConditionAsync" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="700"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForConditionAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="706"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$stepAsync$0" desc="(Ljava/util/function/Supplier;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Object;" line="193"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="253" covered="234"/><counter type="LINE" missed="51" covered="53"/><counter type="COMPLEXITY" missed="30" covered="26"/><counter type="METHOD" missed="30" covered="26"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/DurableConfig$Builder" sourcefilename="DurableConfig.java"><method name="&lt;init&gt;" desc="()V" line="278"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withLambdaClientBuilder" desc="(Lsoftware/amazon/awssdk/services/lambda/LambdaClientBuilder;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="301"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withDurableExecutionClient" desc="(Lsoftware/amazon/lambda/durable/client/DurableExecutionClient;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="319"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withSerDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="332"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withExecutorService" desc="(Ljava/util/concurrent/ExecutorService;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="347"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withLoggerConfig" desc="(Lsoftware/amazon/lambda/durable/logging/LoggerConfig;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="358"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withPollingStrategy" desc="(Lsoftware/amazon/lambda/durable/retry/PollingStrategy;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="370"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withCheckpointDelay" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/DurableConfig$Builder;" line="382"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="392"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/TypeToken" sourcefilename="TypeToken.java"><method name="&lt;init&gt;" desc="()V" line="37"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/reflect/Type;)V" line="47"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="(Ljava/lang/Class;)Lsoftware/amazon/lambda/durable/TypeToken;" line="59"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fromGenericSuperClass" desc="(Ljava/lang/Class;I)Lsoftware/amazon/lambda/durable/TypeToken;" line="73"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getType" desc="()Ljava/lang/reflect/Type;" line="87"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="92"><counter type="INSTRUCTION" missed="4" covered="15"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="103"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toString" desc="()Ljava/lang/String;" line="108"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="4" covered="87"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="2" covered="20"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/ParallelDurableFuture" sourcefilename="ParallelDurableFuture.java"><method name="branch" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="23"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="branch" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="41"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="branch" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="56"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="17"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="StepContext.java"/><sourcefile name="TypeToken.java"><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="38" mi="0" ci="4" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="2"/><line nr="40" mi="0" ci="7" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="45" mi="0" ci="1" mb="0" cb="0"/><line nr="47" mi="0" ci="2" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="9" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="6" mb="0" cb="2"/><line nr="75" mi="0" ci="12" mb="0" cb="0"/><line nr="77" mi="0" ci="7" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="3" mb="1" cb="1"/><line nr="93" mi="2" ci="0" mb="0" cb="0"/><line nr="95" mi="0" ci="6" mb="1" cb="1"/><line nr="96" mi="0" ci="6" mb="0" cb="0"/><line nr="98" mi="2" ci="0" mb="0" cb="0"/><line nr="103" mi="0" ci="4" mb="0" cb="0"/><line nr="108" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="4" covered="95"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="2" covered="20"/><counter type="COMPLEXITY" missed="2" covered="12"/><counter type="METHOD" missed="0" covered="10"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="DurableHandler.java"><line nr="30" mi="0" ci="5" mb="0" cb="0"/><line nr="31" mi="0" ci="4" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="6" mb="0" cb="0"/><line nr="35" mi="0" ci="4" mb="0" cb="0"/><line nr="36" mi="0" ci="1" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="116" mi="0" ci="2" mb="0" cb="0"/><line nr="130" mi="6" ci="0" mb="0" cb="0"/><line nr="131" mi="4" ci="0" mb="0" cb="0"/><line nr="132" mi="8" ci="0" mb="0" cb="0"/><line nr="133" mi="10" ci="0" mb="0" cb="0"/><line nr="134" mi="7" ci="0" mb="0" cb="0"/><line nr="135" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="36" covered="27"/><counter type="LINE" missed="6" covered="8"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableContext.java"><line nr="37" mi="0" ci="9" mb="0" cb="0"/><line nr="51" mi="0" ci="8" mb="0" cb="0"/><line nr="64" mi="0" ci="8" mb="0" cb="0"/><line nr="78" mi="0" ci="8" mb="0" cb="0"/><line nr="91" mi="0" ci="5" mb="0" cb="0"/><line nr="92" mi="0" ci="4" mb="0" cb="0"/><line nr="108" mi="0" ci="8" mb="0" cb="0"/><line nr="123" mi="0" ci="8" mb="0" cb="0"/><line nr="144" mi="5" ci="0" mb="0" cb="0"/><line nr="146" mi="2" ci="0" mb="0" cb="0"/><line nr="148" mi="2" ci="0" mb="0" cb="0"/><line nr="149" mi="1" ci="0" mb="0" cb="0"/><line nr="156" mi="9" ci="0" mb="0" cb="0"/><line nr="162" mi="9" ci="0" mb="0" cb="0"/><line nr="168" mi="8" ci="0" mb="0" cb="0"/><line nr="174" mi="5" ci="0" mb="0" cb="0"/><line nr="175" mi="4" ci="0" mb="0" cb="0"/><line nr="181" mi="8" ci="0" mb="0" cb="0"/><line nr="187" mi="8" ci="0" mb="0" cb="0"/><line nr="193" mi="11" ci="0" mb="0" cb="0"/><line nr="207" mi="0" ci="7" mb="0" cb="0"/><line nr="234" mi="0" ci="7" mb="0" cb="0"/><line nr="238" mi="0" ci="1" mb="0" cb="0"/><line nr="239" mi="0" ci="2" mb="0" cb="0"/><line nr="240" mi="0" ci="1" mb="0" cb="0"/><line nr="245" mi="0" ci="9" mb="0" cb="0"/><line nr="246" mi="0" ci="1" mb="0" cb="0"/><line nr="251" mi="7" ci="0" mb="0" cb="0"/><line nr="256" mi="2" ci="0" mb="0" cb="0"/><line nr="257" mi="1" ci="0" mb="0" cb="0"/><line nr="262" mi="9" ci="0" mb="0" cb="0"/><line nr="268" mi="0" ci="9" mb="0" cb="0"/><line nr="273" mi="0" ci="7" mb="0" cb="0"/><line nr="277" mi="0" ci="1" mb="0" cb="0"/><line nr="278" mi="0" ci="2" mb="0" cb="0"/><line nr="283" mi="7" ci="0" mb="0" cb="0"/><line nr="284" mi="2" ci="0" mb="0" cb="0"/><line nr="306" mi="0" ci="7" mb="0" cb="0"/><line nr="311" mi="7" ci="0" mb="0" cb="0"/><line nr="316" mi="0" ci="5" mb="0" cb="0"/><line nr="317" mi="0" ci="3" mb="0" cb="0"/><line nr="347" mi="0" ci="5" mb="0" cb="0"/><line nr="349" mi="0" ci="2" mb="0" cb="0"/><line nr="351" mi="0" ci="2" mb="0" cb="0"/><line nr="352" mi="0" ci="1" mb="0" cb="0"/><line nr="359" mi="0" ci="6" mb="0" cb="0"/><line nr="363" mi="0" ci="2" mb="0" cb="0"/><line nr="364" mi="0" ci="1" mb="0" cb="0"/><line nr="380" mi="0" ci="5" mb="0" cb="0"/><line nr="382" mi="0" ci="2" mb="0" cb="0"/><line nr="384" mi="0" ci="2" mb="0" cb="0"/><line nr="400" mi="6" ci="0" mb="0" cb="0"/><line nr="401" mi="2" ci="0" mb="0" cb="0"/><line nr="418" mi="8" ci="0" mb="0" cb="0"/><line nr="419" mi="1" ci="0" mb="0" cb="0"/><line nr="436" mi="8" ci="0" mb="0" cb="0"/><line nr="453" mi="8" ci="0" mb="0" cb="0"/><line nr="472" mi="0" ci="6" mb="0" cb="0"/><line nr="475" mi="0" ci="2" mb="0" cb="0"/><line nr="477" mi="0" ci="2" mb="0" cb="0"/><line nr="478" mi="0" ci="2" mb="0" cb="0"/><line nr="483" mi="0" ci="9" mb="0" cb="0"/><line nr="484" mi="0" ci="2" mb="0" cb="0"/><line nr="489" mi="0" ci="9" mb="0" cb="0"/><line nr="490" mi="0" ci="2" mb="0" cb="0"/><line nr="495" mi="10" ci="0" mb="0" cb="0"/><line nr="500" mi="0" ci="6" mb="0" cb="0"/><line nr="503" mi="0" ci="2" mb="0" cb="0"/><line nr="505" mi="0" ci="2" mb="0" cb="0"/><line nr="510" mi="9" ci="0" mb="0" cb="0"/><line nr="515" mi="9" ci="0" mb="0" cb="0"/><line nr="527" mi="6" ci="0" mb="0" cb="0"/><line nr="551" mi="0" ci="5" mb="0" cb="0"/><line nr="553" mi="0" ci="2" mb="0" cb="0"/><line nr="555" mi="0" ci="2" mb="0" cb="0"/><line nr="556" mi="0" ci="1" mb="0" cb="0"/><line nr="561" mi="6" ci="0" mb="0" cb="0"/><line nr="562" mi="2" ci="0" mb="0" cb="0"/><line nr="563" mi="1" ci="0" mb="0" cb="0"/><line nr="572" mi="1" ci="7" mb="0" cb="0"/><line nr="573" mi="1" ci="0" mb="0" cb="0"/><line nr="582" mi="7" ci="0" mb="0" cb="0"/><line nr="583" mi="1" ci="0" mb="0" cb="0"/><line nr="589" mi="0" ci="5" mb="0" cb="0"/><line nr="591" mi="0" ci="2" mb="0" cb="0"/><line nr="593" mi="0" ci="2" mb="0" cb="0"/><line nr="599" mi="6" ci="0" mb="0" cb="0"/><line nr="600" mi="2" ci="0" mb="0" cb="0"/><line nr="609" mi="8" ci="0" mb="0" cb="0"/><line nr="644" mi="5" ci="0" mb="0" cb="0"/><line nr="646" mi="2" ci="0" mb="0" cb="0"/><line nr="648" mi="2" ci="0" mb="0" cb="0"/><line nr="649" mi="1" ci="0" mb="0" cb="0"/><line nr="658" mi="0" ci="8" mb="0" cb="0"/><line nr="664" mi="6" ci="0" mb="0" cb="0"/><line nr="668" mi="2" ci="0" mb="0" cb="0"/><line nr="669" mi="1" ci="0" mb="0" cb="0"/><line nr="681" mi="8" ci="0" mb="0" cb="0"/><line nr="687" mi="5" ci="0" mb="0" cb="0"/><line nr="689" mi="2" ci="0" mb="0" cb="0"/><line nr="691" mi="2" ci="0" mb="0" cb="0"/><line nr="700" mi="0" ci="8" mb="0" cb="0"/><line nr="706" mi="6" ci="0" mb="0" cb="0"/><line nr="707" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="253" covered="234"/><counter type="LINE" missed="51" covered="53"/><counter type="COMPLEXITY" missed="30" covered="26"/><counter type="METHOD" missed="30" covered="26"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableConfig.java"><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="84" mi="0" ci="4" mb="0" cb="0"/><line nr="85" mi="0" ci="5" mb="0" cb="0"/><line nr="86" mi="0" ci="5" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="2" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="7" mb="0" cb="0"/><line nr="101" mi="0" ci="7" mb="0" cb="0"/><line nr="102" mi="0" ci="4" mb="0" cb="0"/><line nr="103" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="7" mb="0" cb="0"/><line nr="105" mi="0" ci="7" mb="0" cb="0"/><line nr="106" mi="0" ci="10" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="1" mb="0" cb="0"/><line nr="117" mi="0" ci="5" mb="0" cb="0"/><line nr="126" mi="0" ci="4" mb="0" cb="0"/><line nr="135" mi="0" ci="3" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="153" mi="0" ci="3" mb="0" cb="0"/><line nr="162" mi="0" ci="3" mb="0" cb="0"/><line nr="171" mi="0" ci="3" mb="0" cb="0"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="2"/><line nr="185" mi="0" ci="5" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="2"/><line nr="188" mi="0" ci="5" mb="0" cb="0"/><line nr="190" mi="0" ci="3" mb="0" cb="2"/><line nr="191" mi="0" ci="5" mb="0" cb="0"/><line nr="193" mi="0" ci="1" mb="0" cb="0"/><line nr="203" mi="0" ci="3" mb="0" cb="0"/><line nr="204" mi="0" ci="4" mb="0" cb="0"/><line nr="205" mi="3" ci="2" mb="3" cb="1"/><line nr="206" mi="0" ci="2" mb="0" cb="0"/><line nr="207" mi="0" ci="4" mb="0" cb="0"/><line nr="210" mi="0" ci="2" mb="0" cb="0"/><line nr="211" mi="0" ci="4" mb="0" cb="0"/><line nr="212" mi="0" ci="3" mb="0" cb="0"/><line nr="213" mi="0" ci="3" mb="0" cb="0"/><line nr="220" mi="2" ci="3" mb="0" cb="0"/><line nr="221" mi="0" ci="8" mb="0" cb="0"/><line nr="222" mi="0" ci="3" mb="0" cb="0"/><line nr="225" mi="0" ci="2" mb="0" cb="0"/><line nr="226" mi="0" ci="2" mb="0" cb="0"/><line nr="227" mi="0" ci="1" mb="0" cb="0"/><line nr="229" mi="1" ci="0" mb="0" cb="0"/><line nr="231" mi="0" ci="4" mb="0" cb="0"/><line nr="232" mi="0" ci="5" mb="0" cb="0"/><line nr="236" mi="0" ci="9" mb="0" cb="0"/><line nr="237" mi="0" ci="1" mb="0" cb="0"/><line nr="238" mi="0" ci="2" mb="0" cb="0"/><line nr="242" mi="0" ci="4" mb="0" cb="0"/><line nr="243" mi="0" ci="2" mb="1" cb="1"/><line nr="244" mi="2" ci="0" mb="0" cb="0"/><line nr="246" mi="0" ci="4" mb="0" cb="0"/><line nr="248" mi="0" ci="3" mb="0" cb="0"/><line nr="249" mi="0" ci="2" mb="0" cb="0"/><line nr="250" mi="0" ci="5" mb="0" cb="0"/><line nr="251" mi="1" ci="0" mb="0" cb="0"/><line nr="252" mi="2" ci="0" mb="0" cb="0"/><line nr="265" mi="0" ci="3" mb="0" cb="0"/><line nr="266" mi="0" ci="2" mb="0" cb="0"/><line nr="278" mi="0" ci="3" mb="0" cb="0"/><line nr="301" mi="0" ci="4" mb="0" cb="0"/><line nr="302" mi="0" ci="4" mb="0" cb="0"/><line nr="303" mi="0" ci="5" mb="0" cb="0"/><line nr="304" mi="0" ci="2" mb="0" cb="0"/><line nr="319" mi="0" ci="3" mb="0" cb="0"/><line nr="320" mi="0" ci="3" mb="0" cb="0"/><line nr="321" mi="0" ci="2" mb="0" cb="0"/><line nr="332" mi="0" ci="6" mb="0" cb="0"/><line nr="333" mi="0" ci="2" mb="0" cb="0"/><line nr="347" mi="0" ci="3" mb="0" cb="0"/><line nr="348" mi="0" ci="2" mb="0" cb="0"/><line nr="358" mi="0" ci="6" mb="0" cb="0"/><line nr="359" mi="0" ci="2" mb="0" cb="0"/><line nr="370" mi="0" ci="3" mb="0" cb="0"/><line nr="371" mi="0" ci="2" mb="0" cb="0"/><line nr="382" mi="0" ci="3" mb="0" cb="0"/><line nr="383" mi="0" ci="2" mb="0" cb="0"/><line nr="392" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="11" covered="284"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="4" covered="80"/><counter type="COMPLEXITY" missed="3" covered="29"/><counter type="METHOD" missed="0" covered="26"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="DurableCallbackFuture.java"/><sourcefile name="ParallelDurableFuture.java"><line nr="23" mi="0" ci="5" mb="0" cb="0"/><line nr="25" mi="0" ci="2" mb="0" cb="0"/><line nr="27" mi="0" ci="2" mb="0" cb="0"/><line nr="41" mi="8" ci="0" mb="0" cb="0"/><line nr="56" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="17"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableFuture.java"><line nr="41" mi="0" ci="6" mb="0" cb="0"/><line nr="55" mi="0" ci="6" mb="0" cb="0"/><line nr="65" mi="0" ci="6" mb="0" cb="0"/><line nr="66" mi="0" ci="6" mb="0" cb="0"/><line nr="67" mi="0" ci="5" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="312" covered="693"/><counter type="BRANCH" missed="6" covered="14"/><counter type="LINE" missed="64" covered="173"/><counter type="COMPLEXITY" missed="37" covered="79"/><counter type="METHOD" missed="32" covered="74"/><counter type="CLASS" missed="0" covered="9"/></package><package name="software/amazon/lambda/durable/model"><class name="software/amazon/lambda/durable/model/MapResult$MapResultItem" sourcefilename="MapResult.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem$Status;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/model/MapResult$MapError;)V" line="96"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="succeeded" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;" line="107"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failed" desc="(Lsoftware/amazon/lambda/durable/model/MapResult$MapError;)Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;" line="112"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="skipped" desc="()Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;" line="117"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/OperationIdentifier" sourcefilename="OperationIdentifier.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationType;Lsoftware/amazon/lambda/durable/model/OperationSubType;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="of" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationType;)Lsoftware/amazon/lambda/durable/model/OperationIdentifier;" line="20"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="of" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationType;Lsoftware/amazon/lambda/durable/model/OperationSubType;)Lsoftware/amazon/lambda/durable/model/OperationIdentifier;" line="26"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/WaitForConditionResult" sourcefilename="WaitForConditionResult.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;Z)V" line="15"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopPolling" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/model/WaitForConditionResult;" line="25"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="continuePolling" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/model/WaitForConditionResult;" line="36"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/OperationSubType" sourcefilename="OperationSubType.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;ILjava/lang/String;)V" line="22"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getValue" desc="()Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toString" desc="()Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="11"><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="63"/><counter type="LINE" missed="1" covered="12"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/MapResult" sourcefilename="MapResult.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;Lsoftware/amazon/lambda/durable/model/ConcurrencyCompletionStatus;)V" line="26"><counter type="INSTRUCTION" missed="2" covered="20"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="empty" desc="()Lsoftware/amazon/lambda/durable/model/MapResult;" line="33"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getItem" desc="(I)Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;" line="38"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getResult" desc="(I)Ljava/lang/Object;" line="43"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="(I)Lsoftware/amazon/lambda/durable/model/MapResult$MapError;" line="48"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="allSucceeded" desc="()Z" line="53"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="size" desc="()I" line="58"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="results" desc="()Ljava/util/List;" line="63"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="succeeded" desc="()Ljava/util/List;" line="68"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failed" desc="()Ljava/util/List;" line="76"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$failed$2" desc="(Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;)Z" line="77"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$succeeded$1" desc="(Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;)Z" line="69"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$allSucceeded$0" desc="(Lsoftware/amazon/lambda/durable/model/MapResult$MapResultItem;)Z" line="53"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="105"/><counter type="BRANCH" missed="2" covered="8"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="2" covered="16"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/MapResult$MapResultItem$Status" sourcefilename="MapResult.java"><method name="&lt;clinit&gt;" desc="()V" line="99"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/DurableExecutionInput" sourcefilename="DurableExecutionInput.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/CheckpointUpdatedExecutionState;)V" line="14"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/ExecutionStatus" sourcefilename="ExecutionStatus.java"><method name="toString" desc="()Ljava/lang/String;" line="13"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="6"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/MapResult$MapError" sourcefilename="MapResult.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V" line="131"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="of" desc="(Ljava/lang/Throwable;)Lsoftware/amazon/lambda/durable/model/MapResult$MapError;" line="133"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus" sourcefilename="ConcurrencyCompletionStatus.java"><method name="toString" desc="()Ljava/lang/String;" line="12"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isSucceeded" desc="()Z" line="16"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="5"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/DurableExecutionOutput" sourcefilename="DurableExecutionOutput.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/ExecutionStatus;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="14"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="success" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="18"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pending" desc="()Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="23"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failure" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="28"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/model/ParallelResult" sourcefilename="ParallelResult.java"><method name="&lt;init&gt;" desc="(IIILsoftware/amazon/lambda/durable/model/ConcurrencyCompletionStatus;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="WaitForConditionResult.java"><line nr="15" mi="0" ci="9" mb="0" cb="0"/><line nr="25" mi="0" ci="6" mb="0" cb="0"/><line nr="36" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ConcurrencyCompletionStatus.java"><line nr="5" mi="0" ci="3" mb="0" cb="0"/><line nr="6" mi="0" ci="6" mb="0" cb="0"/><line nr="7" mi="0" ci="6" mb="0" cb="0"/><line nr="8" mi="0" ci="6" mb="0" cb="0"/><line nr="12" mi="0" ci="3" mb="0" cb="0"/><line nr="16" mi="0" ci="10" mb="0" cb="4"/><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ExecutionStatus.java"><line nr="6" mi="0" ci="3" mb="0" cb="0"/><line nr="7" mi="0" ci="6" mb="0" cb="0"/><line nr="8" mi="0" ci="6" mb="0" cb="0"/><line nr="9" mi="0" ci="6" mb="0" cb="0"/><line nr="13" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableExecutionOutput.java"><line nr="14" mi="0" ci="12" mb="0" cb="0"/><line nr="18" mi="0" ci="7" mb="0" cb="0"/><line nr="23" mi="0" ci="7" mb="0" cb="0"/><line nr="28" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ParallelResult.java"><line nr="11" mi="0" ci="15" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MapResult.java"><line nr="26" mi="0" ci="8" mb="0" cb="0"/><line nr="27" mi="1" ci="6" mb="1" cb="1"/><line nr="28" mi="1" ci="5" mb="1" cb="1"/><line nr="29" mi="0" ci="1" mb="0" cb="0"/><line nr="33" mi="0" ci="6" mb="0" cb="0"/><line nr="38" mi="0" ci="6" mb="0" cb="0"/><line nr="43" mi="0" ci="7" mb="0" cb="0"/><line nr="48" mi="0" ci="7" mb="0" cb="0"/><line nr="53" mi="0" ci="14" mb="0" cb="2"/><line nr="58" mi="0" ci="4" mb="0" cb="0"/><line nr="63" mi="0" ci="7" mb="0" cb="0"/><line nr="68" mi="0" ci="5" mb="0" cb="0"/><line nr="69" mi="0" ci="10" mb="0" cb="2"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="76" mi="0" ci="5" mb="0" cb="0"/><line nr="77" mi="0" ci="10" mb="0" cb="2"/><line nr="78" mi="0" ci="1" mb="0" cb="0"/><line nr="79" mi="0" ci="1" mb="0" cb="0"/><line nr="96" mi="0" ci="12" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="6" mb="0" cb="0"/><line nr="101" mi="0" ci="6" mb="0" cb="0"/><line nr="102" mi="0" ci="6" mb="0" cb="0"/><line nr="107" mi="0" ci="7" mb="0" cb="0"/><line nr="112" mi="0" ci="7" mb="0" cb="0"/><line nr="117" mi="0" ci="7" mb="0" cb="0"/><line nr="131" mi="0" ci="12" mb="0" cb="0"/><line nr="133" mi="0" ci="4" mb="0" cb="0"/><line nr="134" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="2" covered="183"/><counter type="BRANCH" missed="2" covered="8"/><counter type="LINE" missed="0" covered="30"/><counter type="COMPLEXITY" missed="2" covered="23"/><counter type="METHOD" missed="0" covered="20"/><counter type="CLASS" missed="0" covered="4"/></sourcefile><sourcefile name="OperationIdentifier.java"><line nr="15" mi="0" ci="15" mb="0" cb="0"/><line nr="20" mi="0" ci="8" mb="0" cb="0"/><line nr="26" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableExecutionInput.java"><line nr="14" mi="0" ci="12" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="OperationSubType.java"><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="7" mb="0" cb="0"/><line nr="13" mi="0" ci="7" mb="0" cb="0"/><line nr="14" mi="0" ci="7" mb="0" cb="0"/><line nr="15" mi="0" ci="7" mb="0" cb="0"/><line nr="16" mi="0" ci="7" mb="0" cb="0"/><line nr="17" mi="0" ci="7" mb="0" cb="0"/><line nr="18" mi="0" ci="7" mb="0" cb="0"/><line nr="22" mi="0" ci="4" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="24" mi="0" ci="1" mb="0" cb="0"/><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="63"/><counter type="LINE" missed="1" covered="12"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="5" covered="416"/><counter type="BRANCH" missed="2" covered="12"/><counter type="LINE" missed="1" covered="65"/><counter type="COMPLEXITY" missed="3" covered="45"/><counter type="METHOD" missed="1" covered="40"/><counter type="CLASS" missed="0" covered="12"/></package><package name="software/amazon/lambda/durable/operation"><class name="software/amazon/lambda/durable/operation/ConcurrencyOperation" sourcefilename="ConcurrencyOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;ILjava/lang/Integer;Ljava/lang/Integer;)V" line="63"><counter type="INSTRUCTION" missed="0" covered="56"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createItem" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/model/OperationSubType;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)Lsoftware/amazon/lambda/durable/operation/ChildContextOperation;" line="113"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="enqueueItem" desc="(Ljava/lang/String;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/model/OperationSubType;)Lsoftware/amazon/lambda/durable/operation/ChildContextOperation;" line="138"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="notifyConsumerThread" desc="()V" line="149"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="executeItems" desc="()V" line="157"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleException" desc="(Ljava/lang/Throwable;)V" line="217"><counter type="INSTRUCTION" missed="21" covered="11"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="4" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForChildCompletion" desc="(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/Set;)Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;" line="232"><counter type="INSTRUCTION" missed="13" covered="78"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="4" covered="18"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onItemComplete" desc="(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;Lsoftware/amazon/lambda/durable/operation/ChildContextOperation;)V" line="280"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="canComplete" desc="(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/Set;)Lsoftware/amazon/lambda/durable/model/ConcurrencyCompletionStatus;" line="299"><counter type="INSTRUCTION" missed="0" covered="41"/><counter type="BRANCH" missed="0" covered="14"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="1"/></method><method name="join" desc="()V" line="327"><counter type="INSTRUCTION" missed="10" covered="20"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBranches" desc="()Ljava/util/List;" line="340"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForChildCompletion$3" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;" line="264"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForChildCompletion$2" desc="(Lsoftware/amazon/lambda/durable/execution/ThreadContext;)V" line="258"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForChildCompletion$1" desc="(I)[Ljava/util/concurrent/CompletableFuture;" line="255"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeItems$0" desc="(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/Set;)V" line="167"><counter type="INSTRUCTION" missed="12" covered="90"/><counter type="BRANCH" missed="3" covered="13"/><counter type="LINE" missed="4" covered="23"/><counter type="COMPLEXITY" missed="3" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="54"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="56" covered="436"/><counter type="BRANCH" missed="9" covered="37"/><counter type="LINE" missed="14" covered="100"/><counter type="COMPLEXITY" missed="8" covered="31"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/WaitOperation" sourcefilename="WaitOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/time/Duration;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="32"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="40"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="53"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForWaitExpiration" desc="()V" line="63"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Void;" line="75"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="26"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="75"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="27"/><counter type="COMPLEXITY" missed="2" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/WaitForConditionOperation" sourcefilename="WaitForConditionOperation.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="50"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="62"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="67"><counter type="INSTRUCTION" missed="2" covered="24"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Object;" line="79"><counter type="INSTRUCTION" missed="3" covered="35"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="1" covered="9"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="resumeCheckLoop" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="99"><counter type="INSTRUCTION" missed="3" covered="37"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollReadyAndResumeCheckLoop" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Ljava/util/concurrent/CompletableFuture;" line="113"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="executeCheckLogic" desc="(Ljava/lang/Object;I)V" line="121"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleCheckFailure" desc="(Ljava/lang/Throwable;)V" line="174"><counter type="INSTRUCTION" missed="12" covered="32"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeCheckLogic$3" desc="(ILjava/lang/Object;)V" line="122"><counter type="INSTRUCTION" missed="0" covered="97"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="29"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeCheckLogic$2" desc="(Ljava/lang/Object;I)V" line="162"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeCheckLogic$1" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Ljava/util/concurrent/CompletionStage;" line="159"><counter type="INSTRUCTION" missed="3" covered="7"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pollReadyAndResumeCheckLoop$0" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Ljava/util/concurrent/CompletionStage;" line="114"><counter type="INSTRUCTION" missed="2" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="38"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="25" covered="296"/><counter type="BRANCH" missed="8" covered="26"/><counter type="LINE" missed="5" covered="79"/><counter type="COMPLEXITY" missed="8" covered="23"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/StepOperation" sourcefilename="StepOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/StepConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="48"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="57"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="63"><counter type="INSTRUCTION" missed="13" covered="62"/><counter type="BRANCH" missed="4" covered="11"/><counter type="LINE" missed="4" covered="13"/><counter type="COMPLEXITY" missed="4" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollReadyAndExecuteStepLogic" desc="(Ljava/time/Instant;I)V" line="95"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="executeStepLogic" desc="(I)V" line="103"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpointStarted" desc="()V" line="127"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleStepSucceeded" desc="(Ljava/lang/Object;)V" line="144"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleStepFailure" desc="(Ljava/lang/Throwable;I)V" line="152"><counter type="INSTRUCTION" missed="9" covered="86"/><counter type="BRANCH" missed="1" covered="11"/><counter type="LINE" missed="2" covered="22"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Object;" line="196"><counter type="INSTRUCTION" missed="3" covered="43"/><counter type="BRANCH" missed="1" covered="7"/><counter type="LINE" missed="1" covered="11"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeStepLogic$2" desc="(I)V" line="107"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pollReadyAndExecuteStepLogic$1" desc="(I)V" line="99"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pollReadyAndExecuteStepLogic$0" desc="(Ljava/time/Instant;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Ljava/util/concurrent/CompletionStage;" line="96"><counter type="INSTRUCTION" missed="3" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="37"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="28" covered="313"/><counter type="BRANCH" missed="7" covered="36"/><counter type="LINE" missed="8" covered="79"/><counter type="COMPLEXITY" missed="7" covered="29"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/CallbackOperation" sourcefilename="CallbackOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/CallbackConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="29"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="callbackId" desc="()Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="41"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="56"><counter type="INSTRUCTION" missed="7" covered="19"/><counter type="BRANCH" missed="1" covered="2"/><counter type="LINE" missed="2" covered="7"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Object;" line="76"><counter type="INSTRUCTION" missed="7" covered="26"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="5"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildCallbackOptions" desc="()Lsoftware/amazon/awssdk/services/lambda/model/CallbackOptions;" line="89"><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="14" covered="116"/><counter type="BRANCH" missed="3" covered="10"/><counter type="LINE" missed="4" covered="29"/><counter type="COMPLEXITY" missed="3" covered="11"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/MapOperation" sourcefilename="MapOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/util/List;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/MapConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="55"><counter type="INSTRUCTION" missed="10" covered="48"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="13"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addAllItems" desc="()V" line="80"><counter type="INSTRUCTION" missed="2" covered="39"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getToleratedFailureCount" desc="(Lsoftware/amazon/lambda/durable/config/CompletionConfig;I)Ljava/lang/Integer;" line="94"><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="114"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="127"><counter type="INSTRUCTION" missed="10" covered="32"/><counter type="BRANCH" missed="3" covered="6"/><counter type="LINE" missed="4" covered="11"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleCompletion" desc="(Lsoftware/amazon/lambda/durable/model/ConcurrencyCompletionStatus;)V" line="157"><counter type="INSTRUCTION" missed="12" covered="110"/><counter type="BRANCH" missed="2" covered="8"/><counter type="LINE" missed="3" covered="28"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Lsoftware/amazon/lambda/durable/model/MapResult;" line="205"><counter type="INSTRUCTION" missed="1" covered="30"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$addAllItems$0" desc="(Ljava/lang/Object;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/Object;" line="86"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="35" covered="324"/><counter type="BRANCH" missed="9" covered="36"/><counter type="LINE" missed="9" covered="86"/><counter type="COMPLEXITY" missed="9" covered="22"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/ChildContextOperation" sourcefilename="ChildContextOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="60"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;Lsoftware/amazon/lambda/durable/operation/ConcurrencyOperation;)V" line="51"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="78"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="85"><counter type="INSTRUCTION" missed="7" covered="32"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="2" covered="10"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="executeChildContext" desc="()V" line="110"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleChildContextSuccess" desc="(Ljava/lang/Object;)V" line="136"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpointSuccess" desc="(Ljava/lang/Object;)V" line="149"><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleChildContextFailure" desc="(Ljava/lang/Throwable;)V" line="171"><counter type="INSTRUCTION" missed="7" covered="44"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="1" covered="12"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Object;" line="200"><counter type="INSTRUCTION" missed="15" covered="63"/><counter type="BRANCH" missed="3" covered="12"/><counter type="LINE" missed="3" covered="15"/><counter type="COMPLEXITY" missed="3" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleWaitForCallbackFailure" desc="()Ljava/lang/Object;" line="234"><counter type="INSTRUCTION" missed="14" covered="69"/><counter type="BRANCH" missed="6" covered="9"/><counter type="LINE" missed="2" covered="20"/><counter type="COMPLEXITY" missed="6" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleWaitForCallbackFailure$2" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="240"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleWaitForCallbackFailure$1" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="236"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$executeChildContext$0" desc="(Ljava/lang/String;)V" line="120"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="43" covered="353"/><counter type="BRANCH" missed="12" covered="50"/><counter type="LINE" missed="8" covered="95"/><counter type="COMPLEXITY" missed="12" covered="35"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/BaseDurableOperation" sourcefilename="BaseDurableOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;)V" line="53"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCompletionFuture" desc="()Ljava/util/concurrent/CompletableFuture;" line="78"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSubType" desc="()Lsoftware/amazon/lambda/durable/model/OperationSubType;" line="83"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationId" desc="()Ljava/lang/String;" line="88"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getName" desc="()Ljava/lang/String;" line="93"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getContext" desc="()Lsoftware/amazon/lambda/durable/context/DurableContextImpl;" line="98"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getType" desc="()Lsoftware/amazon/awssdk/services/lambda/model/OperationType;" line="103"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="execute" desc="()V" line="111"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperation" desc="()Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="141"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getChildOperations" desc="()Ljava/util/List;" line="150"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateCurrentThreadType" desc="()V" line="159"><counter type="INSTRUCTION" missed="4" covered="27"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isOperationCompleted" desc="()Z" line="171"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForOperationCompletion" desc="()Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="182"><counter type="INSTRUCTION" missed="5" covered="88"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="1" covered="19"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runUserHandler" desc="(Ljava/lang/Runnable;Lsoftware/amazon/lambda/durable/execution/ThreadType;)V" line="228"><counter type="INSTRUCTION" missed="12" covered="37"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="3" covered="8"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onCheckpointComplete" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="287"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="markAlreadyCompleted" desc="()V" line="300"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="markCompletionFutureCompleted" desc="()V" line="307"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="terminateExecution" desc="(Lsoftware/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException;)Ljava/lang/RuntimeException;" line="323"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="terminateExecutionWithIllegalDurableOperationException" desc="(Ljava/lang/String;)Ljava/lang/RuntimeException;" line="335"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="registerActiveThread" desc="(Ljava/lang/String;)V" line="344"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCurrentThreadContext" desc="()Lsoftware/amazon/lambda/durable/execution/ThreadContext;" line="349"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForOperationUpdates" desc="()Ljava/util/concurrent/CompletableFuture;" line="354"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForOperationUpdates" desc="(Ljava/time/Instant;)Ljava/util/concurrent/CompletableFuture;" line="364"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendOperationUpdate" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate$Builder;)V" line="369"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendOperationUpdateAsync" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate$Builder;)Ljava/util/concurrent/CompletableFuture;" line="374"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateReplay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="384"><counter type="INSTRUCTION" missed="33" covered="77"/><counter type="BRANCH" missed="2" covered="14"/><counter type="LINE" missed="2" covered="12"/><counter type="COMPLEXITY" missed="2" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRunningUserHandler" desc="()Ljava/util/concurrent/CompletableFuture;" line="410"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$runUserHandler$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/execution/ThreadType;Ljava/lang/Runnable;)V" line="231"><counter type="INSTRUCTION" missed="10" covered="27"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForOperationCompletion$0" desc="(Lsoftware/amazon/lambda/durable/execution/ThreadContext;)V" line="204"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="46"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="71" covered="471"/><counter type="BRANCH" missed="5" covered="39"/><counter type="LINE" missed="10" covered="106"/><counter type="COMPLEXITY" missed="6" covered="46"/><counter type="METHOD" missed="1" covered="29"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/MapOperation$1" sourcefilename="MapOperation.java"><method name="&lt;init&gt;" desc="()V" line="57"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/InvokeOperation" sourcefilename="InvokeOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Ljava/lang/String;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/InvokeConfig;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="38"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="49"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="56"><counter type="INSTRUCTION" missed="6" covered="14"/><counter type="BRANCH" missed="1" covered="2"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="startInvocation" desc="()V" line="67"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Ljava/lang/Object;" line="85"><counter type="INSTRUCTION" missed="1" covered="43"/><counter type="BRANCH" missed="1" covered="6"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="7" covered="115"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="2" covered="31"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/ParallelOperation" sourcefilename="ParallelOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;Lsoftware/amazon/lambda/durable/config/ParallelConfig;)V" line="49"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleCompletion" desc="(Lsoftware/amazon/lambda/durable/model/ConcurrencyCompletionStatus;)V" line="69"><counter type="INSTRUCTION" missed="0" covered="50"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="16"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="()V" line="92"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="replay" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="103"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="get" desc="()Lsoftware/amazon/lambda/durable/model/ParallelResult;" line="109"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="close" desc="()V" line="116"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="branch" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="124"><counter type="INSTRUCTION" missed="5" covered="23"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleCompletion$1" desc="(Lsoftware/amazon/lambda/durable/operation/ChildContextOperation;)Z" line="76"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleCompletion$0" desc="(Lsoftware/amazon/lambda/durable/operation/ChildContextOperation;)Z" line="72"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="5" covered="150"/><counter type="BRANCH" missed="1" covered="15"/><counter type="LINE" missed="1" covered="42"/><counter type="COMPLEXITY" missed="1" covered="16"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/operation/SerializableDurableOperation" sourcefilename="SerializableDurableOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;)V" line="55"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/OperationIdentifier;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/context/DurableContextImpl;Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;)V" line="64"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateCurrentThreadType" desc="()V" line="75"><counter type="INSTRUCTION" missed="31" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deserializeResult" desc="(Ljava/lang/String;)Ljava/lang/Object;" line="94"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serializeResult" desc="(Ljava/lang/Object;)Ljava/lang/String;" line="111"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serializeException" desc="(Ljava/lang/Throwable;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="121"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserializeException" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/Throwable;" line="132"><counter type="INSTRUCTION" missed="0" covered="53"/><counter type="BRANCH" missed="1" covered="7"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="37"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="31" covered="104"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="6" covered="34"/><counter type="COMPLEXITY" missed="3" covered="10"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="BaseDurableOperation.java"><line nr="46" mi="0" ci="4" mb="0" cb="0"/><line nr="53" mi="0" ci="6" mb="0" cb="0"/><line nr="65" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="71" mi="0" ci="5" mb="0" cb="0"/><line nr="74" mi="0" ci="4" mb="0" cb="0"/><line nr="75" mi="0" ci="1" mb="0" cb="0"/><line nr="78" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="4" mb="0" cb="0"/><line nr="88" mi="0" ci="4" mb="0" cb="0"/><line nr="93" mi="0" ci="4" mb="0" cb="0"/><line nr="98" mi="0" ci="3" mb="0" cb="0"/><line nr="103" mi="0" ci="4" mb="0" cb="0"/><line nr="111" mi="0" ci="3" mb="0" cb="0"/><line nr="113" mi="0" ci="2" mb="0" cb="2"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="4" mb="0" cb="0"/><line nr="117" mi="0" ci="4" mb="0" cb="2"/><line nr="118" mi="0" ci="3" mb="0" cb="0"/><line nr="120" mi="0" ci="2" mb="0" cb="0"/><line nr="122" mi="0" ci="1" mb="0" cb="0"/><line nr="141" mi="0" ci="6" mb="0" cb="0"/><line nr="150" mi="0" ci="6" mb="0" cb="0"/><line nr="159" mi="0" ci="4" mb="0" cb="0"/><line nr="160" mi="0" ci="3" mb="0" cb="2"/><line nr="161" mi="0" ci="8" mb="0" cb="0"/><line nr="163" mi="0" ci="11" mb="0" cb="0"/><line nr="165" mi="4" ci="0" mb="0" cb="0"/><line nr="167" mi="0" ci="1" mb="0" cb="0"/><line nr="171" mi="0" ci="4" mb="0" cb="0"/><line nr="182" mi="0" ci="2" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="0"/><line nr="191" mi="0" ci="12" mb="0" cb="2"/><line nr="192" mi="0" ci="3" mb="0" cb="2"/><line nr="194" mi="0" ci="8" mb="0" cb="0"/><line nr="196" mi="0" ci="5" mb="0" cb="0"/><line nr="197" mi="0" ci="5" mb="0" cb="0"/><line nr="198" mi="0" ci="7" mb="0" cb="0"/><line nr="204" mi="0" ci="12" mb="0" cb="0"/><line nr="207" mi="0" ci="5" mb="0" cb="0"/><line nr="209" mi="0" ci="3" mb="0" cb="0"/><line nr="213" mi="0" ci="4" mb="0" cb="0"/><line nr="214" mi="0" ci="1" mb="0" cb="0"/><line nr="215" mi="3" ci="0" mb="0" cb="0"/><line nr="216" mi="0" ci="1" mb="0" cb="0"/><line nr="219" mi="0" ci="3" mb="0" cb="0"/><line nr="220" mi="0" ci="2" mb="0" cb="2"/><line nr="221" mi="2" ci="7" mb="0" cb="0"/><line nr="222" mi="0" ci="8" mb="0" cb="0"/><line nr="224" mi="0" ci="2" mb="0" cb="0"/><line nr="228" mi="0" ci="3" mb="0" cb="0"/><line nr="229" mi="0" ci="5" mb="0" cb="0"/><line nr="230" mi="0" ci="6" mb="0" cb="0"/><line nr="231" mi="0" ci="8" mb="0" cb="0"/><line nr="233" mi="0" ci="2" mb="0" cb="0"/><line nr="234" mi="0" ci="1" mb="0" cb="0"/><line nr="237" mi="0" ci="7" mb="1" cb="3"/><line nr="239" mi="4" ci="0" mb="0" cb="0"/><line nr="240" mi="6" ci="0" mb="0" cb="0"/><line nr="244" mi="0" ci="2" mb="1" cb="1"/><line nr="248" mi="0" ci="4" mb="0" cb="0"/><line nr="249" mi="0" ci="1" mb="0" cb="0"/><line nr="256" mi="0" ci="1" mb="0" cb="0"/><line nr="259" mi="0" ci="1" mb="0" cb="0"/><line nr="262" mi="0" ci="10" mb="1" cb="3"/><line nr="263" mi="6" ci="0" mb="0" cb="0"/><line nr="264" mi="4" ci="0" mb="0" cb="0"/><line nr="265" mi="2" ci="0" mb="0" cb="0"/><line nr="274" mi="0" ci="3" mb="0" cb="0"/><line nr="276" mi="0" ci="6" mb="0" cb="0"/><line nr="277" mi="0" ci="3" mb="0" cb="0"/><line nr="278" mi="0" ci="1" mb="0" cb="0"/><line nr="287" mi="0" ci="4" mb="0" cb="2"/><line nr="290" mi="0" ci="7" mb="0" cb="0"/><line nr="292" mi="0" ci="2" mb="0" cb="0"/><line nr="294" mi="0" ci="1" mb="0" cb="0"/><line nr="300" mi="0" ci="7" mb="0" cb="0"/><line nr="301" mi="0" ci="2" mb="0" cb="0"/><line nr="302" mi="0" ci="1" mb="0" cb="0"/><line nr="307" mi="0" ci="12" mb="0" cb="2"/><line nr="312" mi="0" ci="5" mb="0" cb="0"/><line nr="313" mi="0" ci="3" mb="0" cb="0"/><line nr="314" mi="0" ci="1" mb="0" cb="0"/><line nr="323" mi="0" ci="4" mb="0" cb="0"/><line nr="325" mi="0" ci="2" mb="0" cb="0"/><line nr="335" mi="7" ci="0" mb="0" cb="0"/><line nr="344" mi="0" ci="4" mb="0" cb="0"/><line nr="345" mi="0" ci="1" mb="0" cb="0"/><line nr="349" mi="0" ci="4" mb="0" cb="0"/><line nr="354" mi="0" ci="6" mb="0" cb="0"/><line nr="364" mi="0" ci="7" mb="0" cb="0"/><line nr="369" mi="0" ci="5" mb="0" cb="0"/><line nr="370" mi="0" ci="1" mb="0" cb="0"/><line nr="374" mi="0" ci="2" mb="0" cb="0"/><line nr="375" mi="0" ci="13" mb="0" cb="0"/><line nr="376" mi="0" ci="3" mb="0" cb="2"/><line nr="377" mi="0" ci="6" mb="0" cb="0"/><line nr="379" mi="0" ci="7" mb="0" cb="0"/><line nr="384" mi="0" ci="5" mb="0" cb="4"/><line nr="385" mi="0" ci="1" mb="0" cb="0"/><line nr="388" mi="0" ci="6" mb="0" cb="2"/><line nr="389" mi="4" ci="9" mb="0" cb="0"/><line nr="391" mi="0" ci="12" mb="0" cb="0"/><line nr="394" mi="0" ci="6" mb="0" cb="2"/><line nr="395" mi="4" ci="9" mb="0" cb="0"/><line nr="397" mi="0" ci="12" mb="0" cb="0"/><line nr="400" mi="0" ci="7" mb="1" cb="3"/><line nr="401" mi="0" ci="3" mb="0" cb="2"/><line nr="402" mi="0" ci="6" mb="1" cb="1"/><line nr="403" mi="13" ci="0" mb="0" cb="0"/><line nr="405" mi="12" ci="0" mb="0" cb="0"/><line nr="407" mi="0" ci="1" mb="0" cb="0"/><line nr="410" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="71" covered="471"/><counter type="BRANCH" missed="5" covered="39"/><counter type="LINE" missed="10" covered="106"/><counter type="COMPLEXITY" missed="6" covered="46"/><counter type="METHOD" missed="1" covered="29"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ParallelOperation.java"><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="62" mi="0" ci="2" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="2" mb="0" cb="0"/><line nr="65" mi="0" ci="1" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="12" mb="0" cb="4"/><line nr="73" mi="0" ci="1" mb="0" cb="0"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><line nr="75" mi="0" ci="1" mb="0" cb="0"/><line nr="76" mi="0" ci="12" mb="0" cb="4"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="78" mi="0" ci="10" mb="0" cb="0"/><line nr="79" mi="0" ci="3" mb="0" cb="2"/><line nr="81" mi="0" ci="2" mb="0" cb="0"/><line nr="82" mi="0" ci="1" mb="0" cb="0"/><line nr="84" mi="0" ci="4" mb="0" cb="0"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="0" ci="7" mb="0" cb="0"/><line nr="88" mi="0" ci="1" mb="0" cb="0"/><line nr="92" mi="0" ci="5" mb="0" cb="0"/><line nr="93" mi="0" ci="2" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="2" mb="0" cb="0"/><line nr="97" mi="0" ci="1" mb="0" cb="0"/><line nr="103" mi="0" ci="5" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="1" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="116" mi="0" ci="4" mb="0" cb="2"/><line nr="117" mi="0" ci="1" mb="0" cb="0"/><line nr="119" mi="0" ci="2" mb="0" cb="0"/><line nr="120" mi="0" ci="1" mb="0" cb="0"/><line nr="124" mi="0" ci="4" mb="1" cb="1"/><line nr="125" mi="5" ci="0" mb="0" cb="0"/><line nr="127" mi="0" ci="11" mb="0" cb="2"/><line nr="128" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="5" covered="150"/><counter type="BRANCH" missed="1" covered="15"/><counter type="LINE" missed="1" covered="42"/><counter type="COMPLEXITY" missed="1" covered="16"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InvokeOperation.java"><line nr="38" mi="0" ci="7" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="10" mb="0" cb="2"/><line nr="44" mi="0" ci="1" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="1" mb="0" cb="0"/><line nr="56" mi="0" ci="6" mb="1" cb="2"/><line nr="58" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="4" ci="0" mb="0" cb="0"/><line nr="62" mi="2" ci="0" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="67" mi="0" ci="2" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="69" mi="0" ci="8" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="0" cb="0"/><line nr="72" mi="0" ci="2" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="1" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="1" ci="6" mb="1" cb="1"/><line nr="88" mi="0" ci="7" mb="0" cb="5"/><line nr="89" mi="0" ci="4" mb="0" cb="0"/><line nr="90" mi="0" ci="5" mb="0" cb="0"/><line nr="91" mi="0" ci="5" mb="0" cb="0"/><line nr="92" mi="0" ci="5" mb="0" cb="0"/><line nr="94" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="7" covered="115"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="2" covered="31"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MapOperation.java"><line nr="55" mi="0" ci="7" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="4" mb="0" cb="0"/><line nr="63" mi="0" ci="5" mb="0" cb="2"/><line nr="64" mi="0" ci="6" mb="1" cb="1"/><line nr="65" mi="3" ci="0" mb="0" cb="0"/><line nr="66" mi="7" ci="0" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="4" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><line nr="74" mi="0" ci="1" mb="0" cb="0"/><line nr="80" mi="2" ci="7" mb="1" cb="1"/><line nr="81" mi="0" ci="9" mb="0" cb="2"/><line nr="82" mi="0" ci="2" mb="0" cb="0"/><line nr="83" mi="0" ci="5" mb="0" cb="0"/><line nr="84" mi="0" ci="15" mb="0" cb="0"/><line nr="86" mi="0" ci="7" mb="0" cb="0"/><line nr="91" mi="0" ci="1" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="1" cb="1"/><line nr="95" mi="0" ci="3" mb="0" cb="2"/><line nr="96" mi="0" ci="2" mb="0" cb="2"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="100" mi="0" ci="3" mb="0" cb="2"/><line nr="101" mi="0" ci="4" mb="0" cb="0"/><line nr="102" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="3" mb="0" cb="2"/><line nr="106" mi="0" ci="9" mb="0" cb="0"/><line nr="107" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="5" mb="0" cb="0"/><line nr="114" mi="0" ci="4" mb="0" cb="2"/><line nr="115" mi="0" ci="2" mb="0" cb="0"/><line nr="116" mi="0" ci="1" mb="0" cb="0"/><line nr="118" mi="0" ci="5" mb="0" cb="0"/><line nr="119" mi="0" ci="2" mb="0" cb="0"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="122" mi="0" ci="2" mb="0" cb="0"/><line nr="123" mi="0" ci="1" mb="0" cb="0"/><line nr="127" mi="0" ci="4" mb="1" cb="1"/><line nr="128" mi="2" ci="0" mb="0" cb="0"/><line nr="129" mi="1" ci="0" mb="0" cb="0"/><line nr="131" mi="0" ci="6" mb="1" cb="2"/><line nr="133" mi="0" ci="5" mb="1" cb="1"/><line nr="134" mi="0" ci="4" mb="0" cb="2"/><line nr="136" mi="0" ci="3" mb="0" cb="0"/><line nr="139" mi="0" ci="3" mb="0" cb="0"/><line nr="140" mi="0" ci="2" mb="0" cb="0"/><line nr="142" mi="0" ci="1" mb="0" cb="0"/><line nr="146" mi="0" ci="2" mb="0" cb="0"/><line nr="147" mi="0" ci="1" mb="0" cb="0"/><line nr="149" mi="4" ci="0" mb="0" cb="0"/><line nr="150" mi="3" ci="0" mb="0" cb="0"/><line nr="152" mi="0" ci="1" mb="0" cb="0"/><line nr="157" mi="0" ci="3" mb="0" cb="0"/><line nr="158" mi="0" ci="9" mb="0" cb="0"/><line nr="160" mi="0" ci="8" mb="0" cb="2"/><line nr="161" mi="0" ci="5" mb="0" cb="0"/><line nr="162" mi="0" ci="3" mb="0" cb="2"/><line nr="163" mi="0" ci="6" mb="0" cb="0"/><line nr="166" mi="0" ci="7" mb="0" cb="0"/><line nr="167" mi="0" ci="1" mb="0" cb="0"/><line nr="168" mi="0" ci="3" mb="0" cb="0"/><line nr="169" mi="3" ci="3" mb="1" cb="1"/><line nr="171" mi="2" ci="0" mb="0" cb="0"/><line nr="173" mi="0" ci="3" mb="1" cb="1"/><line nr="174" mi="3" ci="0" mb="0" cb="0"/><line nr="176" mi="4" ci="0" mb="0" cb="0"/><line nr="178" mi="0" ci="7" mb="0" cb="0"/><line nr="179" mi="0" ci="1" mb="0" cb="0"/><line nr="183" mi="0" ci="7" mb="0" cb="0"/><line nr="184" mi="0" ci="5" mb="0" cb="0"/><line nr="185" mi="0" ci="4" mb="0" cb="0"/><line nr="187" mi="0" ci="4" mb="0" cb="2"/><line nr="188" mi="0" ci="5" mb="0" cb="0"/><line nr="189" mi="0" ci="2" mb="0" cb="0"/><line nr="190" mi="0" ci="4" mb="0" cb="0"/><line nr="191" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="4" mb="0" cb="0"/><line nr="195" mi="0" ci="2" mb="0" cb="0"/><line nr="196" mi="0" ci="4" mb="0" cb="0"/><line nr="197" mi="0" ci="1" mb="0" cb="0"/><line nr="198" mi="0" ci="1" mb="0" cb="0"/><line nr="199" mi="0" ci="6" mb="0" cb="0"/><line nr="201" mi="0" ci="1" mb="0" cb="0"/><line nr="205" mi="0" ci="4" mb="0" cb="2"/><line nr="206" mi="0" ci="2" mb="0" cb="0"/><line nr="208" mi="0" ci="3" mb="0" cb="2"/><line nr="210" mi="0" ci="3" mb="0" cb="0"/><line nr="211" mi="1" ci="8" mb="1" cb="1"/><line nr="212" mi="0" ci="5" mb="0" cb="0"/><line nr="215" mi="0" ci="2" mb="0" cb="0"/><line nr="216" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="35" covered="327"/><counter type="BRANCH" missed="9" covered="36"/><counter type="LINE" missed="9" covered="87"/><counter type="COMPLEXITY" missed="9" covered="23"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ConcurrencyOperation.java"><line nr="54" mi="0" ci="4" mb="0" cb="0"/><line nr="63" mi="0" ci="6" mb="0" cb="0"/><line nr="66" mi="0" ci="5" mb="0" cb="0"/><line nr="69" mi="0" ci="6" mb="0" cb="0"/><line nr="82" mi="0" ci="6" mb="0" cb="0"/><line nr="83" mi="0" ci="3" mb="0" cb="0"/><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="7" mb="0" cb="0"/><line nr="87" mi="0" ci="8" mb="0" cb="0"/><line nr="88" mi="0" ci="8" mb="0" cb="0"/><line nr="89" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="7" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="117" mi="0" ci="7" mb="0" cb="0"/><line nr="138" mi="0" ci="4" mb="0" cb="0"/><line nr="139" mi="0" ci="11" mb="0" cb="0"/><line nr="140" mi="0" ci="5" mb="0" cb="0"/><line nr="141" mi="0" ci="5" mb="0" cb="0"/><line nr="142" mi="0" ci="4" mb="0" cb="0"/><line nr="144" mi="0" ci="2" mb="0" cb="0"/><line nr="145" mi="0" ci="2" mb="0" cb="0"/><line nr="149" mi="0" ci="5" mb="0" cb="0"/><line nr="150" mi="0" ci="7" mb="0" cb="0"/><line nr="151" mi="0" ci="3" mb="0" cb="0"/><line nr="152" mi="0" ci="1" mb="0" cb="0"/><line nr="157" mi="0" ci="4" mb="0" cb="0"/><line nr="158" mi="0" ci="5" mb="0" cb="0"/><line nr="159" mi="0" ci="5" mb="0" cb="0"/><line nr="161" mi="0" ci="6" mb="0" cb="0"/><line nr="167" mi="0" ci="5" mb="0" cb="0"/><line nr="168" mi="0" ci="6" mb="1" cb="1"/><line nr="169" mi="0" ci="4" mb="0" cb="2"/><line nr="170" mi="0" ci="6" mb="0" cb="0"/><line nr="172" mi="0" ci="3" mb="0" cb="0"/><line nr="175" mi="0" ci="3" mb="1" cb="1"/><line nr="176" mi="1" ci="0" mb="0" cb="0"/><line nr="178" mi="0" ci="6" mb="0" cb="0"/><line nr="179" mi="0" ci="2" mb="0" cb="2"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="181" mi="0" ci="1" mb="0" cb="0"/><line nr="185" mi="0" ci="9" mb="0" cb="4"/><line nr="186" mi="0" ci="5" mb="0" cb="0"/><line nr="187" mi="0" ci="4" mb="0" cb="0"/><line nr="188" mi="0" ci="5" mb="0" cb="0"/><line nr="189" mi="0" ci="2" mb="0" cb="0"/><line nr="190" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="6" mb="0" cb="0"/><line nr="199" mi="0" ci="2" mb="0" cb="2"/><line nr="200" mi="0" ci="4" mb="1" cb="1"/><line nr="201" mi="0" ci="4" mb="0" cb="0"/><line nr="202" mi="0" ci="7" mb="0" cb="0"/><line nr="204" mi="7" ci="0" mb="0" cb="0"/><line nr="207" mi="0" ci="1" mb="0" cb="0"/><line nr="208" mi="0" ci="1" mb="0" cb="0"/><line nr="209" mi="3" ci="0" mb="0" cb="0"/><line nr="211" mi="1" ci="0" mb="0" cb="0"/><line nr="213" mi="0" ci="4" mb="0" cb="0"/><line nr="214" mi="0" ci="1" mb="0" cb="0"/><line nr="217" mi="0" ci="3" mb="0" cb="0"/><line nr="218" mi="0" ci="6" mb="1" cb="1"/><line nr="220" mi="0" ci="2" mb="0" cb="0"/><line nr="222" mi="6" ci="0" mb="2" cb="0"/><line nr="223" mi="4" ci="0" mb="0" cb="0"/><line nr="226" mi="10" ci="0" mb="0" cb="0"/><line nr="227" mi="1" ci="0" mb="0" cb="0"/><line nr="232" mi="0" ci="3" mb="0" cb="0"/><line nr="235" mi="0" ci="5" mb="0" cb="0"/><line nr="237" mi="0" ci="3" mb="1" cb="1"/><line nr="238" mi="4" ci="0" mb="0" cb="0"/><line nr="240" mi="0" ci="6" mb="0" cb="0"/><line nr="241" mi="0" ci="2" mb="1" cb="1"/><line nr="242" mi="4" ci="0" mb="0" cb="0"/><line nr="245" mi="0" ci="5" mb="0" cb="0"/><line nr="246" mi="0" ci="1" mb="0" cb="0"/><line nr="247" mi="0" ci="3" mb="0" cb="0"/><line nr="248" mi="0" ci="5" mb="0" cb="2"/><line nr="250" mi="0" ci="8" mb="0" cb="0"/><line nr="251" mi="0" ci="7" mb="0" cb="0"/><line nr="255" mi="0" ci="9" mb="0" cb="0"/><line nr="257" mi="0" ci="3" mb="0" cb="2"/><line nr="258" mi="0" ci="11" mb="0" cb="0"/><line nr="260" mi="0" ci="5" mb="0" cb="0"/><line nr="262" mi="0" ci="3" mb="0" cb="0"/><line nr="264" mi="0" ci="9" mb="0" cb="0"/><line nr="265" mi="0" ci="1" mb="0" cb="0"/><line nr="266" mi="3" ci="0" mb="0" cb="0"/><line nr="267" mi="2" ci="0" mb="0" cb="0"/><line nr="280" mi="0" ci="7" mb="0" cb="0"/><line nr="282" mi="0" ci="3" mb="0" cb="0"/><line nr="283" mi="0" ci="5" mb="0" cb="0"/><line nr="284" mi="0" ci="3" mb="0" cb="0"/><line nr="285" mi="0" ci="1" mb="0" cb="0"/><line nr="286" mi="0" ci="7" mb="0" cb="0"/><line nr="287" mi="0" ci="3" mb="0" cb="0"/><line nr="288" mi="0" ci="1" mb="0" cb="0"/><line nr="289" mi="0" ci="1" mb="0" cb="0"/><line nr="299" mi="0" ci="3" mb="0" cb="0"/><line nr="300" mi="0" ci="3" mb="0" cb="0"/><line nr="303" mi="0" ci="8" mb="0" cb="4"/><line nr="304" mi="0" ci="2" mb="0" cb="0"/><line nr="308" mi="0" ci="8" mb="0" cb="4"/><line nr="309" mi="0" ci="2" mb="0" cb="0"/><line nr="315" mi="0" ci="11" mb="0" cb="6"/><line nr="316" mi="0" ci="2" mb="0" cb="0"/><line nr="319" mi="0" ci="2" mb="0" cb="0"/><line nr="327" mi="0" ci="10" mb="1" cb="3"/><line nr="328" mi="6" ci="0" mb="0" cb="0"/><line nr="329" mi="4" ci="0" mb="0" cb="0"/><line nr="331" mi="0" ci="4" mb="0" cb="0"/><line nr="335" mi="0" ci="2" mb="0" cb="0"/><line nr="336" mi="0" ci="3" mb="0" cb="0"/><line nr="337" mi="0" ci="1" mb="0" cb="0"/><line nr="340" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="56" covered="436"/><counter type="BRANCH" missed="9" covered="37"/><counter type="LINE" missed="14" covered="100"/><counter type="COMPLEXITY" missed="8" covered="31"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CallbackOperation.java"><line nr="29" mi="0" ci="7" mb="0" cb="0"/><line nr="30" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="1" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="7" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="5" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="1" mb="0" cb="0"/><line nr="56" mi="0" ci="5" mb="0" cb="0"/><line nr="58" mi="0" ci="6" mb="1" cb="2"/><line nr="61" mi="0" ci="2" mb="0" cb="0"/><line nr="62" mi="0" ci="1" mb="0" cb="0"/><line nr="66" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="69" mi="3" ci="0" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="1" mb="0" cb="0"/><line nr="76" mi="0" ci="3" mb="0" cb="0"/><line nr="78" mi="0" ci="7" mb="1" cb="3"/><line nr="79" mi="0" ci="6" mb="0" cb="0"/><line nr="80" mi="0" ci="5" mb="0" cb="0"/><line nr="81" mi="0" ci="5" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="84" mi="3" ci="0" mb="0" cb="0"/><line nr="89" mi="0" ci="2" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="1" cb="1"/><line nr="91" mi="0" ci="4" mb="0" cb="2"/><line nr="92" mi="0" ci="9" mb="0" cb="0"/><line nr="94" mi="0" ci="4" mb="0" cb="2"/><line nr="95" mi="0" ci="9" mb="0" cb="0"/><line nr="98" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="14" covered="116"/><counter type="BRANCH" missed="3" covered="10"/><counter type="LINE" missed="4" covered="29"/><counter type="COMPLEXITY" missed="3" covered="11"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="StepOperation.java"><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="48" mi="0" ci="7" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="1" mb="0" cb="0"/><line nr="57" mi="0" ci="4" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="63" mi="0" ci="7" mb="1" cb="3"/><line nr="64" mi="0" ci="7" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="6" mb="1" cb="4"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="5" mb="0" cb="2"/><line nr="71" mi="0" ci="8" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="1" mb="0" cb="0"/><line nr="79" mi="0" ci="7" mb="2" cb="2"/><line nr="80" mi="0" ci="7" mb="0" cb="0"/><line nr="82" mi="4" ci="0" mb="0" cb="0"/><line nr="83" mi="2" ci="0" mb="0" cb="0"/><line nr="87" mi="0" ci="4" mb="0" cb="0"/><line nr="89" mi="4" ci="0" mb="0" cb="0"/><line nr="90" mi="3" ci="0" mb="0" cb="0"/><line nr="92" mi="0" ci="1" mb="0" cb="0"/><line nr="95" mi="0" ci="6" mb="0" cb="0"/><line nr="96" mi="0" ci="9" mb="1" cb="1"/><line nr="97" mi="3" ci="0" mb="0" cb="0"/><line nr="98" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="0" ci="6" mb="0" cb="0"/><line nr="100" mi="0" ci="1" mb="0" cb="0"/><line nr="103" mi="0" ci="4" mb="0" cb="0"/><line nr="107" mi="0" ci="9" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="5" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="4" mb="0" cb="0"/><line nr="117" mi="0" ci="1" mb="0" cb="0"/><line nr="119" mi="0" ci="1" mb="0" cb="0"/><line nr="122" mi="0" ci="4" mb="0" cb="0"/><line nr="123" mi="0" ci="1" mb="0" cb="0"/><line nr="127" mi="0" ci="3" mb="0" cb="0"/><line nr="128" mi="0" ci="6" mb="0" cb="4"/><line nr="129" mi="0" ci="4" mb="0" cb="0"/><line nr="131" mi="0" ci="5" mb="0" cb="2"/><line nr="133" mi="0" ci="4" mb="0" cb="0"/><line nr="136" mi="0" ci="4" mb="0" cb="0"/><line nr="139" mi="0" ci="1" mb="0" cb="0"/><line nr="144" mi="0" ci="8" mb="0" cb="0"/><line nr="148" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="1" mb="0" cb="0"/><line nr="152" mi="0" ci="3" mb="0" cb="0"/><line nr="153" mi="3" ci="3" mb="1" cb="1"/><line nr="154" mi="2" ci="0" mb="0" cb="0"/><line nr="156" mi="0" ci="6" mb="0" cb="2"/><line nr="158" mi="4" ci="0" mb="0" cb="0"/><line nr="162" mi="0" ci="6" mb="0" cb="2"/><line nr="163" mi="0" ci="4" mb="0" cb="0"/><line nr="165" mi="0" ci="4" mb="0" cb="0"/><line nr="168" mi="0" ci="7" mb="0" cb="2"/><line nr="169" mi="0" ci="7" mb="0" cb="0"/><line nr="171" mi="0" ci="5" mb="0" cb="4"/><line nr="173" mi="0" ci="5" mb="0" cb="0"/><line nr="174" mi="0" ci="2" mb="0" cb="0"/><line nr="175" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="0" ci="1" mb="0" cb="0"/><line nr="177" mi="0" ci="4" mb="0" cb="0"/><line nr="180" mi="0" ci="2" mb="0" cb="0"/><line nr="181" mi="0" ci="2" mb="0" cb="0"/><line nr="182" mi="0" ci="3" mb="0" cb="0"/><line nr="185" mi="0" ci="9" mb="0" cb="0"/><line nr="186" mi="0" ci="1" mb="0" cb="0"/><line nr="189" mi="0" ci="6" mb="0" cb="0"/><line nr="190" mi="0" ci="3" mb="0" cb="0"/><line nr="192" mi="0" ci="1" mb="0" cb="0"/><line nr="196" mi="0" ci="3" mb="0" cb="0"/><line nr="198" mi="0" ci="4" mb="0" cb="2"/><line nr="199" mi="0" ci="3" mb="0" cb="0"/><line nr="200" mi="1" ci="6" mb="1" cb="1"/><line nr="202" mi="0" ci="4" mb="0" cb="0"/><line nr="204" mi="0" ci="4" mb="0" cb="0"/><line nr="207" mi="0" ci="3" mb="0" cb="2"/><line nr="208" mi="0" ci="5" mb="0" cb="0"/><line nr="212" mi="0" ci="4" mb="0" cb="0"/><line nr="213" mi="0" ci="2" mb="0" cb="2"/><line nr="214" mi="2" ci="0" mb="0" cb="0"/><line nr="217" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="28" covered="313"/><counter type="BRANCH" missed="7" covered="36"/><counter type="LINE" missed="8" covered="79"/><counter type="COMPLEXITY" missed="7" covered="29"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitOperation.java"><line nr="26" mi="0" ci="4" mb="0" cb="0"/><line nr="32" mi="0" ci="5" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="40" mi="0" ci="2" mb="0" cb="0"/><line nr="41" mi="0" ci="1" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="43" mi="0" ci="4" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="2" mb="0" cb="0"/><line nr="48" mi="0" ci="1" mb="0" cb="0"/><line nr="53" mi="0" ci="4" mb="0" cb="2"/><line nr="55" mi="0" ci="2" mb="0" cb="0"/><line nr="56" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="2" mb="0" cb="0"/><line nr="60" mi="0" ci="1" mb="0" cb="0"/><line nr="63" mi="0" ci="6" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="1" cb="1"/><line nr="66" mi="0" ci="3" mb="0" cb="2"/><line nr="67" mi="0" ci="3" mb="1" cb="1"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="4" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="77" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="75"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="27"/><counter type="COMPLEXITY" missed="2" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ChildContextOperation.java"><line nr="51" mi="0" ci="6" mb="0" cb="0"/><line nr="60" mi="0" ci="8" mb="0" cb="0"/><line nr="61" mi="0" ci="1" mb="0" cb="0"/><line nr="70" mi="0" ci="8" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="1" mb="0" cb="0"/><line nr="78" mi="0" ci="6" mb="0" cb="0"/><line nr="79" mi="0" ci="2" mb="0" cb="0"/><line nr="80" mi="0" ci="1" mb="0" cb="0"/><line nr="85" mi="0" ci="6" mb="1" cb="3"/><line nr="87" mi="0" ci="5" mb="1" cb="1"/><line nr="88" mi="0" ci="4" mb="0" cb="2"/><line nr="90" mi="0" ci="4" mb="0" cb="0"/><line nr="91" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="0" ci="2" mb="0" cb="0"/><line nr="95" mi="0" ci="1" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="4" ci="0" mb="0" cb="0"/><line nr="100" mi="3" ci="0" mb="0" cb="0"/><line nr="102" mi="0" ci="1" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="4" mb="0" cb="0"/><line nr="120" mi="0" ci="7" mb="0" cb="0"/><line nr="122" mi="0" ci="5" mb="0" cb="0"/><line nr="124" mi="0" ci="3" mb="0" cb="0"/><line nr="125" mi="0" ci="1" mb="0" cb="0"/><line nr="126" mi="0" ci="3" mb="0" cb="0"/><line nr="127" mi="0" ci="1" mb="0" cb="0"/><line nr="129" mi="0" ci="1" mb="0" cb="0"/><line nr="132" mi="0" ci="4" mb="0" cb="0"/><line nr="133" mi="0" ci="1" mb="0" cb="0"/><line nr="136" mi="0" ci="4" mb="0" cb="2"/><line nr="139" mi="0" ci="3" mb="0" cb="0"/><line nr="140" mi="0" ci="3" mb="0" cb="0"/><line nr="142" mi="0" ci="3" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="149" mi="0" ci="7" mb="0" cb="4"/><line nr="150" mi="0" ci="1" mb="0" cb="0"/><line nr="153" mi="0" ci="4" mb="0" cb="0"/><line nr="155" mi="0" ci="8" mb="0" cb="4"/><line nr="156" mi="0" ci="3" mb="0" cb="0"/><line nr="157" mi="0" ci="5" mb="0" cb="0"/><line nr="161" mi="0" ci="3" mb="0" cb="0"/><line nr="162" mi="0" ci="4" mb="0" cb="0"/><line nr="163" mi="0" ci="2" mb="0" cb="0"/><line nr="164" mi="0" ci="1" mb="0" cb="0"/><line nr="165" mi="0" ci="1" mb="0" cb="0"/><line nr="166" mi="0" ci="6" mb="0" cb="0"/><line nr="168" mi="0" ci="1" mb="0" cb="0"/><line nr="171" mi="0" ci="3" mb="0" cb="0"/><line nr="172" mi="0" ci="6" mb="0" cb="2"/><line nr="174" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="3" ci="3" mb="1" cb="1"/><line nr="178" mi="4" ci="0" mb="0" cb="0"/><line nr="183" mi="0" ci="7" mb="0" cb="4"/><line nr="184" mi="0" ci="1" mb="0" cb="0"/><line nr="188" mi="0" ci="6" mb="0" cb="2"/><line nr="189" mi="0" ci="4" mb="0" cb="0"/><line nr="191" mi="0" ci="4" mb="0" cb="0"/><line nr="194" mi="0" ci="2" mb="0" cb="0"/><line nr="195" mi="0" ci="5" mb="0" cb="0"/><line nr="196" mi="0" ci="1" mb="0" cb="0"/><line nr="200" mi="0" ci="3" mb="0" cb="0"/><line nr="202" mi="0" ci="4" mb="0" cb="2"/><line nr="203" mi="0" ci="3" mb="0" cb="2"/><line nr="204" mi="0" ci="3" mb="0" cb="0"/><line nr="206" mi="0" ci="3" mb="0" cb="0"/><line nr="207" mi="1" ci="6" mb="1" cb="1"/><line nr="208" mi="0" ci="4" mb="0" cb="0"/><line nr="210" mi="0" ci="3" mb="0" cb="0"/><line nr="211" mi="0" ci="7" mb="0" cb="2"/><line nr="214" mi="0" ci="4" mb="0" cb="0"/><line nr="215" mi="0" ci="2" mb="0" cb="2"/><line nr="216" mi="2" ci="0" mb="0" cb="0"/><line nr="220" mi="1" ci="6" mb="2" cb="3"/><line nr="221" mi="3" ci="0" mb="0" cb="0"/><line nr="222" mi="0" ci="5" mb="0" cb="0"/><line nr="223" mi="0" ci="5" mb="0" cb="0"/><line nr="224" mi="0" ci="5" mb="0" cb="0"/><line nr="228" mi="8" ci="0" mb="0" cb="0"/><line nr="234" mi="0" ci="3" mb="0" cb="0"/><line nr="235" mi="0" ci="3" mb="0" cb="0"/><line nr="236" mi="0" ci="9" mb="0" cb="2"/><line nr="237" mi="0" ci="2" mb="0" cb="0"/><line nr="238" mi="0" ci="3" mb="0" cb="0"/><line nr="239" mi="0" ci="3" mb="0" cb="0"/><line nr="240" mi="0" ci="9" mb="0" cb="2"/><line nr="241" mi="0" ci="2" mb="0" cb="0"/><line nr="242" mi="0" ci="3" mb="0" cb="0"/><line nr="243" mi="0" ci="2" mb="1" cb="1"/><line nr="245" mi="0" ci="4" mb="0" cb="2"/><line nr="246" mi="0" ci="6" mb="1" cb="2"/><line nr="247" mi="0" ci="5" mb="0" cb="0"/><line nr="248" mi="0" ci="5" mb="0" cb="0"/><line nr="253" mi="0" ci="3" mb="1" cb="1"/><line nr="254" mi="0" ci="4" mb="1" cb="1"/><line nr="255" mi="0" ci="3" mb="1" cb="1"/><line nr="256" mi="0" ci="4" mb="0" cb="0"/><line nr="257" mi="0" ci="3" mb="1" cb="1"/><line nr="258" mi="9" ci="0" mb="0" cb="0"/><line nr="260" mi="0" ci="9" mb="0" cb="0"/><line nr="265" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="43" covered="353"/><counter type="BRANCH" missed="12" covered="50"/><counter type="LINE" missed="8" covered="95"/><counter type="COMPLEXITY" missed="12" covered="35"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitForConditionOperation.java"><line nr="38" mi="0" ci="4" mb="0" cb="0"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="7" mb="0" cb="0"/><line nr="63" mi="0" ci="1" mb="0" cb="0"/><line nr="67" mi="0" ci="6" mb="0" cb="4"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="5" mb="0" cb="0"/><line nr="70" mi="0" ci="4" mb="0" cb="0"/><line nr="72" mi="2" ci="2" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="1" mb="0" cb="0"/><line nr="79" mi="0" ci="3" mb="0" cb="0"/><line nr="81" mi="0" ci="4" mb="0" cb="2"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="1" ci="6" mb="1" cb="1"/><line nr="84" mi="0" ci="4" mb="0" cb="0"/><line nr="86" mi="0" ci="4" mb="0" cb="0"/><line nr="89" mi="0" ci="4" mb="0" cb="0"/><line nr="90" mi="0" ci="2" mb="0" cb="2"/><line nr="91" mi="2" ci="0" mb="0" cb="0"/><line nr="94" mi="0" ci="5" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="101" mi="2" ci="12" mb="2" cb="2"/><line nr="102" mi="1" ci="6" mb="1" cb="1"/><line nr="104" mi="0" ci="2" mb="0" cb="2"/><line nr="105" mi="0" ci="5" mb="0" cb="0"/><line nr="107" mi="0" ci="4" mb="0" cb="0"/><line nr="109" mi="0" ci="4" mb="0" cb="0"/><line nr="110" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="5" mb="0" cb="0"/><line nr="114" mi="0" ci="8" mb="1" cb="1"/><line nr="115" mi="0" ci="3" mb="0" cb="0"/><line nr="116" mi="2" ci="0" mb="0" cb="0"/><line nr="117" mi="0" ci="1" mb="0" cb="0"/><line nr="121" mi="0" ci="5" mb="0" cb="0"/><line nr="122" mi="0" ci="9" mb="0" cb="0"/><line nr="125" mi="0" ci="3" mb="0" cb="0"/><line nr="126" mi="0" ci="6" mb="0" cb="4"/><line nr="127" mi="0" ci="4" mb="0" cb="0"/><line nr="128" mi="0" ci="4" mb="0" cb="0"/><line nr="132" mi="0" ci="7" mb="0" cb="0"/><line nr="135" mi="0" ci="5" mb="0" cb="0"/><line nr="136" mi="0" ci="4" mb="0" cb="0"/><line nr="138" mi="0" ci="3" mb="0" cb="2"/><line nr="140" mi="0" ci="2" mb="0" cb="0"/><line nr="141" mi="0" ci="2" mb="0" cb="0"/><line nr="142" mi="0" ci="2" mb="0" cb="0"/><line nr="143" mi="0" ci="3" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="146" mi="0" ci="7" mb="0" cb="0"/><line nr="149" mi="0" ci="2" mb="0" cb="0"/><line nr="150" mi="0" ci="2" mb="0" cb="0"/><line nr="151" mi="0" ci="1" mb="0" cb="0"/><line nr="152" mi="0" ci="4" mb="0" cb="0"/><line nr="153" mi="0" ci="4" mb="0" cb="0"/><line nr="154" mi="0" ci="2" mb="0" cb="0"/><line nr="155" mi="0" ci="3" mb="0" cb="0"/><line nr="158" mi="0" ci="4" mb="0" cb="0"/><line nr="159" mi="0" ci="10" mb="1" cb="1"/><line nr="160" mi="3" ci="0" mb="0" cb="0"/><line nr="161" mi="0" ci="2" mb="0" cb="0"/><line nr="162" mi="0" ci="9" mb="0" cb="0"/><line nr="164" mi="0" ci="1" mb="0" cb="0"/><line nr="165" mi="0" ci="3" mb="0" cb="0"/><line nr="166" mi="0" ci="1" mb="0" cb="0"/><line nr="168" mi="0" ci="1" mb="0" cb="0"/><line nr="170" mi="0" ci="4" mb="0" cb="0"/><line nr="171" mi="0" ci="1" mb="0" cb="0"/><line nr="174" mi="0" ci="3" mb="0" cb="0"/><line nr="175" mi="3" ci="3" mb="1" cb="1"/><line nr="176" mi="2" ci="0" mb="0" cb="0"/><line nr="178" mi="3" ci="3" mb="1" cb="1"/><line nr="179" mi="4" ci="0" mb="0" cb="0"/><line nr="182" mi="0" ci="6" mb="0" cb="2"/><line nr="183" mi="0" ci="3" mb="0" cb="0"/><line nr="184" mi="0" ci="4" mb="0" cb="0"/><line nr="187" mi="0" ci="6" mb="0" cb="0"/><line nr="188" mi="0" ci="3" mb="0" cb="0"/><line nr="189" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="25" covered="296"/><counter type="BRANCH" missed="8" covered="26"/><counter type="LINE" missed="5" covered="79"/><counter type="COMPLEXITY" missed="8" covered="23"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SerializableDurableOperation.java"><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="55" mi="0" ci="7" mb="0" cb="0"/><line nr="56" mi="0" ci="1" mb="0" cb="0"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="1" mb="0" cb="0"/><line nr="75" mi="4" ci="0" mb="0" cb="0"/><line nr="76" mi="3" ci="0" mb="2" cb="0"/><line nr="77" mi="8" ci="0" mb="0" cb="0"/><line nr="79" mi="11" ci="0" mb="0" cb="0"/><line nr="81" mi="4" ci="0" mb="0" cb="0"/><line nr="83" mi="1" ci="0" mb="0" cb="0"/><line nr="94" mi="0" ci="7" mb="0" cb="0"/><line nr="95" mi="0" ci="1" mb="0" cb="0"/><line nr="96" mi="0" ci="4" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><line nr="100" mi="0" ci="2" mb="0" cb="0"/><line nr="111" mi="0" ci="5" mb="0" cb="0"/><line nr="121" mi="0" ci="5" mb="0" cb="0"/><line nr="132" mi="0" ci="2" mb="0" cb="0"/><line nr="133" mi="0" ci="2" mb="0" cb="2"/><line nr="134" mi="0" ci="2" mb="0" cb="0"/><line nr="136" mi="0" ci="3" mb="0" cb="0"/><line nr="137" mi="0" ci="3" mb="0" cb="0"/><line nr="139" mi="0" ci="2" mb="0" cb="2"/><line nr="140" mi="0" ci="2" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="4" mb="1" cb="1"/><line nr="146" mi="0" ci="5" mb="0" cb="0"/><line nr="147" mi="0" ci="5" mb="0" cb="0"/><line nr="149" mi="0" ci="2" mb="0" cb="2"/><line nr="150" mi="0" ci="5" mb="0" cb="0"/><line nr="153" mi="0" ci="1" mb="0" cb="0"/><line nr="154" mi="0" ci="3" mb="0" cb="0"/><line nr="155" mi="0" ci="1" mb="0" cb="0"/><line nr="156" mi="0" ci="4" mb="0" cb="0"/><line nr="157" mi="0" ci="2" mb="0" cb="0"/><line nr="158" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="31" covered="104"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="6" covered="34"/><counter type="COMPLEXITY" missed="3" covered="10"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="315" covered="2756"/><counter type="BRANCH" missed="61" covered="272"/><counter type="LINE" missed="67" covered="709"/><counter type="COMPLEXITY" missed="61" covered="243"/><counter type="METHOD" missed="2" covered="126"/><counter type="CLASS" missed="0" covered="12"/></package><package name="software/amazon/lambda/durable/retry"><class name="software/amazon/lambda/durable/retry/WaitStrategies$Presets" sourcefilename="WaitStrategies.java"><method name="&lt;init&gt;" desc="()V" line="18"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="25"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="10"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/JitterStrategy" sourcefilename="JitterStrategy.java"><method name="&lt;clinit&gt;" desc="()V" line="11"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/JitterStrategy$3" sourcefilename="JitterStrategy.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;I)V" line="36"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="apply" desc="(D)D" line="39"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/JitterStrategy$2" sourcefilename="JitterStrategy.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;I)V" line="26"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="apply" desc="(D)D" line="29"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/PollingStrategy" sourcefilename="PollingStrategy.java"/><class name="software/amazon/lambda/durable/retry/JitterStrategy$1" sourcefilename="JitterStrategy.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;I)V" line="16"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="apply" desc="(D)D" line="19"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy" sourcefilename="WaitForConditionWaitStrategy.java"/><class name="software/amazon/lambda/durable/retry/PollingStrategies$Presets" sourcefilename="PollingStrategies.java"><method name="&lt;init&gt;" desc="()V" line="13"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="19"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="9"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/PollingStrategies" sourcefilename="PollingStrategies.java"><method name="&lt;init&gt;" desc="()V" line="10"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="exponentialBackoff" desc="(Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/retry/PollingStrategy;" line="36"><counter type="INSTRUCTION" missed="0" covered="49"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fixedDelay" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/retry/PollingStrategy;" line="66"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="at" desc="(Ljava/time/Instant;)Lsoftware/amazon/lambda/durable/retry/PollingStrategy;" line="80"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$at$2" desc="(Ljava/time/Instant;I)Ljava/time/Duration;" line="82"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$fixedDelay$1" desc="(Ljava/time/Duration;I)Ljava/time/Duration;" line="70"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$exponentialBackoff$0" desc="(Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;Ljava/time/Duration;I)Ljava/time/Duration;" line="53"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="110"/><counter type="BRANCH" missed="0" covered="16"/><counter type="LINE" missed="1" covered="23"/><counter type="COMPLEXITY" missed="1" covered="14"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/RetryStrategy" sourcefilename="RetryStrategy.java"/><class name="software/amazon/lambda/durable/retry/WaitStrategies" sourcefilename="WaitStrategies.java"><method name="&lt;init&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="defaultStrategy" desc="()Lsoftware/amazon/lambda/durable/retry/WaitForConditionWaitStrategy;" line="37"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="exponentialBackoff" desc="(ILjava/time/Duration;Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;)Lsoftware/amazon/lambda/durable/retry/WaitForConditionWaitStrategy;" line="55"><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fixedDelay" desc="(ILjava/time/Duration;)Lsoftware/amazon/lambda/durable/retry/WaitForConditionWaitStrategy;" line="93"><counter type="INSTRUCTION" missed="6" covered="9"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$fixedDelay$1" desc="(ILjava/time/Duration;Ljava/lang/Object;I)Ljava/time/Duration;" line="99"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$exponentialBackoff$0" desc="(ILjava/time/Duration;Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;Ljava/lang/Object;I)Ljava/time/Duration;" line="69"><counter type="INSTRUCTION" missed="0" covered="40"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="9" covered="100"/><counter type="BRANCH" missed="1" covered="11"/><counter type="LINE" missed="2" covered="24"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/RetryStrategies" sourcefilename="RetryStrategies.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="exponentialBackoff" desc="(ILjava/time/Duration;Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;)Lsoftware/amazon/lambda/durable/retry/RetryStrategy;" line="50"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fixedDelay" desc="(ILjava/time/Duration;)Lsoftware/amazon/lambda/durable/retry/RetryStrategy;" line="90"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$fixedDelay$1" desc="(ILjava/time/Duration;Ljava/lang/Throwable;I)Lsoftware/amazon/lambda/durable/retry/RetryDecision;" line="96"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$exponentialBackoff$0" desc="(ILjava/time/Duration;Ljava/time/Duration;DLsoftware/amazon/lambda/durable/retry/JitterStrategy;Ljava/lang/Throwable;I)Lsoftware/amazon/lambda/durable/retry/RetryDecision;" line="61"><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="88"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="1" covered="22"/><counter type="COMPLEXITY" missed="1" covered="9"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/RetryStrategies$Presets" sourcefilename="RetryStrategies.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$static$0" desc="(Ljava/lang/Throwable;I)Lsoftware/amazon/lambda/durable/retry/RetryDecision;" line="32"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="23"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="14"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/retry/RetryDecision" sourcefilename="RetryDecision.java"><method name="&lt;init&gt;" desc="(ZLjava/time/Duration;)V" line="12"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="retry" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/retry/RetryDecision;" line="24"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fail" desc="()Lsoftware/amazon/lambda/durable/retry/RetryDecision;" line="33"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="shouldRetry" desc="()Z" line="38"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="delay" desc="()Ljava/time/Duration;" line="43"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toString" desc="()Ljava/lang/String;" line="48"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="RetryDecision.java"><line nr="12" mi="0" ci="2" mb="0" cb="0"/><line nr="13" mi="0" ci="3" mb="0" cb="0"/><line nr="14" mi="0" ci="7" mb="0" cb="2"/><line nr="15" mi="0" ci="1" mb="0" cb="0"/><line nr="24" mi="0" ci="6" mb="0" cb="0"/><line nr="33" mi="0" ci="6" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="15" mb="0" cb="2"/><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="PollingStrategy.java"/><sourcefile name="RetryStrategy.java"/><sourcefile name="WaitForConditionWaitStrategy.java"/><sourcefile name="WaitStrategies.java"><line nr="15" mi="3" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="0" ci="3" mb="0" cb="0"/><line nr="26" mi="0" ci="7" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="55" mi="0" ci="2" mb="0" cb="2"/><line nr="56" mi="0" ci="6" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="4" mb="0" cb="2"/><line nr="61" mi="0" ci="6" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="2"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="67" mi="0" ci="7" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="2"/><line nr="70" mi="0" ci="6" mb="0" cb="0"/><line nr="74" mi="0" ci="4" mb="0" cb="0"/><line nr="75" mi="0" ci="4" mb="0" cb="0"/><line nr="76" mi="0" ci="11" mb="0" cb="0"/><line nr="77" mi="0" ci="4" mb="0" cb="0"/><line nr="78" mi="0" ci="5" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="0" ci="2" mb="1" cb="1"/><line nr="94" mi="6" ci="0" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="4" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="2"/><line nr="100" mi="0" ci="6" mb="0" cb="0"/><line nr="103" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="12" covered="110"/><counter type="BRANCH" missed="1" covered="11"/><counter type="LINE" missed="3" covered="26"/><counter type="COMPLEXITY" missed="3" covered="11"/><counter type="METHOD" missed="2" covered="6"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="PollingStrategies.java"><line nr="10" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="0" ci="2" mb="0" cb="0"/><line nr="20" mi="0" ci="7" mb="0" cb="0"/><line nr="36" mi="0" ci="4" mb="0" cb="0"/><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="4" mb="0" cb="0"/><line nr="39" mi="0" ci="4" mb="0" cb="2"/><line nr="40" mi="0" ci="5" mb="0" cb="0"/><line nr="43" mi="0" ci="6" mb="0" cb="4"/><line nr="44" mi="0" ci="5" mb="0" cb="0"/><line nr="47" mi="0" ci="6" mb="0" cb="4"/><line nr="48" mi="0" ci="5" mb="0" cb="0"/><line nr="51" mi="0" ci="6" mb="0" cb="0"/><line nr="53" mi="0" ci="11" mb="0" cb="0"/><line nr="54" mi="0" ci="8" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="0" ci="6" mb="0" cb="4"/><line nr="68" mi="0" ci="5" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="0" ci="3" mb="0" cb="0"/><line nr="82" mi="0" ci="4" mb="0" cb="0"/><line nr="83" mi="0" ci="3" mb="0" cb="2"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="87" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="119"/><counter type="BRANCH" missed="0" covered="16"/><counter type="LINE" missed="2" covered="25"/><counter type="COMPLEXITY" missed="2" covered="15"/><counter type="METHOD" missed="2" covered="7"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="JitterStrategy.java"><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="16" mi="0" ci="11" mb="0" cb="0"/><line nr="19" mi="0" ci="2" mb="0" cb="0"/><line nr="26" mi="0" ci="11" mb="0" cb="0"/><line nr="29" mi="0" ci="4" mb="0" cb="0"/><line nr="36" mi="0" ci="11" mb="0" cb="0"/><line nr="39" mi="0" ci="10" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="4"/></sourcefile><sourcefile name="RetryStrategies.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="0" ci="4" mb="0" cb="0"/><line nr="25" mi="0" ci="2" mb="0" cb="0"/><line nr="26" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="5" mb="0" cb="0"/><line nr="50" mi="0" ci="2" mb="0" cb="2"/><line nr="51" mi="0" ci="5" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="2"/><line nr="56" mi="0" ci="5" mb="0" cb="0"/><line nr="59" mi="0" ci="7" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="2"/><line nr="62" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="11" mb="0" cb="0"/><line nr="72" mi="0" ci="4" mb="0" cb="0"/><line nr="76" mi="0" ci="5" mb="0" cb="0"/><line nr="78" mi="0" ci="4" mb="0" cb="0"/><line nr="90" mi="0" ci="2" mb="0" cb="2"/><line nr="91" mi="0" ci="5" mb="0" cb="0"/><line nr="93" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="4" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="2"/><line nr="97" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="102"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="2" covered="26"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="2" covered="6"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="24" covered="429"/><counter type="BRANCH" missed="1" covered="41"/><counter type="LINE" missed="7" covered="93"/><counter type="COMPLEXITY" missed="7" covered="52"/><counter type="METHOD" missed="6" covered="32"/><counter type="CLASS" missed="0" covered="11"/></package><package name="software/amazon/lambda/durable/util"><class name="software/amazon/lambda/durable/util/CompletedDurableFuture" sourcefilename="CompletedDurableFuture.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;)V" line="17"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="get" desc="()Ljava/lang/Object;" line="23"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/util/ParameterValidator" sourcefilename="ParameterValidator.java"><method name="validateDuration" desc="(Ljava/time/Duration;Ljava/lang/String;)V" line="37"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateOptionalDuration" desc="(Ljava/time/Duration;Ljava/lang/String;)V" line="54"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validatePositiveInteger" desc="(Ljava/lang/Integer;Ljava/lang/String;)V" line="68"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateOptionalPositiveInteger" desc="(Ljava/lang/Integer;Ljava/lang/String;)V" line="84"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateOperationName" desc="(Ljava/lang/String;)V" line="90"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateOperationName" desc="(Ljava/lang/String;I)V" line="94"><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateOrderedCollection" desc="(Ljava/util/Collection;)V" line="130"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isUnorderedMapView" desc="(Ljava/util/Collection;)Z" line="143"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="116"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="170"/><counter type="BRANCH" missed="0" covered="40"/><counter type="LINE" missed="0" covered="39"/><counter type="COMPLEXITY" missed="0" covered="29"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/util/ExceptionHelper" sourcefilename="ExceptionHelper.java"><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="sneakyThrow" desc="(Ljava/lang/Throwable;)V" line="24"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="unwrapCompletableFuture" desc="(Ljava/lang/Throwable;)Ljava/lang/Throwable;" line="34"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildErrorObject" desc="(Ljava/lang/Throwable;Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="47"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serializeStackTrace" desc="([Ljava/lang/StackTraceElement;)Ljava/util/List;" line="63"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserializeStackTrace" desc="(Ljava/util/List;)[Ljava/lang/StackTraceElement;" line="80"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$deserializeStackTrace$2" desc="(I)[Ljava/lang/StackTraceElement;" line="85"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$deserializeStackTrace$1" desc="(Ljava/lang/String;)Ljava/lang/StackTraceElement;" line="82"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$serializeStackTrace$0" desc="(Ljava/lang/StackTraceElement;)Ljava/lang/String;" line="64"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="94"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="22"/><counter type="COMPLEXITY" missed="1" covered="9"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ParameterValidator.java"><line nr="37" mi="0" ci="2" mb="0" cb="2"/><line nr="38" mi="0" ci="6" mb="0" cb="0"/><line nr="40" mi="0" ci="5" mb="0" cb="2"/><line nr="41" mi="0" ci="8" mb="0" cb="0"/><line nr="44" mi="0" ci="1" mb="0" cb="0"/><line nr="54" mi="0" ci="7" mb="0" cb="4"/><line nr="55" mi="0" ci="8" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="2" mb="0" cb="2"/><line nr="69" mi="0" ci="6" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="2"/><line nr="72" mi="0" ci="7" mb="0" cb="0"/><line nr="74" mi="0" ci="1" mb="0" cb="0"/><line nr="84" mi="0" ci="5" mb="0" cb="4"/><line nr="85" mi="0" ci="7" mb="0" cb="0"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="0"/><line nr="91" mi="0" ci="1" mb="0" cb="0"/><line nr="94" mi="0" ci="2" mb="0" cb="2"/><line nr="96" mi="0" ci="1" mb="0" cb="0"/><line nr="98" mi="0" ci="3" mb="0" cb="2"/><line nr="99" mi="0" ci="5" mb="0" cb="0"/><line nr="101" mi="0" ci="4" mb="0" cb="2"/><line nr="102" mi="0" ci="7" mb="0" cb="0"/><line nr="107" mi="0" ci="17" mb="0" cb="2"/><line nr="108" mi="0" ci="6" mb="0" cb="4"/><line nr="109" mi="0" ci="6" mb="0" cb="0"/><line nr="113" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="5" mb="0" cb="0"/><line nr="117" mi="0" ci="2" mb="0" cb="0"/><line nr="130" mi="0" ci="2" mb="0" cb="2"/><line nr="131" mi="0" ci="5" mb="0" cb="0"/><line nr="134" mi="0" ci="3" mb="0" cb="2"/><line nr="135" mi="0" ci="1" mb="0" cb="0"/><line nr="137" mi="0" ci="6" mb="0" cb="4"/><line nr="138" mi="0" ci="5" mb="0" cb="0"/><line nr="140" mi="0" ci="1" mb="0" cb="0"/><line nr="143" mi="0" ci="4" mb="0" cb="0"/><line nr="144" mi="0" ci="10" mb="0" cb="4"/><counter type="INSTRUCTION" missed="0" covered="170"/><counter type="BRANCH" missed="0" covered="40"/><counter type="LINE" missed="0" covered="39"/><counter type="COMPLEXITY" missed="0" covered="29"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CompletedDurableFuture.java"><line nr="17" mi="2" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="1" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ExceptionHelper.java"><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="2"/><line nr="35" mi="0" ci="4" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="4" mb="0" cb="0"/><line nr="49" mi="0" ci="4" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="2" mb="0" cb="0"/><line nr="63" mi="0" ci="4" mb="0" cb="0"/><line nr="64" mi="0" ci="9" mb="0" cb="0"/><line nr="66" mi="0" ci="5" mb="0" cb="0"/><line nr="67" mi="0" ci="5" mb="0" cb="0"/><line nr="68" mi="0" ci="5" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="0" ci="2" mb="0" cb="0"/><line nr="82" mi="0" ci="4" mb="0" cb="0"/><line nr="83" mi="0" ci="17" mb="0" cb="0"/><line nr="85" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="94"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="22"/><counter type="COMPLEXITY" missed="1" covered="9"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="12" covered="264"/><counter type="BRANCH" missed="0" covered="42"/><counter type="LINE" missed="5" covered="61"/><counter type="COMPLEXITY" missed="3" covered="38"/><counter type="METHOD" missed="3" covered="17"/><counter type="CLASS" missed="1" covered="2"/></package><package name="software/amazon/lambda/durable/exception"><class name="software/amazon/lambda/durable/exception/StepException" sourcefilename="StepException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Ljava/lang/String;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/InvokeException" sourcefilename="InvokeException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="10"><counter type="INSTRUCTION" missed="1" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="1" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/CallbackFailedException" sourcefilename="CallbackFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/String;" line="15"><counter type="INSTRUCTION" missed="2" covered="15"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="23"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/MapIterationFailedException" sourcefilename="MapIterationFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="15"><counter type="INSTRUCTION" missed="1" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="formatMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/String;" line="19"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="34"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/InvokeStoppedException" sourcefilename="InvokeStoppedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/CallbackTimeoutException" sourcefilename="CallbackTimeoutException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="10"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/CallbackSubmitterException" sourcefilename="CallbackSubmitterException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/lambda/durable/exception/StepException;)V" line="10"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/CallbackException" sourcefilename="CallbackException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Ljava/lang/String;)V" line="12"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Ljava/lang/String;Ljava/lang/Throwable;)V" line="16"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCallbackId" desc="()Ljava/lang/String;" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/StepInterruptedException" sourcefilename="StepInterruptedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isStepInterruptedException" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Z" line="15"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toErrorObject" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="22"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="formatMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="51"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/InvokeTimedOutException" sourcefilename="InvokeTimedOutException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/DurableExecutionException" sourcefilename="DurableExecutionException.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/StackTraceElement;)V" line="8"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/Throwable;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="19"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/InvokeFailedException" sourcefilename="InvokeFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/ChildContextFailedException" sourcefilename="ChildContextFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="15"><counter type="INSTRUCTION" missed="1" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="formatMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/String;" line="19"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="34"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/IllegalDurableOperationException" sourcefilename="IllegalDurableOperationException.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="10"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/StepFailedException" sourcefilename="StepFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="formatMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/String;" line="18"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException" sourcefilename="UnrecoverableDurableExecutionException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="12"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getErrorObject" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="18"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/NonDeterministicExecutionException" sourcefilename="NonDeterministicExecutionException.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="13"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/WaitForConditionFailedException" sourcefilename="WaitForConditionFailedException.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="16"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="20"><counter type="INSTRUCTION" missed="1" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="1" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/SerDesException" sourcefilename="SerDesException.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/Throwable;)V" line="8"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="12"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/DurableOperationException" sourcefilename="DurableOperationException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="16"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Ljava/lang/String;)V" line="20"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Ljava/lang/String;Ljava/lang/Throwable;)V" line="25"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Ljava/lang/String;[Ljava/lang/StackTraceElement;Ljava/lang/Throwable;)V" line="39"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getErrorObject" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="46"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperation" desc="()Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="51"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationStatus" desc="()Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;" line="56"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationId" desc="()Ljava/lang/String;" line="61"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="58"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/exception/ParallelBranchFailedException" sourcefilename="ParallelBranchFailedException.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="15"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="formatMessage" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Ljava/lang/String;" line="19"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="CallbackFailedException.java"><line nr="11" mi="0" ci="7" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="3" mb="0" cb="0"/><line nr="16" mi="0" ci="3" mb="0" cb="0"/><line nr="18" mi="0" ci="5" mb="2" cb="2"/><line nr="19" mi="0" ci="4" mb="0" cb="0"/><line nr="21" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="2" covered="23"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ChildContextFailedException.java"><line nr="11" mi="0" ci="8" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="1" ci="8" mb="1" cb="1"/><line nr="19" mi="0" ci="2" mb="1" cb="1"/><line nr="20" mi="2" ci="0" mb="0" cb="0"/><line nr="22" mi="0" ci="8" mb="0" cb="0"/><line nr="24" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="34"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableExecutionException.java"><line nr="8" mi="0" ci="4" mb="0" cb="0"/><line nr="9" mi="0" ci="2" mb="0" cb="2"/><line nr="10" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="5" mb="0" cb="0"/><line nr="16" mi="0" ci="1" mb="0" cb="0"/><line nr="19" mi="0" ci="5" mb="0" cb="0"/><line nr="20" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CallbackException.java"><line nr="12" mi="0" ci="5" mb="0" cb="0"/><line nr="13" mi="0" ci="1" mb="0" cb="0"/><line nr="16" mi="0" ci="8" mb="0" cb="0"/><line nr="17" mi="0" ci="5" mb="0" cb="0"/><line nr="18" mi="0" ci="1" mb="0" cb="0"/><line nr="22" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InvokeException.java"><line nr="10" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="3" mb="1" cb="1"/><line nr="13" mi="0" ci="4" mb="0" cb="0"/><line nr="14" mi="1" ci="0" mb="0" cb="0"/><line nr="15" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="1" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="StepException.java"><line nr="11" mi="0" ci="5" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="NonDeterministicExecutionException.java"><line nr="13" mi="0" ci="4" mb="0" cb="0"/><line nr="14" mi="0" ci="2" mb="0" cb="0"/><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="2" mb="0" cb="0"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InvokeTimedOutException.java"><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ParallelBranchFailedException.java"><line nr="11" mi="0" ci="8" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="9" mb="0" cb="2"/><line nr="19" mi="0" ci="2" mb="0" cb="2"/><line nr="20" mi="0" ci="2" mb="0" cb="0"/><line nr="22" mi="0" ci="8" mb="0" cb="0"/><line nr="24" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="IllegalDurableOperationException.java"><line nr="10" mi="0" ci="4" mb="0" cb="0"/><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="13" mi="0" ci="2" mb="0" cb="0"/><line nr="14" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="StepFailedException.java"><line nr="11" mi="0" ci="4" mb="0" cb="0"/><line nr="13" mi="0" ci="3" mb="0" cb="0"/><line nr="14" mi="0" ci="3" mb="0" cb="0"/><line nr="15" mi="0" ci="1" mb="0" cb="0"/><line nr="18" mi="0" ci="2" mb="0" cb="2"/><line nr="19" mi="0" ci="2" mb="0" cb="0"/><line nr="21" mi="0" ci="8" mb="0" cb="0"/><line nr="22" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MapIterationFailedException.java"><line nr="11" mi="0" ci="8" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="1" ci="8" mb="1" cb="1"/><line nr="19" mi="0" ci="2" mb="1" cb="1"/><line nr="20" mi="2" ci="0" mb="0" cb="0"/><line nr="22" mi="0" ci="8" mb="0" cb="0"/><line nr="24" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="34"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitForConditionFailedException.java"><line nr="16" mi="0" ci="5" mb="0" cb="0"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="20" mi="0" ci="3" mb="0" cb="0"/><line nr="22" mi="1" ci="7" mb="1" cb="1"/><line nr="23" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="1" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CallbackTimeoutException.java"><line nr="10" mi="0" ci="7" mb="0" cb="0"/><line nr="11" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InvokeStoppedException.java"><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CallbackSubmitterException.java"><line nr="10" mi="0" ci="6" mb="0" cb="0"/><line nr="11" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="StepInterruptedException.java"><line nr="11" mi="0" ci="6" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="2" mb="0" cb="2"/><line nr="16" mi="0" ci="2" mb="0" cb="0"/><line nr="18" mi="0" ci="6" mb="0" cb="0"/><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="0" ci="2" mb="0" cb="0"/><line nr="24" mi="0" ci="2" mb="0" cb="0"/><line nr="28" mi="0" ci="8" mb="0" cb="0"/><line nr="30" mi="0" ci="2" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="1" cb="1"/><line nr="32" mi="0" ci="12" mb="0" cb="0"/><line nr="34" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="51"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableOperationException.java"><line nr="16" mi="0" ci="10" mb="0" cb="2"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="20" mi="0" ci="6" mb="0" cb="0"/><line nr="21" mi="0" ci="1" mb="0" cb="0"/><line nr="25" mi="0" ci="5" mb="0" cb="0"/><line nr="29" mi="0" ci="8" mb="0" cb="2"/><line nr="31" mi="0" ci="1" mb="0" cb="0"/><line nr="39" mi="0" ci="5" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="61" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="58"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="UnrecoverableDurableExecutionException.java"><line nr="12" mi="0" ci="4" mb="0" cb="0"/><line nr="13" mi="0" ci="3" mb="0" cb="0"/><line nr="14" mi="0" ci="1" mb="0" cb="0"/><line nr="18" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SerDesException.java"><line nr="8" mi="0" ci="4" mb="0" cb="0"/><line nr="9" mi="0" ci="1" mb="0" cb="0"/><line nr="12" mi="0" ci="3" mb="0" cb="0"/><line nr="13" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InvokeFailedException.java"><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="10" covered="415"/><counter type="BRANCH" missed="9" covered="23"/><counter type="LINE" missed="4" covered="114"/><counter type="COMPLEXITY" missed="9" covered="53"/><counter type="METHOD" missed="0" covered="46"/><counter type="CLASS" missed="0" covered="21"/></package><package name="software/amazon/lambda/durable/execution"><class name="software/amazon/lambda/durable/execution/SuspendExecutionException" sourcefilename="SuspendExecutionException.java"><method name="&lt;init&gt;" desc="()V" line="8"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/InternalExecutor" sourcefilename="InternalExecutor.java"><method name="lambda$static$0" desc="(Ljava/lang/Runnable;)Ljava/lang/Thread;" line="26"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="19"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ThreadType" sourcefilename="ThreadType.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;ILjava/lang/String;)V" line="16"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toString" desc="()Ljava/lang/String;" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="10"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ThreadContext" sourcefilename="ThreadContext.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/execution/ThreadType;)V" line="6"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/OperationIdGenerator" sourcefilename="OperationIdGenerator.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="16"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashOperationId" desc="(Ljava/lang/String;)Ljava/lang/String;" line="29"><counter type="INSTRUCTION" missed="7" covered="13"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="nextOperationId" desc="()Ljava/lang/String;" line="45"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="7" covered="41"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/DurableExecutor" sourcefilename="DurableExecutor.java"><method name="execute" desc="(Lsoftware/amazon/lambda/durable/model/DurableExecutionInput;Lcom/amazonaws/services/lambda/runtime/Context;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;)Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="50"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleLargePayload" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Ljava/lang/String;)Ljava/lang/String;" line="93"><counter type="INSTRUCTION" missed="1" covered="42"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="16"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildErrorObject" desc="(Ljava/lang/Throwable;Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="122"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="extractUserInput" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="133"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="wrap" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;)Lcom/amazonaws/services/lambda/runtime/RequestHandler;" line="153"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$wrap$2" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;Lsoftware/amazon/lambda/durable/model/DurableExecutionInput;Lcom/amazonaws/services/lambda/runtime/Context;)Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="153"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$execute$1" desc="(Lsoftware/amazon/lambda/durable/DurableConfig;Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Ljava/lang/Object;Ljava/lang/Throwable;)Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;" line="71"><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$execute$0" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Lsoftware/amazon/lambda/durable/DurableConfig;Lsoftware/amazon/lambda/durable/TypeToken;Lcom/amazonaws/services/lambda/runtime/Context;Ljava/util/function/BiFunction;)Ljava/lang/Object;" line="54"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="36"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="1" covered="190"/><counter type="BRANCH" missed="1" covered="13"/><counter type="LINE" missed="0" covered="51"/><counter type="COMPLEXITY" missed="1" covered="15"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ExecutionMode" sourcefilename="ExecutionMode.java"><method name="&lt;clinit&gt;" desc="()V" line="6"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher$Item" sourcefilename="ApiRequestDelayedBatcher.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;Ljava/util/concurrent/CompletableFuture;)V" line="52"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ExecutionManager" sourcefilename="ExecutionManager.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/DurableExecutionInput;Lsoftware/amazon/lambda/durable/DurableConfig;)V" line="62"><counter type="INSTRUCTION" missed="0" covered="114"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="22"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDurableExecutionArn" desc="()Ljava/lang/String;" line="104"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isReplaying" desc="()Z" line="109"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="registerOperation" desc="(Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;)V" line="114"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onCheckpointComplete" desc="(Ljava/util/List;)V" line="120"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getChildOperations" desc="(Ljava/lang/String;)Ljava/util/List;" line="139"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationAndUpdateReplayState" desc="(Ljava/lang/String;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="156"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="BRANCH" missed="1" covered="7"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExecutionOperation" desc="()Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="167"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hasOperationsForContext" desc="(Ljava/lang/String;)Z" line="178"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setCurrentThreadContext" desc="(Lsoftware/amazon/lambda/durable/execution/ThreadContext;)V" line="184"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCurrentThreadContext" desc="()Lsoftware/amazon/lambda/durable/execution/ThreadContext;" line="189"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="registerActiveThread" desc="(Ljava/lang/String;)V" line="198"><counter type="INSTRUCTION" missed="4" covered="23"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deregisterActiveThread" desc="(Ljava/lang/String;)V" line="214"><counter type="INSTRUCTION" missed="2" covered="43"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="1" covered="12"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="preSuspendCheck" desc="()V" line="237"><counter type="INSTRUCTION" missed="3" covered="10"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendOperationUpdate" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Ljava/util/concurrent/CompletableFuture;" line="254"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForOperationUpdates" desc="(Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;" line="265"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForOperationUpdates" desc="(Ljava/lang/String;Ljava/time/Instant;)Ljava/util/concurrent/CompletableFuture;" line="276"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="close" desc="()V" line="283"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateRunningThreads" desc="()V" line="290"><counter type="INSTRUCTION" missed="9" covered="51"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="4" covered="12"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isTerminalStatus" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;)Z" line="320"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="terminateExecution" desc="(Lsoftware/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException;)V" line="333"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="suspendExecution" desc="()V" line="340"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isExecutionCompletedExceptionally" desc="()Z" line="351"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopAllOperations" desc="(Ljava/lang/Exception;)V" line="355"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runUntilCompleteOrSuspend" desc="(Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture;" line="368"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$runUntilCompleteOrSuspend$6" desc="(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Object;)Ljava/lang/Object;" line="370"><counter type="INSTRUCTION" missed="2" covered="6"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$stopAllOperations$5" desc="(Ljava/lang/Exception;Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;)V" line="355"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$preSuspendCheck$4" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="237"><counter type="INSTRUCTION" missed="2" covered="34"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$hasOperationsForContext$3" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="178"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$onCheckpointComplete$2" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)V" line="122"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$onCheckpointComplete$1" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Ljava/lang/String;Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;)Lsoftware/amazon/lambda/durable/operation/BaseDurableOperation;" line="125"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$0" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="79"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="52"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="22" covered="516"/><counter type="BRANCH" missed="7" covered="55"/><counter type="LINE" missed="8" covered="107"/><counter type="COMPLEXITY" missed="7" covered="58"/><counter type="METHOD" missed="0" covered="33"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/CheckpointManager" sourcefilename="CheckpointManager.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/DurableConfig;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V" line="38"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpoint" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Ljava/util/concurrent/CompletableFuture;" line="62"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForUpdate" desc="(Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;" line="72"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForUpdate" desc="(Ljava/lang/String;Ljava/time/Instant;)Ljava/util/concurrent/CompletableFuture;" line="83"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForUpdate" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/retry/PollingStrategy;)Ljava/util/concurrent/CompletableFuture;" line="92"><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pollForUpdateInternal" desc="(Ljava/util/concurrent/CompletableFuture;ILjava/time/Instant;Lsoftware/amazon/lambda/durable/retry/PollingStrategy;)Ljava/util/concurrent/CompletableFuture;" line="117"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="shutdown" desc="()V" line="138"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fetchAllPages" desc="(Lsoftware/amazon/awssdk/services/lambda/model/CheckpointUpdatedExecutionState;)Ljava/util/List;" line="156"><counter type="INSTRUCTION" missed="0" covered="55"/><counter type="BRANCH" missed="1" covered="7"/><counter type="LINE" missed="0" covered="16"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpointBatch" desc="(Ljava/util/List;)V" line="179"><counter type="INSTRUCTION" missed="0" covered="134"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="28"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="estimateSize" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)I" line="224"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$checkpointBatch$3" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Ljava/util/concurrent/CompletableFuture;)V" line="211"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$shutdown$2" desc="(Ljava/util/concurrent/CompletableFuture;)V" line="144"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pollForUpdateInternal$1" desc="(Ljava/util/concurrent/CompletableFuture;Ljava/time/Instant;Lsoftware/amazon/lambda/durable/retry/PollingStrategy;ILjava/lang/Void;)Ljava/util/concurrent/CompletionStage;" line="119"><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pollForUpdate$0" desc="(Ljava/lang/String;)Ljava/util/List;" line="97"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="34"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="419"/><counter type="BRANCH" missed="1" covered="27"/><counter type="LINE" missed="0" covered="89"/><counter type="COMPLEXITY" missed="1" covered="28"/><counter type="METHOD" missed="0" covered="15"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher" sourcefilename="ApiRequestDelayedBatcher.java"><method name="&lt;init&gt;" desc="(IILjava/util/function/Function;Ljava/util/function/Consumer;)V" line="66"><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="submit" desc="(Ljava/lang/Object;Ljava/time/Duration;)Ljava/util/concurrent/CompletableFuture;" line="87"><counter type="INSTRUCTION" missed="0" covered="44"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="shutdown" desc="()V" line="107"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="initializeDelayedBatch" desc="()V" line="120"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="flushDelayedBatch" desc="()V" line="137"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="flushQueue" desc="()V" line="155"><counter type="INSTRUCTION" missed="0" covered="115"/><counter type="BRANCH" missed="1" covered="17"/><counter type="LINE" missed="0" covered="29"/><counter type="COMPLEXITY" missed="1" covered="9"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$initializeDelayedBatch$0" desc="()V" line="127"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="26"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="269"/><counter type="BRANCH" missed="1" covered="21"/><counter type="LINE" missed="0" covered="70"/><counter type="COMPLEXITY" missed="1" covered="18"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ExecutionMode.java"><line nr="6" mi="0" ci="3" mb="0" cb="0"/><line nr="8" mi="0" ci="6" mb="0" cb="0"/><line nr="10" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="OperationIdGenerator.java"><line nr="16" mi="0" ci="2" mb="0" cb="0"/><line nr="17" mi="0" ci="6" mb="0" cb="0"/><line nr="18" mi="0" ci="8" mb="0" cb="2"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="29" mi="0" ci="3" mb="0" cb="0"/><line nr="30" mi="0" ci="6" mb="0" cb="0"/><line nr="31" mi="0" ci="4" mb="0" cb="0"/><line nr="32" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="6" ci="0" mb="0" cb="0"/><line nr="45" mi="0" ci="5" mb="0" cb="0"/><line nr="46" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="7" covered="41"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SuspendExecutionException.java"><line nr="8" mi="0" ci="3" mb="0" cb="0"/><line nr="9" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InternalExecutor.java"><line nr="19" mi="0" ci="5" mb="0" cb="0"/><line nr="25" mi="0" ci="4" mb="0" cb="0"/><line nr="26" mi="0" ci="8" mb="0" cb="0"/><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableExecutor.java"><line nr="36" mi="0" ci="2" mb="0" cb="0"/><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="9" mb="0" cb="0"/><line nr="54" mi="0" ci="7" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="2" mb="0" cb="0"/><line nr="60" mi="0" ci="7" mb="0" cb="0"/><line nr="63" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="0" cb="2"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="2"/><line nr="75" mi="0" ci="2" mb="0" cb="0"/><line nr="78" mi="0" ci="5" mb="0" cb="0"/><line nr="79" mi="0" ci="6" mb="0" cb="0"/><line nr="82" mi="0" ci="5" mb="0" cb="0"/><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="85" mi="0" ci="5" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="1" ci="8" mb="1" cb="1"/><line nr="95" mi="0" ci="3" mb="0" cb="2"/><line nr="96" mi="0" ci="4" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><line nr="102" mi="0" ci="1" mb="0" cb="0"/><line nr="103" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="4" mb="0" cb="0"/><line nr="106" mi="0" ci="2" mb="0" cb="0"/><line nr="107" mi="0" ci="1" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="113" mi="0" ci="2" mb="0" cb="0"/><line nr="117" mi="0" ci="2" mb="0" cb="0"/><line nr="122" mi="0" ci="6" mb="0" cb="2"/><line nr="123" mi="0" ci="3" mb="0" cb="0"/><line nr="125" mi="0" ci="6" mb="0" cb="2"/><line nr="126" mi="0" ci="3" mb="0" cb="0"/><line nr="129" mi="0" ci="4" mb="0" cb="0"/><line nr="133" mi="0" ci="3" mb="0" cb="2"/><line nr="134" mi="0" ci="5" mb="0" cb="0"/><line nr="137" mi="0" ci="4" mb="0" cb="0"/><line nr="138" mi="0" ci="5" mb="0" cb="0"/><line nr="153" mi="0" ci="12" mb="0" cb="0"/><counter type="INSTRUCTION" missed="1" covered="190"/><counter type="BRANCH" missed="1" covered="13"/><counter type="LINE" missed="0" covered="51"/><counter type="COMPLEXITY" missed="1" covered="15"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ExecutionManager.java"><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="6" mb="0" cb="0"/><line nr="63" mi="0" ci="6" mb="0" cb="0"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="65" mi="0" ci="5" mb="0" cb="0"/><line nr="70" mi="0" ci="2" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="4" mb="0" cb="0"/><line nr="75" mi="0" ci="7" mb="0" cb="0"/><line nr="76" mi="0" ci="5" mb="0" cb="0"/><line nr="78" mi="0" ci="9" mb="0" cb="0"/><line nr="79" mi="0" ci="6" mb="0" cb="0"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="10" mb="0" cb="2"/><line nr="86" mi="0" ci="6" mb="0" cb="0"/><line nr="87" mi="0" ci="7" mb="0" cb="0"/><line nr="88" mi="0" ci="7" mb="0" cb="0"/><line nr="91" mi="0" ci="3" mb="0" cb="2"/><line nr="92" mi="0" ci="5" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="5" mb="0" cb="0"/><line nr="96" mi="0" ci="7" mb="0" cb="0"/><line nr="97" mi="0" ci="6" mb="0" cb="0"/><line nr="98" mi="0" ci="1" mb="0" cb="0"/><line nr="104" mi="0" ci="3" mb="0" cb="0"/><line nr="109" mi="0" ci="9" mb="0" cb="2"/><line nr="114" mi="0" ci="7" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="120" mi="0" ci="4" mb="0" cb="0"/><line nr="122" mi="0" ci="7" mb="0" cb="0"/><line nr="124" mi="0" ci="8" mb="0" cb="0"/><line nr="125" mi="0" ci="3" mb="0" cb="0"/><line nr="126" mi="0" ci="2" mb="0" cb="0"/><line nr="128" mi="0" ci="1" mb="0" cb="0"/><line nr="129" mi="0" ci="1" mb="0" cb="0"/><line nr="139" mi="0" ci="4" mb="0" cb="0"/><line nr="140" mi="0" ci="12" mb="0" cb="2"/><line nr="141" mi="0" ci="5" mb="0" cb="2"/><line nr="142" mi="0" ci="4" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="145" mi="0" ci="2" mb="0" cb="0"/><line nr="156" mi="0" ci="6" mb="0" cb="0"/><line nr="157" mi="0" ci="11" mb="0" cb="6"/><line nr="158" mi="0" ci="6" mb="1" cb="1"/><line nr="159" mi="0" ci="4" mb="0" cb="0"/><line nr="162" mi="0" ci="2" mb="0" cb="0"/><line nr="167" mi="0" ci="3" mb="0" cb="0"/><line nr="178" mi="0" ci="13" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="0"/><line nr="185" mi="0" ci="1" mb="0" cb="0"/><line nr="189" mi="0" ci="4" mb="0" cb="0"/><line nr="198" mi="0" ci="5" mb="0" cb="0"/><line nr="199" mi="0" ci="5" mb="1" cb="1"/><line nr="200" mi="0" ci="9" mb="0" cb="0"/><line nr="202" mi="4" ci="0" mb="0" cb="0"/><line nr="204" mi="0" ci="3" mb="0" cb="0"/><line nr="205" mi="0" ci="1" mb="0" cb="0"/><line nr="214" mi="0" ci="4" mb="0" cb="2"/><line nr="215" mi="0" ci="1" mb="0" cb="0"/><line nr="220" mi="0" ci="5" mb="0" cb="0"/><line nr="221" mi="0" ci="5" mb="0" cb="0"/><line nr="222" mi="0" ci="2" mb="0" cb="2"/><line nr="223" mi="0" ci="9" mb="0" cb="0"/><line nr="225" mi="0" ci="4" mb="0" cb="0"/><line nr="228" mi="0" ci="4" mb="0" cb="2"/><line nr="229" mi="0" ci="3" mb="0" cb="0"/><line nr="230" mi="0" ci="2" mb="0" cb="0"/><line nr="231" mi="2" ci="0" mb="0" cb="0"/><line nr="233" mi="0" ci="3" mb="0" cb="0"/><line nr="234" mi="0" ci="1" mb="0" cb="0"/><line nr="237" mi="0" ci="14" mb="0" cb="4"/><line nr="238" mi="0" ci="8" mb="0" cb="2"/><line nr="239" mi="0" ci="8" mb="0" cb="2"/><line nr="240" mi="2" ci="10" mb="2" cb="2"/><line nr="241" mi="0" ci="1" mb="0" cb="0"/><line nr="244" mi="0" ci="2" mb="1" cb="1"/><line nr="245" mi="3" ci="0" mb="0" cb="0"/><line nr="247" mi="0" ci="1" mb="0" cb="0"/><line nr="254" mi="0" ci="5" mb="0" cb="0"/><line nr="265" mi="0" ci="5" mb="0" cb="0"/><line nr="276" mi="0" ci="6" mb="0" cb="0"/><line nr="283" mi="0" ci="2" mb="0" cb="0"/><line nr="285" mi="0" ci="3" mb="0" cb="0"/><line nr="286" mi="0" ci="1" mb="0" cb="0"/><line nr="290" mi="0" ci="12" mb="0" cb="2"/><line nr="291" mi="0" ci="3" mb="0" cb="0"/><line nr="292" mi="0" ci="5" mb="0" cb="4"/><line nr="295" mi="0" ci="5" mb="0" cb="0"/><line nr="297" mi="0" ci="3" mb="0" cb="0"/><line nr="298" mi="1" ci="0" mb="0" cb="0"/><line nr="300" mi="3" ci="0" mb="0" cb="0"/><line nr="301" mi="4" ci="0" mb="0" cb="0"/><line nr="302" mi="1" ci="0" mb="0" cb="0"/><line nr="304" mi="0" ci="1" mb="0" cb="0"/><line nr="306" mi="0" ci="1" mb="0" cb="0"/><line nr="309" mi="0" ci="10" mb="1" cb="1"/><line nr="310" mi="0" ci="3" mb="0" cb="0"/><line nr="312" mi="0" ci="2" mb="0" cb="2"/><line nr="313" mi="0" ci="5" mb="0" cb="0"/><line nr="316" mi="0" ci="1" mb="0" cb="0"/><line nr="320" mi="0" ci="19" mb="0" cb="10"/><line nr="333" mi="0" ci="3" mb="0" cb="0"/><line nr="334" mi="0" ci="5" mb="0" cb="0"/><line nr="335" mi="0" ci="2" mb="0" cb="0"/><line nr="340" mi="0" ci="4" mb="0" cb="0"/><line nr="341" mi="0" ci="3" mb="0" cb="0"/><line nr="342" mi="0" ci="5" mb="0" cb="0"/><line nr="343" mi="0" ci="2" mb="0" cb="0"/><line nr="351" mi="0" ci="4" mb="0" cb="0"/><line nr="355" mi="0" ci="12" mb="0" cb="0"/><line nr="356" mi="0" ci="1" mb="0" cb="0"/><line nr="368" mi="0" ci="16" mb="0" cb="0"/><line nr="370" mi="0" ci="3" mb="1" cb="1"/><line nr="371" mi="0" ci="3" mb="0" cb="0"/><line nr="373" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="22" covered="516"/><counter type="BRANCH" missed="7" covered="55"/><counter type="LINE" missed="8" covered="107"/><counter type="COMPLEXITY" missed="7" covered="58"/><counter type="METHOD" missed="0" covered="33"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CheckpointManager.java"><line nr="34" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="5" mb="0" cb="0"/><line nr="47" mi="0" ci="2" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="10" mb="0" cb="0"/><line nr="54" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="5" mb="0" cb="0"/><line nr="63" mi="0" ci="8" mb="0" cb="0"/><line nr="72" mi="0" ci="7" mb="0" cb="0"/><line nr="83" mi="0" ci="6" mb="0" cb="0"/><line nr="92" mi="0" ci="4" mb="0" cb="0"/><line nr="93" mi="0" ci="4" mb="0" cb="0"/><line nr="94" mi="0" ci="5" mb="0" cb="0"/><line nr="96" mi="0" ci="4" mb="0" cb="0"/><line nr="97" mi="0" ci="8" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="7" mb="0" cb="0"/><line nr="101" mi="0" ci="2" mb="0" cb="0"/><line nr="117" mi="0" ci="8" mb="0" cb="0"/><line nr="118" mi="0" ci="13" mb="0" cb="0"/><line nr="119" mi="0" ci="3" mb="0" cb="2"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="122" mi="0" ci="2" mb="0" cb="0"/><line nr="123" mi="0" ci="8" mb="0" cb="2"/><line nr="125" mi="0" ci="9" mb="0" cb="0"/><line nr="129" mi="0" ci="7" mb="0" cb="0"/><line nr="138" mi="0" ci="5" mb="0" cb="0"/><line nr="139" mi="0" ci="7" mb="0" cb="0"/><line nr="140" mi="0" ci="3" mb="0" cb="0"/><line nr="141" mi="0" ci="3" mb="0" cb="0"/><line nr="143" mi="0" ci="10" mb="0" cb="2"/><line nr="144" mi="0" ci="11" mb="0" cb="0"/><line nr="145" mi="0" ci="1" mb="0" cb="0"/><line nr="148" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="1" mb="0" cb="0"/><line nr="156" mi="0" ci="4" mb="0" cb="0"/><line nr="157" mi="0" ci="2" mb="0" cb="2"/><line nr="158" mi="0" ci="2" mb="0" cb="0"/><line nr="160" mi="0" ci="3" mb="1" cb="1"/><line nr="161" mi="0" ci="5" mb="0" cb="0"/><line nr="163" mi="0" ci="3" mb="0" cb="0"/><line nr="164" mi="0" ci="5" mb="0" cb="4"/><line nr="165" mi="0" ci="2" mb="0" cb="0"/><line nr="166" mi="0" ci="8" mb="0" cb="0"/><line nr="167" mi="0" ci="2" mb="0" cb="0"/><line nr="168" mi="0" ci="3" mb="0" cb="0"/><line nr="170" mi="0" ci="5" mb="0" cb="0"/><line nr="172" mi="0" ci="5" mb="0" cb="0"/><line nr="173" mi="0" ci="3" mb="0" cb="0"/><line nr="174" mi="0" ci="1" mb="0" cb="0"/><line nr="175" mi="0" ci="2" mb="0" cb="0"/><line nr="179" mi="0" ci="5" mb="0" cb="0"/><line nr="181" mi="0" ci="6" mb="0" cb="0"/><line nr="183" mi="0" ci="7" mb="0" cb="4"/><line nr="185" mi="0" ci="3" mb="0" cb="0"/><line nr="188" mi="0" ci="2" mb="0" cb="0"/><line nr="189" mi="0" ci="7" mb="0" cb="0"/><line nr="190" mi="0" ci="10" mb="0" cb="0"/><line nr="191" mi="0" ci="8" mb="0" cb="0"/><line nr="194" mi="0" ci="4" mb="0" cb="0"/><line nr="195" mi="0" ci="3" mb="0" cb="2"/><line nr="197" mi="0" ci="5" mb="0" cb="0"/><line nr="199" mi="0" ci="2" mb="0" cb="0"/><line nr="200" mi="0" ci="2" mb="0" cb="0"/><line nr="201" mi="0" ci="4" mb="0" cb="0"/><line nr="202" mi="0" ci="6" mb="0" cb="0"/><line nr="204" mi="0" ci="4" mb="0" cb="0"/><line nr="207" mi="0" ci="10" mb="0" cb="2"/><line nr="208" mi="0" ci="7" mb="0" cb="0"/><line nr="209" mi="0" ci="2" mb="0" cb="2"/><line nr="210" mi="0" ci="5" mb="0" cb="0"/><line nr="211" mi="0" ci="9" mb="0" cb="0"/><line nr="213" mi="0" ci="1" mb="0" cb="0"/><line nr="214" mi="0" ci="8" mb="0" cb="0"/><line nr="216" mi="0" ci="6" mb="0" cb="0"/><line nr="217" mi="0" ci="4" mb="0" cb="0"/><line nr="218" mi="0" ci="5" mb="0" cb="0"/><line nr="220" mi="0" ci="3" mb="0" cb="0"/><line nr="221" mi="0" ci="1" mb="0" cb="0"/><line nr="224" mi="0" ci="2" mb="0" cb="2"/><line nr="225" mi="0" ci="2" mb="0" cb="0"/><line nr="227" mi="0" ci="5" mb="0" cb="0"/><line nr="228" mi="0" ci="5" mb="0" cb="0"/><line nr="229" mi="0" ci="4" mb="0" cb="0"/><line nr="230" mi="0" ci="11" mb="0" cb="2"/><counter type="INSTRUCTION" missed="0" covered="419"/><counter type="BRANCH" missed="1" covered="27"/><counter type="LINE" missed="0" covered="89"/><counter type="COMPLEXITY" missed="1" covered="28"/><counter type="METHOD" missed="0" covered="15"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ApiRequestDelayedBatcher.java"><line nr="26" mi="0" ci="4" mb="0" cb="0"/><line nr="52" mi="0" ci="9" mb="0" cb="0"/><line nr="66" mi="0" ci="2" mb="0" cb="0"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="5" mb="0" cb="0"/><line nr="73" mi="0" ci="5" mb="0" cb="0"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><line nr="76" mi="0" ci="2" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="87" mi="0" ci="5" mb="0" cb="0"/><line nr="89" mi="0" ci="4" mb="0" cb="0"/><line nr="90" mi="0" ci="9" mb="0" cb="0"/><line nr="93" mi="0" ci="3" mb="0" cb="0"/><line nr="94" mi="0" ci="4" mb="0" cb="0"/><line nr="95" mi="0" ci="5" mb="0" cb="2"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="7" mb="0" cb="0"/><line nr="101" mi="0" ci="4" mb="0" cb="0"/><line nr="107" mi="0" ci="5" mb="0" cb="0"/><line nr="109" mi="0" ci="5" mb="0" cb="0"/><line nr="111" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="4" mb="0" cb="0"/><line nr="116" mi="0" ci="1" mb="0" cb="0"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="122" mi="0" ci="6" mb="0" cb="0"/><line nr="125" mi="0" ci="5" mb="0" cb="0"/><line nr="126" mi="0" ci="6" mb="0" cb="0"/><line nr="127" mi="0" ci="5" mb="0" cb="0"/><line nr="128" mi="0" ci="2" mb="0" cb="0"/><line nr="129" mi="0" ci="3" mb="0" cb="0"/><line nr="130" mi="0" ci="1" mb="0" cb="0"/><line nr="131" mi="0" ci="1" mb="0" cb="0"/><line nr="137" mi="0" ci="6" mb="0" cb="0"/><line nr="138" mi="0" ci="2" mb="0" cb="0"/><line nr="140" mi="0" ci="4" mb="0" cb="2"/><line nr="141" mi="0" ci="1" mb="0" cb="0"/><line nr="147" mi="0" ci="8" mb="0" cb="0"/><line nr="148" mi="0" ci="1" mb="0" cb="0"/><line nr="155" mi="0" ci="4" mb="0" cb="2"/><line nr="156" mi="0" ci="2" mb="0" cb="0"/><line nr="157" mi="0" ci="4" mb="0" cb="0"/><line nr="159" mi="0" ci="5" mb="0" cb="0"/><line nr="160" mi="0" ci="2" mb="0" cb="2"/><line nr="161" mi="0" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="7" mb="0" cb="0"/><line nr="165" mi="0" ci="14" mb="0" cb="2"/><line nr="170" mi="0" ci="10" mb="0" cb="6"/><line nr="171" mi="0" ci="1" mb="0" cb="0"/><line nr="174" mi="0" ci="7" mb="0" cb="0"/><line nr="175" mi="0" ci="6" mb="0" cb="0"/><line nr="176" mi="0" ci="1" mb="0" cb="0"/><line nr="177" mi="0" ci="3" mb="1" cb="1"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="181" mi="0" ci="2" mb="0" cb="0"/><line nr="182" mi="0" ci="1" mb="0" cb="0"/><line nr="183" mi="0" ci="2" mb="0" cb="0"/><line nr="184" mi="0" ci="4" mb="0" cb="0"/><line nr="185" mi="0" ci="10" mb="0" cb="2"/><line nr="186" mi="0" ci="5" mb="0" cb="0"/><line nr="187" mi="0" ci="1" mb="0" cb="0"/><line nr="188" mi="0" ci="1" mb="0" cb="0"/><line nr="189" mi="0" ci="10" mb="0" cb="2"/><line nr="190" mi="0" ci="5" mb="0" cb="0"/><line nr="191" mi="0" ci="1" mb="0" cb="0"/><line nr="192" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="1" mb="0" cb="0"/><line nr="195" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="278"/><counter type="BRANCH" missed="1" covered="21"/><counter type="LINE" missed="0" covered="71"/><counter type="COMPLEXITY" missed="1" covered="19"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ThreadContext.java"><line nr="6" mi="0" ci="9" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ThreadType.java"><line nr="10" mi="0" ci="3" mb="0" cb="0"/><line nr="11" mi="0" ci="7" mb="0" cb="0"/><line nr="12" mi="0" ci="7" mb="0" cb="0"/><line nr="16" mi="0" ci="4" mb="0" cb="0"/><line nr="17" mi="0" ci="3" mb="0" cb="0"/><line nr="18" mi="0" ci="1" mb="0" cb="0"/><line nr="22" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="30" covered="1522"/><counter type="BRANCH" missed="10" covered="118"/><counter type="LINE" missed="10" covered="345"/><counter type="COMPLEXITY" missed="10" covered="132"/><counter type="METHOD" missed="0" covered="77"/><counter type="CLASS" missed="0" covered="11"/></package><package name="software/amazon/lambda/durable/logging"><class name="software/amazon/lambda/durable/logging/DurableLogger" sourcefilename="DurableLogger.java"><method name="&lt;init&gt;" desc="(Lorg/slf4j/Logger;Lsoftware/amazon/lambda/durable/context/BaseContextImpl;)V" line="33"><counter type="INSTRUCTION" missed="0" covered="69"/><counter type="BRANCH" missed="2" covered="12"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="close" desc="()V" line="68"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="trace" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="72"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="debug" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="76"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="info" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="80"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="warn" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="84"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="error" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="88"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="error" desc="(Ljava/lang/String;Ljava/lang/Throwable;)V" line="92"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="shouldSuppress" desc="()Z" line="96"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="log" desc="(Ljava/lang/Runnable;)V" line="101"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$error$5" desc="(Ljava/lang/String;Ljava/lang/Throwable;)V" line="92"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$error$4" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="88"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$warn$3" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="84"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$info$2" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="80"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$debug$1" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="76"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$trace$0" desc="(Ljava/lang/String;[Ljava/lang/Object;)V" line="72"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="170"/><counter type="BRANCH" missed="2" covered="18"/><counter type="LINE" missed="0" covered="38"/><counter type="COMPLEXITY" missed="2" covered="24"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/logging/LoggerConfig" sourcefilename="LoggerConfig.java"><method name="&lt;init&gt;" desc="(Z)V" line="6"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="defaults" desc="()Lsoftware/amazon/lambda/durable/logging/LoggerConfig;" line="10"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withReplayLogging" desc="()Lsoftware/amazon/lambda/durable/logging/LoggerConfig;" line="15"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="5" covered="11"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="DurableLogger.java"><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="4" mb="0" cb="0"/><line nr="42" mi="0" ci="9" mb="0" cb="2"/><line nr="43" mi="0" ci="2" mb="0" cb="2"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="2"/><line nr="49" mi="0" ci="3" mb="0" cb="2"/><line nr="50" mi="0" ci="4" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="2"/><line nr="53" mi="0" ci="5" mb="0" cb="0"/><line nr="55" mi="0" ci="6" mb="1" cb="1"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="1" cb="1"/><line nr="60" mi="0" ci="4" mb="0" cb="0"/><line nr="62" mi="0" ci="5" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="69" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="12" mb="0" cb="0"/><line nr="73" mi="0" ci="1" mb="0" cb="0"/><line nr="76" mi="0" ci="12" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="80" mi="0" ci="12" mb="0" cb="0"/><line nr="81" mi="0" ci="1" mb="0" cb="0"/><line nr="84" mi="0" ci="12" mb="0" cb="0"/><line nr="85" mi="0" ci="1" mb="0" cb="0"/><line nr="88" mi="0" ci="12" mb="0" cb="0"/><line nr="89" mi="0" ci="1" mb="0" cb="0"/><line nr="92" mi="0" ci="12" mb="0" cb="0"/><line nr="93" mi="0" ci="1" mb="0" cb="0"/><line nr="96" mi="0" ci="9" mb="0" cb="2"/><line nr="97" mi="0" ci="6" mb="0" cb="2"/><line nr="101" mi="0" ci="3" mb="0" cb="2"/><line nr="102" mi="0" ci="2" mb="0" cb="0"/><line nr="104" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="170"/><counter type="BRANCH" missed="2" covered="18"/><counter type="LINE" missed="0" covered="38"/><counter type="COMPLEXITY" missed="2" covered="24"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="LoggerConfig.java"><line nr="6" mi="0" ci="6" mb="0" cb="0"/><line nr="10" mi="0" ci="5" mb="0" cb="0"/><line nr="15" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="5" covered="11"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="5" covered="181"/><counter type="BRANCH" missed="2" covered="18"/><counter type="LINE" missed="1" covered="40"/><counter type="COMPLEXITY" missed="3" covered="26"/><counter type="METHOD" missed="1" covered="18"/><counter type="CLASS" missed="0" covered="2"/></package><package name="software/amazon/lambda/durable/context"><class name="software/amazon/lambda/durable/context/StepContextImpl" sourcefilename="StepContextImpl.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Lsoftware/amazon/lambda/durable/DurableConfig;Lcom/amazonaws/services/lambda/runtime/Context;Ljava/lang/String;Ljava/lang/String;I)V" line="40"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAttempt" desc="()I" line="47"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getLogger" desc="()Lsoftware/amazon/lambda/durable/logging/DurableLogger;" line="53"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="close" desc="()V" line="66"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="2" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/context/BaseContext" sourcefilename="BaseContext.java"/><class name="software/amazon/lambda/durable/context/BaseContextImpl" sourcefilename="BaseContextImpl.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Lsoftware/amazon/lambda/durable/DurableConfig;Lcom/amazonaws/services/lambda/runtime/Context;Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/lambda/durable/execution/ThreadType;)V" line="36"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getLambdaContext" desc="()Lcom/amazonaws/services/lambda/runtime/Context;" line="55"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExecutionArn" desc="()Ljava/lang/String;" line="69"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDurableConfig" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="79"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getContextId" desc="()Ljava/lang/String;" line="87"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getContextName" desc="()Ljava/lang/String;" line="93"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExecutionManager" desc="()Lsoftware/amazon/lambda/durable/execution/ExecutionManager;" line="97"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isReplaying" desc="()Z" line="103"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setExecutionMode" desc="()V" line="110"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/context/DurableContextImpl" sourcefilename="DurableContextImpl.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Lsoftware/amazon/lambda/durable/DurableConfig;Lcom/amazonaws/services/lambda/runtime/Context;Ljava/lang/String;Ljava/lang/String;)V" line="69"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createRootContext" desc="(Lsoftware/amazon/lambda/durable/execution/ExecutionManager;Lsoftware/amazon/lambda/durable/DurableConfig;Lcom/amazonaws/services/lambda/runtime/Context;)Lsoftware/amazon/lambda/durable/context/DurableContextImpl;" line="85"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createChildContext" desc="(Ljava/lang/String;Ljava/lang/String;)Lsoftware/amazon/lambda/durable/context/DurableContextImpl;" line="96"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createStepContext" desc="(Ljava/lang/String;Ljava/lang/String;I)Lsoftware/amazon/lambda/durable/context/StepContextImpl;" line="109"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/StepConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="121"><counter type="INSTRUCTION" missed="0" covered="40"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitAsync" desc="(Ljava/lang/String;Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="141"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="invokeAsync" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/InvokeConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="157"><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createCallback" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/CallbackConfig;)Lsoftware/amazon/lambda/durable/DurableCallbackFuture;" line="186"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContextAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="214"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runInChildContextAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/Function;Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;Lsoftware/amazon/lambda/durable/model/OperationSubType;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="223"><counter type="INSTRUCTION" missed="0" covered="41"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="mapAsync" desc="(Ljava/lang/String;Ljava/util/Collection;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/DurableContext$MapFunction;Lsoftware/amazon/lambda/durable/config/MapConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="247"><counter type="INSTRUCTION" missed="0" covered="55"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="parallel" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/config/ParallelConfig;)Lsoftware/amazon/lambda/durable/ParallelDurableFuture;" line="275"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForCallbackAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="295"><counter type="INSTRUCTION" missed="0" covered="47"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitForConditionAsync" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;)Lsoftware/amazon/lambda/durable/DurableFuture;" line="339"><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getLogger" desc="()Lsoftware/amazon/lambda/durable/logging/DurableLogger;" line="360"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="close" desc="()V" line="376"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="nextOperationId" desc="()Ljava/lang/String;" line="388"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForCallbackAsync$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/Object;" line="313"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$waitForCallbackAsync$0" desc="(Ljava/util/function/BiConsumer;Lsoftware/amazon/lambda/durable/DurableCallbackFuture;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Void;" line="321"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="57"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="485"/><counter type="BRANCH" missed="4" covered="18"/><counter type="LINE" missed="0" covered="124"/><counter type="COMPLEXITY" missed="4" covered="27"/><counter type="METHOD" missed="0" covered="20"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="BaseContextImpl.java"><line nr="36" mi="0" ci="2" mb="0" cb="0"/><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="1" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="79" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="0" ci="3" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="103" mi="0" ci="3" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="111" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="StepContextImpl.java"><line nr="40" mi="0" ci="8" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="1" cb="1"/><line nr="54" mi="0" ci="4" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="1" cb="1"/><line nr="56" mi="0" ci="8" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="2"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="2" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DurableContextImpl.java"><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="6" mb="0" cb="0"/><line nr="69" mi="0" ci="8" mb="0" cb="0"/><line nr="70" mi="0" ci="6" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="85" mi="0" ci="9" mb="0" cb="0"/><line nr="96" mi="0" ci="4" mb="0" cb="0"/><line nr="97" mi="0" ci="8" mb="0" cb="0"/><line nr="109" mi="0" ci="4" mb="0" cb="0"/><line nr="110" mi="0" ci="2" mb="0" cb="0"/><line nr="111" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="5" mb="0" cb="0"/><line nr="121" mi="0" ci="4" mb="0" cb="0"/><line nr="122" mi="0" ci="4" mb="0" cb="0"/><line nr="123" mi="0" ci="2" mb="0" cb="0"/><line nr="125" mi="0" ci="3" mb="0" cb="2"/><line nr="126" mi="0" ci="8" mb="0" cb="0"/><line nr="128" mi="0" ci="3" mb="0" cb="0"/><line nr="131" mi="0" ci="5" mb="0" cb="0"/><line nr="132" mi="0" ci="7" mb="0" cb="0"/><line nr="134" mi="0" ci="2" mb="0" cb="0"/><line nr="136" mi="0" ci="2" mb="0" cb="0"/><line nr="141" mi="0" ci="3" mb="0" cb="0"/><line nr="142" mi="0" ci="2" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="147" mi="0" ci="5" mb="0" cb="0"/><line nr="148" mi="0" ci="5" mb="0" cb="0"/><line nr="150" mi="0" ci="2" mb="0" cb="0"/><line nr="151" mi="0" ci="2" mb="0" cb="0"/><line nr="157" mi="0" ci="4" mb="0" cb="0"/><line nr="158" mi="0" ci="4" mb="0" cb="0"/><line nr="159" mi="0" ci="2" mb="0" cb="0"/><line nr="161" mi="0" ci="3" mb="1" cb="1"/><line nr="162" mi="0" ci="8" mb="0" cb="0"/><line nr="164" mi="0" ci="3" mb="1" cb="1"/><line nr="165" mi="0" ci="3" mb="0" cb="0"/><line nr="166" mi="0" ci="3" mb="0" cb="0"/><line nr="167" mi="0" ci="2" mb="0" cb="0"/><line nr="169" mi="0" ci="3" mb="0" cb="0"/><line nr="172" mi="0" ci="5" mb="0" cb="0"/><line nr="173" mi="0" ci="8" mb="0" cb="0"/><line nr="180" mi="0" ci="2" mb="0" cb="0"/><line nr="181" mi="0" ci="2" mb="0" cb="0"/><line nr="186" mi="0" ci="2" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="2"/><line nr="188" mi="0" ci="8" mb="0" cb="0"/><line nr="190" mi="0" ci="3" mb="0" cb="0"/><line nr="192" mi="0" ci="5" mb="0" cb="0"/><line nr="193" mi="0" ci="6" mb="0" cb="0"/><line nr="194" mi="0" ci="2" mb="0" cb="0"/><line nr="196" mi="0" ci="2" mb="0" cb="0"/><line nr="214" mi="0" ci="8" mb="0" cb="0"/><line nr="223" mi="0" ci="4" mb="0" cb="0"/><line nr="224" mi="0" ci="4" mb="0" cb="0"/><line nr="225" mi="0" ci="2" mb="0" cb="0"/><line nr="227" mi="0" ci="3" mb="0" cb="2"/><line nr="228" mi="0" ci="8" mb="0" cb="0"/><line nr="231" mi="0" ci="3" mb="0" cb="0"/><line nr="233" mi="0" ci="6" mb="0" cb="0"/><line nr="234" mi="0" ci="7" mb="0" cb="0"/><line nr="240" mi="0" ci="2" mb="0" cb="0"/><line nr="241" mi="0" ci="2" mb="0" cb="0"/><line nr="247" mi="0" ci="4" mb="0" cb="0"/><line nr="248" mi="0" ci="4" mb="0" cb="0"/><line nr="249" mi="0" ci="4" mb="0" cb="0"/><line nr="250" mi="0" ci="4" mb="0" cb="0"/><line nr="251" mi="0" ci="2" mb="0" cb="0"/><line nr="252" mi="0" ci="2" mb="0" cb="0"/><line nr="254" mi="0" ci="3" mb="0" cb="2"/><line nr="255" mi="0" ci="8" mb="0" cb="0"/><line nr="259" mi="0" ci="3" mb="0" cb="0"/><line nr="260" mi="0" ci="3" mb="0" cb="0"/><line nr="262" mi="0" ci="6" mb="0" cb="0"/><line nr="263" mi="0" ci="8" mb="0" cb="0"/><line nr="269" mi="0" ci="2" mb="0" cb="0"/><line nr="270" mi="0" ci="2" mb="0" cb="0"/><line nr="275" mi="0" ci="4" mb="0" cb="0"/><line nr="276" mi="0" ci="3" mb="0" cb="0"/><line nr="278" mi="0" ci="6" mb="0" cb="0"/><line nr="279" mi="0" ci="2" mb="0" cb="0"/><line nr="280" mi="0" ci="6" mb="0" cb="0"/><line nr="284" mi="0" ci="2" mb="0" cb="0"/><line nr="286" mi="0" ci="2" mb="0" cb="0"/><line nr="295" mi="0" ci="4" mb="0" cb="0"/><line nr="296" mi="0" ci="4" mb="0" cb="0"/><line nr="299" mi="0" ci="3" mb="0" cb="0"/><line nr="301" mi="0" ci="4" mb="0" cb="2"/><line nr="302" mi="0" ci="2" mb="0" cb="0"/><line nr="303" mi="0" ci="4" mb="0" cb="0"/><line nr="304" mi="0" ci="3" mb="0" cb="0"/><line nr="305" mi="0" ci="1" mb="0" cb="0"/><line nr="306" mi="0" ci="3" mb="0" cb="0"/><line nr="307" mi="0" ci="2" mb="0" cb="0"/><line nr="309" mi="0" ci="10" mb="0" cb="0"/><line nr="313" mi="0" ci="7" mb="0" cb="0"/><line nr="316" mi="0" ci="1" mb="0" cb="0"/><line nr="317" mi="0" ci="10" mb="0" cb="0"/><line nr="321" mi="0" ci="5" mb="0" cb="0"/><line nr="322" mi="0" ci="2" mb="0" cb="0"/><line nr="324" mi="0" ci="1" mb="0" cb="0"/><line nr="325" mi="0" ci="3" mb="0" cb="0"/><line nr="327" mi="0" ci="2" mb="0" cb="0"/><line nr="328" mi="0" ci="3" mb="0" cb="0"/><line nr="329" mi="0" ci="2" mb="0" cb="0"/><line nr="339" mi="0" ci="4" mb="0" cb="0"/><line nr="340" mi="0" ci="4" mb="0" cb="0"/><line nr="341" mi="0" ci="4" mb="0" cb="0"/><line nr="342" mi="0" ci="2" mb="0" cb="0"/><line nr="344" mi="0" ci="3" mb="1" cb="1"/><line nr="345" mi="0" ci="8" mb="0" cb="0"/><line nr="347" mi="0" ci="3" mb="0" cb="0"/><line nr="349" mi="0" ci="10" mb="0" cb="0"/><line nr="351" mi="0" ci="2" mb="0" cb="0"/><line nr="353" mi="0" ci="2" mb="0" cb="0"/><line nr="360" mi="0" ci="3" mb="0" cb="2"/><line nr="361" mi="0" ci="4" mb="0" cb="0"/><line nr="362" mi="0" ci="3" mb="1" cb="1"/><line nr="363" mi="0" ci="8" mb="0" cb="0"/><line nr="365" mi="0" ci="3" mb="0" cb="0"/><line nr="367" mi="0" ci="3" mb="0" cb="0"/><line nr="376" mi="0" ci="3" mb="0" cb="2"/><line nr="377" mi="0" ci="3" mb="0" cb="0"/><line nr="379" mi="0" ci="1" mb="0" cb="0"/><line nr="388" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="485"/><counter type="BRANCH" missed="4" covered="18"/><counter type="LINE" missed="0" covered="124"/><counter type="COMPLEXITY" missed="4" covered="27"/><counter type="METHOD" missed="0" covered="20"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="BaseContext.java"/><counter type="INSTRUCTION" missed="0" covered="583"/><counter type="BRANCH" missed="6" covered="22"/><counter type="LINE" missed="0" covered="155"/><counter type="COMPLEXITY" missed="6" covered="41"/><counter type="METHOD" missed="0" covered="33"/><counter type="CLASS" missed="0" covered="3"/></package><package name="software/amazon/lambda/durable/config"><class name="software/amazon/lambda/durable/config/WaitForCallbackConfig" sourcefilename="WaitForCallbackConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig$Builder;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepConfig" desc="()Lsoftware/amazon/lambda/durable/config/StepConfig;" line="23"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="callbackConfig" desc="()Lsoftware/amazon/lambda/durable/config/CallbackConfig;" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig$Builder;" line="33"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig$Builder;" line="38"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="43"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/RunInChildContextConfig$Builder" sourcefilename="RunInChildContextConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="44"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig$Builder;" line="59"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig;" line="69"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/RunInChildContextConfig" sourcefilename="RunInChildContextConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig$Builder;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig$Builder;" line="28"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/RunInChildContextConfig$Builder;" line="37"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/WaitForConditionConfig$Builder" sourcefilename="WaitForConditionConfig.java"><method name="waitStrategy" desc="(Lsoftware/amazon/lambda/durable/retry/WaitForConditionWaitStrategy;)Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;" line="86"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;" line="99"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="initialState" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;" line="110"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig;" line="115"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/StepConfig" sourcefilename="StepConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;)V" line="20"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="retryStrategy" desc="()Lsoftware/amazon/lambda/durable/retry/RetryStrategy;" line="28"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="semantics" desc="()Lsoftware/amazon/lambda/durable/config/StepSemantics;" line="33"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="38"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;" line="42"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;" line="51"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="51"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/WaitForConditionConfig" sourcefilename="WaitForConditionConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;)V" line="21"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="waitStrategy" desc="()Lsoftware/amazon/lambda/durable/retry/WaitForConditionWaitStrategy;" line="32"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="37"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="initialState" desc="()Ljava/lang/Object;" line="42"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;" line="52"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/WaitForConditionConfig$Builder;" line="66"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="51"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/StepConfig$Builder" sourcefilename="StepConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/retry/RetryStrategy;Lsoftware/amazon/lambda/durable/config/StepSemantics;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="60"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="retryStrategy" desc="(Lsoftware/amazon/lambda/durable/retry/RetryStrategy;)Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;" line="73"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="semantics" desc="(Lsoftware/amazon/lambda/durable/config/StepSemantics;)Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;" line="84"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/StepConfig$Builder;" line="99"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/StepConfig;" line="109"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/InvokeConfig$Builder" sourcefilename="InvokeConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/lambda/durable/serde/SerDes;Ljava/lang/String;)V" line="49"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tenantId" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;" line="65"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="payloadSerDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;" line="80"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;" line="95"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/InvokeConfig;" line="105"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="5" covered="27"/><counter type="LINE" missed="2" covered="10"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/MapConfig$Builder" sourcefilename="MapConfig.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Lsoftware/amazon/lambda/durable/config/CompletionConfig;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="53"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="maxConcurrency" desc="(Ljava/lang/Integer;)Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;" line="60"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completionConfig" desc="(Lsoftware/amazon/lambda/durable/config/CompletionConfig;)Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;" line="74"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;" line="85"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/MapConfig;" line="90"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="44"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/CallbackConfig" sourcefilename="CallbackConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="timeout" desc="()Ljava/time/Duration;" line="27"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="heartbeatTimeout" desc="()Ljava/time/Duration;" line="36"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="41"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;" line="46"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;" line="51"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="41"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/MapConfig" sourcefilename="MapConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;)V" line="17"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="maxConcurrency" desc="()Ljava/lang/Integer;" line="26"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completionConfig" desc="()Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="31"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="36"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;" line="40"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/MapConfig$Builder;" line="44"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="53"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/CompletionConfig" sourcefilename="CompletionConfig.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Double;)V" line="11"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="allSuccessful" desc="()Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="16"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="allCompleted" desc="()Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="21"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="firstSuccessful" desc="()Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="26"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="minSuccessful" desc="(I)Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="31"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toleratedFailureCount" desc="(I)Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="39"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toleratedFailurePercentage" desc="(D)Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="47"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="90"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="11"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/InvokeConfig" sourcefilename="InvokeConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;)V" line="17"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="payloadSerDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tenantId" desc="()Ljava/lang/String;" line="32"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;" line="36"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/InvokeConfig$Builder;" line="40"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="41"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/WaitForCallbackConfig$Builder" sourcefilename="WaitForCallbackConfig.java"><method name="&lt;init&gt;" desc="()V" line="46"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stepConfig" desc="(Lsoftware/amazon/lambda/durable/config/StepConfig;)Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig$Builder;" line="55"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="callbackConfig" desc="(Lsoftware/amazon/lambda/durable/config/CallbackConfig;)Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig$Builder;" line="66"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/WaitForCallbackConfig;" line="72"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/ParallelBranchConfig$Builder" sourcefilename="ParallelBranchConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="41"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig$Builder;" line="56"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig;" line="66"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/ParallelConfig" sourcefilename="ParallelConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/ParallelConfig$Builder;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="maxConcurrency" desc="()I" line="23"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completionConfig" desc="()Lsoftware/amazon/lambda/durable/config/CompletionConfig;" line="27"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/ParallelConfig$Builder;" line="36"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/CallbackConfig$Builder" sourcefilename="CallbackConfig.java"><method name="&lt;init&gt;" desc="(Ljava/time/Duration;Ljava/time/Duration;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="60"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="timeout" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;" line="73"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="heartbeatTimeout" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;" line="85"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/config/CallbackConfig$Builder;" line="101"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/CallbackConfig;" line="107"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/ParallelConfig$Builder" sourcefilename="ParallelConfig.java"><method name="maxConcurrency" desc="(Ljava/lang/Integer;)Lsoftware/amazon/lambda/durable/config/ParallelConfig$Builder;" line="53"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completionConfig" desc="(Lsoftware/amazon/lambda/durable/config/CompletionConfig;)Lsoftware/amazon/lambda/durable/config/ParallelConfig$Builder;" line="67"><counter type="INSTRUCTION" missed="5" covered="10"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="build" desc="()Lsoftware/amazon/lambda/durable/config/ParallelConfig;" line="81"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="5" covered="32"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="1" covered="8"/><counter type="COMPLEXITY" missed="3" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/ParallelBranchConfig" sourcefilename="ParallelBranchConfig.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig$Builder;)V" line="15"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serDes" desc="()Lsoftware/amazon/lambda/durable/serde/SerDes;" line="21"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBuilder" desc="()Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig$Builder;" line="25"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="builder" desc="()Lsoftware/amazon/lambda/durable/config/ParallelBranchConfig$Builder;" line="34"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="6" covered="15"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/config/StepSemantics" sourcefilename="StepSemantics.java"><method name="&lt;clinit&gt;" desc="()V" line="10"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="StepSemantics.java"><line nr="10" mi="0" ci="3" mb="0" cb="0"/><line nr="15" mi="0" ci="6" mb="0" cb="0"/><line nr="22" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CallbackConfig.java"><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="4" mb="0" cb="0"/><line nr="17" mi="0" ci="4" mb="0" cb="0"/><line nr="18" mi="0" ci="4" mb="0" cb="0"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="46" mi="0" ci="7" mb="0" cb="0"/><line nr="51" mi="0" ci="10" mb="0" cb="0"/><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="2" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="0" ci="2" mb="0" cb="0"/><line nr="101" mi="0" ci="3" mb="0" cb="0"/><line nr="102" mi="0" ci="2" mb="0" cb="0"/><line nr="107" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="79"/><counter type="LINE" missed="0" covered="24"/><counter type="COMPLEXITY" missed="0" covered="11"/><counter type="METHOD" missed="0" covered="11"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="WaitForCallbackConfig.java"><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="10" mb="0" cb="2"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="18" mi="0" ci="9" mb="0" cb="2"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="10" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="2" mb="0" cb="0"/><line nr="72" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="61"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="11"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="InvokeConfig.java"><line nr="17" mi="0" ci="2" mb="0" cb="0"/><line nr="18" mi="0" ci="4" mb="0" cb="0"/><line nr="19" mi="0" ci="4" mb="0" cb="0"/><line nr="20" mi="0" ci="4" mb="0" cb="0"/><line nr="21" mi="0" ci="1" mb="0" cb="0"/><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="7" mb="0" cb="0"/><line nr="40" mi="0" ci="10" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="3" ci="0" mb="0" cb="0"/><line nr="66" mi="2" ci="0" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="81" mi="0" ci="2" mb="0" cb="0"/><line nr="95" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="5" covered="68"/><counter type="LINE" missed="2" covered="20"/><counter type="COMPLEXITY" missed="1" covered="10"/><counter type="METHOD" missed="1" covered="10"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="WaitForConditionConfig.java"><line nr="21" mi="0" ci="2" mb="0" cb="0"/><line nr="22" mi="0" ci="4" mb="0" cb="0"/><line nr="23" mi="0" ci="4" mb="0" cb="0"/><line nr="24" mi="0" ci="4" mb="0" cb="0"/><line nr="25" mi="0" ci="1" mb="0" cb="0"/><line nr="32" mi="0" ci="8" mb="0" cb="2"/><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="4" mb="0" cb="0"/><line nr="53" mi="0" ci="4" mb="0" cb="0"/><line nr="54" mi="0" ci="4" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="111" mi="0" ci="2" mb="0" cb="0"/><line nr="115" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="71"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="11"/><counter type="METHOD" missed="0" covered="10"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ParallelBranchConfig.java"><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="4" mb="0" cb="0"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="21" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="6" ci="0" mb="0" cb="0"/><line nr="34" mi="0" ci="5" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="1" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="31"/><counter type="LINE" missed="1" covered="11"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="MapConfig.java"><line nr="17" mi="0" ci="2" mb="0" cb="0"/><line nr="18" mi="0" ci="11" mb="0" cb="2"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="20" mi="0" ci="8" mb="0" cb="2"/><line nr="21" mi="0" ci="4" mb="0" cb="0"/><line nr="22" mi="0" ci="1" mb="0" cb="0"/><line nr="26" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="7" mb="0" cb="0"/><line nr="44" mi="0" ci="10" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="1" mb="0" cb="0"/><line nr="60" mi="0" ci="6" mb="0" cb="4"/><line nr="61" mi="0" ci="6" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="2" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="2" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="2" mb="0" cb="0"/><line nr="90" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="97"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="25"/><counter type="COMPLEXITY" missed="0" covered="15"/><counter type="METHOD" missed="0" covered="11"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="StepConfig.java"><line nr="20" mi="0" ci="2" mb="0" cb="0"/><line nr="21" mi="0" ci="4" mb="0" cb="0"/><line nr="22" mi="0" ci="4" mb="0" cb="0"/><line nr="23" mi="0" ci="4" mb="0" cb="0"/><line nr="24" mi="0" ci="1" mb="0" cb="0"/><line nr="28" mi="0" ci="8" mb="0" cb="2"/><line nr="33" mi="0" ci="8" mb="0" cb="2"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="10" mb="0" cb="0"/><line nr="51" mi="0" ci="7" mb="0" cb="0"/><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="2" mb="0" cb="0"/><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="83"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="22"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="11"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="RunInChildContextConfig.java"><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="4" mb="0" cb="0"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="6" mb="0" cb="0"/><line nr="37" mi="0" ci="5" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="45" mi="0" ci="3" mb="0" cb="0"/><line nr="46" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="69" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ParallelConfig.java"><line nr="15" mi="0" ci="2" mb="0" cb="0"/><line nr="16" mi="0" ci="10" mb="0" cb="2"/><line nr="17" mi="0" ci="1" mb="0" cb="0"/><line nr="18" mi="0" ci="8" mb="0" cb="2"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="4" mb="0" cb="0"/><line nr="53" mi="0" ci="6" mb="1" cb="3"/><line nr="54" mi="0" ci="6" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="2" mb="0" cb="0"/><line nr="67" mi="0" ci="5" mb="2" cb="2"/><line nr="68" mi="5" ci="0" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="0" cb="0"/><line nr="81" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="5" covered="64"/><counter type="BRANCH" missed="3" covered="9"/><counter type="LINE" missed="1" covered="16"/><counter type="COMPLEXITY" missed="3" covered="10"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="CompletionConfig.java"><line nr="11" mi="0" ci="12" mb="0" cb="0"/><line nr="16" mi="0" ci="8" mb="0" cb="0"/><line nr="21" mi="0" ci="7" mb="0" cb="0"/><line nr="26" mi="0" ci="8" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="2"/><line nr="32" mi="0" ci="6" mb="0" cb="0"/><line nr="34" mi="0" ci="8" mb="0" cb="0"/><line nr="39" mi="0" ci="2" mb="0" cb="2"/><line nr="40" mi="0" ci="6" mb="0" cb="0"/><line nr="42" mi="0" ci="8" mb="0" cb="0"/><line nr="47" mi="0" ci="8" mb="0" cb="4"/><line nr="48" mi="0" ci="6" mb="0" cb="0"/><line nr="51" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="90"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="11"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="16" covered="696"/><counter type="BRANCH" missed="3" covered="35"/><counter type="LINE" missed="4" covered="182"/><counter type="COMPLEXITY" missed="5" covered="106"/><counter type="METHOD" missed="2" covered="90"/><counter type="CLASS" missed="0" covered="20"/></package><package name="software/amazon/lambda/durable/serde"><class name="software/amazon/lambda/durable/serde/AwsSdkV2Module$SdkDeserializer" sourcefilename="AwsSdkV2Module.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Class;)V" line="56"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object;" line="65"><counter type="INSTRUCTION" missed="10" covered="36"/><counter type="LINE" missed="3" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="10" covered="42"/><counter type="LINE" missed="3" covered="10"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/DurableInputOutputSerDes$3" sourcefilename="DurableInputOutputSerDes.java"><method name="&lt;init&gt;" desc="()V" line="76"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/time/Instant;" line="84"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="77"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/DurableInputOutputSerDes$2" sourcefilename="DurableInputOutputSerDes.java"><method name="&lt;init&gt;" desc="()V" line="64"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serialize" desc="(Ljava/util/Date;Lcom/fasterxml/jackson/core/JsonGenerator;Lcom/fasterxml/jackson/databind/SerializerProvider;)V" line="70"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="10" covered="3"/><counter type="LINE" missed="3" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/DurableInputOutputSerDes$1" sourcefilename="DurableInputOutputSerDes.java"><method name="&lt;init&gt;" desc="()V" line="54"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/util/Date;" line="59"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="11" covered="3"/><counter type="LINE" missed="2" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/AwsSdkV2Module$SdkSerializer" sourcefilename="AwsSdkV2Module.java"><method name="serialize" desc="(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonGenerator;Lcom/fasterxml/jackson/databind/SerializerProvider;)V" line="86"><counter type="INSTRUCTION" missed="10" covered="22"/><counter type="LINE" missed="3" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="10" covered="22"/><counter type="LINE" missed="3" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/DurableInputOutputSerDes" sourcefilename="DurableInputOutputSerDes.java"><method name="&lt;init&gt;" desc="()V" line="39"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createObjectMapper" desc="()Lcom/fasterxml/jackson/databind/ObjectMapper;" line="53"><counter type="INSTRUCTION" missed="0" covered="76"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serialize" desc="(Ljava/lang/Object;)Ljava/lang/String;" line="114"><counter type="INSTRUCTION" missed="7" covered="7"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="4" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="134"><counter type="INSTRUCTION" missed="7" covered="21"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="4" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="14" covered="120"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="8" covered="23"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/AwsSdkV2Module" sourcefilename="AwsSdkV2Module.java"><method name="&lt;init&gt;" desc="()V" line="40"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="registerSdkClass" desc="(Ljava/lang/Class;)V" line="49"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="36"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="40"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/JacksonSerDes" sourcefilename="JacksonSerDes.java"><method name="&lt;init&gt;" desc="()V" line="38"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lcom/fasterxml/jackson/databind/ObjectMapper;)V" line="45"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serialize" desc="(Ljava/lang/Object;)Ljava/lang/String;" line="53"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="64"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="82"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/serde/SerDes" sourcefilename="SerDes.java"/><sourcefile name="DurableInputOutputSerDes.java"><line nr="39" mi="0" ci="2" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="5" mb="0" cb="0"/><line nr="42" mi="0" ci="6" mb="0" cb="0"/><line nr="53" mi="0" ci="4" mb="0" cb="0"/><line nr="54" mi="0" ci="10" mb="0" cb="0"/><line nr="59" mi="3" ci="0" mb="0" cb="0"/><line nr="61" mi="8" ci="0" mb="0" cb="0"/><line nr="64" mi="0" ci="10" mb="0" cb="0"/><line nr="70" mi="6" ci="0" mb="0" cb="0"/><line nr="71" mi="3" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="76" mi="0" ci="10" mb="0" cb="0"/><line nr="77" mi="0" ci="5" mb="0" cb="0"/><line nr="78" mi="0" ci="1" mb="0" cb="0"/><line nr="79" mi="0" ci="2" mb="0" cb="0"/><line nr="84" mi="0" ci="4" mb="0" cb="2"/><line nr="85" mi="0" ci="4" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="5" mb="0" cb="0"/><line nr="92" mi="0" ci="8" mb="0" cb="0"/><line nr="93" mi="0" ci="8" mb="0" cb="0"/><line nr="94" mi="0" ci="8" mb="0" cb="0"/><line nr="96" mi="0" ci="8" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="0" ci="5" mb="0" cb="0"/><line nr="100" mi="0" ci="3" mb="0" cb="0"/><line nr="101" mi="0" ci="5" mb="0" cb="0"/><line nr="102" mi="0" ci="2" mb="0" cb="0"/><line nr="103" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="0" ci="2" mb="1" cb="1"/><line nr="115" mi="2" ci="0" mb="0" cb="0"/><line nr="118" mi="0" ci="5" mb="0" cb="0"/><line nr="119" mi="1" ci="0" mb="0" cb="0"/><line nr="120" mi="2" ci="0" mb="0" cb="0"/><line nr="121" mi="2" ci="0" mb="0" cb="0"/><line nr="134" mi="0" ci="2" mb="1" cb="1"/><line nr="135" mi="2" ci="0" mb="0" cb="0"/><line nr="138" mi="0" ci="13" mb="0" cb="0"/><line nr="139" mi="0" ci="6" mb="0" cb="0"/><line nr="140" mi="1" ci="0" mb="0" cb="0"/><line nr="141" mi="2" ci="0" mb="0" cb="0"/><line nr="142" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="35" covered="153"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="13" covered="30"/><counter type="COMPLEXITY" missed="4" covered="10"/><counter type="METHOD" missed="2" covered="9"/><counter type="CLASS" missed="0" covered="4"/></sourcefile><sourcefile name="SerDes.java"/><sourcefile name="AwsSdkV2Module.java"><line nr="36" mi="0" ci="4" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="10" mb="0" cb="2"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="45" mi="0" ci="1" mb="0" cb="0"/><line nr="46" mi="0" ci="1" mb="0" cb="0"/><line nr="49" mi="0" ci="8" mb="0" cb="0"/><line nr="50" mi="0" ci="7" mb="0" cb="0"/><line nr="51" mi="0" ci="1" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="0" ci="7" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="7" mb="0" cb="0"/><line nr="70" mi="0" ci="4" mb="0" cb="0"/><line nr="71" mi="0" ci="6" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="6" mb="0" cb="0"/><line nr="74" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="4" ci="0" mb="0" cb="0"/><line nr="76" mi="5" ci="0" mb="0" cb="0"/><line nr="86" mi="0" ci="7" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="6" mb="0" cb="0"/><line nr="91" mi="0" ci="4" mb="0" cb="0"/><line nr="92" mi="1" ci="0" mb="0" cb="0"/><line nr="93" mi="3" ci="0" mb="0" cb="0"/><line nr="94" mi="6" ci="0" mb="0" cb="0"/><line nr="96" mi="0" ci="1" mb="0" cb="0"/><line nr="97" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="20" covered="104"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="6" covered="26"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="JacksonSerDes.java"><line nr="38" mi="0" ci="8" mb="0" cb="0"/><line nr="39" mi="0" ci="2" mb="0" cb="0"/><line nr="40" mi="0" ci="2" mb="0" cb="0"/><line nr="41" mi="0" ci="1" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="5" mb="0" cb="0"/><line nr="48" mi="0" ci="5" mb="0" cb="0"/><line nr="49" mi="0" ci="1" mb="0" cb="0"/><line nr="53" mi="0" ci="4" mb="0" cb="2"/><line nr="55" mi="0" ci="5" mb="0" cb="0"/><line nr="56" mi="0" ci="1" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="6" mb="0" cb="0"/><line nr="64" mi="0" ci="4" mb="0" cb="2"/><line nr="69" mi="0" ci="13" mb="0" cb="0"/><line nr="70" mi="0" ci="6" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="82"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="55" covered="339"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="19" covered="77"/><counter type="COMPLEXITY" missed="4" covered="23"/><counter type="METHOD" missed="2" covered="19"/><counter type="CLASS" missed="0" covered="8"/></package><package name="software/amazon/lambda/durable/client"><class name="software/amazon/lambda/durable/client/DurableExecutionClient" sourcefilename="DurableExecutionClient.java"/><class name="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient" sourcefilename="LambdaDurableFunctionsClient.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/LambdaClient;)V" line="30"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpoint" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lsoftware/amazon/awssdk/services/lambda/model/CheckpointDurableExecutionResponse;" line="36"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getExecutionState" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsoftware/amazon/awssdk/services/lambda/model/GetDurableExecutionStateResponse;" line="47"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="30" covered="9"/><counter type="LINE" missed="12" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="DurableExecutionClient.java"/><sourcefile name="LambdaDurableFunctionsClient.java"><line nr="30" mi="0" ci="2" mb="0" cb="0"/><line nr="31" mi="0" ci="6" mb="0" cb="0"/><line nr="32" mi="0" ci="1" mb="0" cb="0"/><line nr="36" mi="2" ci="0" mb="0" cb="0"/><line nr="37" mi="2" ci="0" mb="0" cb="0"/><line nr="38" mi="2" ci="0" mb="0" cb="0"/><line nr="39" mi="1" ci="0" mb="0" cb="0"/><line nr="40" mi="3" ci="0" mb="0" cb="0"/><line nr="42" mi="5" ci="0" mb="0" cb="0"/><line nr="47" mi="2" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="50" mi="1" ci="0" mb="0" cb="0"/><line nr="51" mi="3" ci="0" mb="0" cb="0"/><line nr="53" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="30" covered="9"/><counter type="LINE" missed="12" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="30" covered="9"/><counter type="LINE" missed="12" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></package><counter type="INSTRUCTION" missed="814" covered="8303"/><counter type="BRANCH" missed="102" covered="607"/><counter type="LINE" missed="194" covered="2017"/><counter type="COMPLEXITY" missed="150" covered="839"/><counter type="METHOD" missed="51" covered="573"/><counter type="CLASS" missed="1" covered="112"/></group><group name="aws-durable-execution-sdk-java-testing"><package name="software/amazon/lambda/durable/testing/cloud"><class name="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor" sourcefilename="HistoryEventProcessor.java"><method name="&lt;init&gt;" desc="()V" line="30"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="processEvents" desc="(Ljava/util/List;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="40"><counter type="INSTRUCTION" missed="435" covered="0"/><counter type="BRANCH" missed="98" covered="0"/><counter type="LINE" missed="113" covered="0"/><counter type="COMPLEXITY" missed="60" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createStepOperation" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;Ljava/lang/Integer;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="247"><counter type="INSTRUCTION" missed="28" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createWaitOperation" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="262"><counter type="INSTRUCTION" missed="27" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createCallbackOperation" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="277"><counter type="INSTRUCTION" missed="82" covered="0"/><counter type="BRANCH" missed="16" covered="0"/><counter type="LINE" missed="23" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createInvokeOperation" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="312"><counter type="INSTRUCTION" missed="116" covered="0"/><counter type="BRANCH" missed="30" covered="0"/><counter type="LINE" missed="37" covered="0"/><counter type="COMPLEXITY" missed="18" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createContextOperation" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="369"><counter type="INSTRUCTION" missed="60" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="17" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$processEvents$0" desc="(Ljava/lang/String;)Ljava/util/List;" line="53"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="755" covered="0"/><counter type="BRANCH" missed="160" covered="0"/><counter type="LINE" missed="212" covered="0"/><counter type="COMPLEXITY" missed="100" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/testing/cloud/HistoryPoller" sourcefilename="HistoryPoller.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/LambdaClient;)V" line="23"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="pollUntilComplete" desc="(Ljava/lang/String;Ljava/time/Duration;Ljava/time/Duration;)Ljava/util/List;" line="37"><counter type="INSTRUCTION" missed="70" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="23" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isExecutionComplete" desc="(Ljava/util/List;)Z" line="74"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$isExecutionComplete$0" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event;)Z" line="75"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="96" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="HistoryPoller.java"><line nr="23" mi="2" ci="0" mb="0" cb="0"/><line nr="24" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="1" ci="0" mb="0" cb="0"/><line nr="37" mi="4" ci="0" mb="0" cb="0"/><line nr="38" mi="2" ci="0" mb="0" cb="0"/><line nr="39" mi="2" ci="0" mb="0" cb="0"/><line nr="41" mi="6" ci="0" mb="2" cb="0"/><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="43" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="3" ci="0" mb="0" cb="0"/><line nr="45" mi="1" ci="0" mb="0" cb="0"/><line nr="46" mi="3" ci="0" mb="0" cb="0"/><line nr="48" mi="5" ci="0" mb="0" cb="0"/><line nr="49" mi="3" ci="0" mb="0" cb="0"/><line nr="51" mi="4" ci="0" mb="0" cb="0"/><line nr="53" mi="4" ci="0" mb="2" cb="0"/><line nr="54" mi="2" ci="0" mb="0" cb="0"/><line nr="57" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="5" ci="0" mb="4" cb="0"/><line nr="63" mi="3" ci="0" mb="0" cb="0"/><line nr="64" mi="1" ci="0" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="0" cb="0"/><line nr="66" mi="6" ci="0" mb="0" cb="0"/><line nr="67" mi="1" ci="0" mb="0" cb="0"/><line nr="68" mi="1" ci="0" mb="0" cb="0"/><line nr="70" mi="5" ci="0" mb="0" cb="0"/><line nr="74" mi="5" ci="0" mb="0" cb="0"/><line nr="75" mi="3" ci="0" mb="0" cb="0"/><line nr="76" mi="12" ci="0" mb="4" cb="0"/><counter type="INSTRUCTION" missed="96" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="HistoryEventProcessor.java"><line nr="30" mi="3" ci="0" mb="0" cb="0"/><line nr="40" mi="4" ci="0" mb="0" cb="0"/><line nr="41" mi="4" ci="0" mb="0" cb="0"/><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="43" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><line nr="46" mi="10" ci="0" mb="2" cb="0"/><line nr="47" mi="3" ci="0" mb="0" cb="0"/><line nr="48" mi="3" ci="0" mb="0" cb="0"/><line nr="51" mi="2" ci="0" mb="2" cb="0"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><line nr="53" mi="7" ci="0" mb="0" cb="0"/><line nr="54" mi="2" ci="0" mb="0" cb="0"/><line nr="57" mi="5" ci="0" mb="22" cb="0"/><line nr="60" mi="1" ci="0" mb="0" cb="0"/><line nr="62" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="3" ci="0" mb="2" cb="0"/><line nr="64" mi="3" ci="0" mb="2" cb="0"/><line nr="65" mi="3" ci="0" mb="2" cb="0"/><line nr="69" mi="2" ci="0" mb="0" cb="0"/><line nr="70" mi="4" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="74" mi="2" ci="0" mb="0" cb="0"/><line nr="75" mi="3" ci="0" mb="0" cb="0"/><line nr="76" mi="3" ci="0" mb="2" cb="0"/><line nr="77" mi="3" ci="0" mb="2" cb="0"/><line nr="78" mi="3" ci="0" mb="2" cb="0"/><line nr="79" mi="4" ci="0" mb="0" cb="0"/><line nr="81" mi="1" ci="0" mb="0" cb="0"/><line nr="83" mi="2" ci="0" mb="0" cb="0"/><line nr="84" mi="3" ci="0" mb="0" cb="0"/><line nr="85" mi="3" ci="0" mb="2" cb="0"/><line nr="86" mi="3" ci="0" mb="2" cb="0"/><line nr="87" mi="3" ci="0" mb="2" cb="0"/><line nr="88" mi="4" ci="0" mb="0" cb="0"/><line nr="90" mi="1" ci="0" mb="0" cb="0"/><line nr="92" mi="2" ci="0" mb="0" cb="0"/><line nr="93" mi="3" ci="0" mb="0" cb="0"/><line nr="94" mi="3" ci="0" mb="2" cb="0"/><line nr="95" mi="3" ci="0" mb="2" cb="0"/><line nr="96" mi="3" ci="0" mb="2" cb="0"/><line nr="97" mi="4" ci="0" mb="0" cb="0"/><line nr="99" mi="1" ci="0" mb="0" cb="0"/><line nr="101" mi="2" ci="0" mb="0" cb="0"/><line nr="103" mi="3" ci="0" mb="0" cb="0"/><line nr="104" mi="3" ci="0" mb="2" cb="0"/><line nr="105" mi="3" ci="0" mb="2" cb="0"/><line nr="106" mi="3" ci="0" mb="2" cb="0"/><line nr="107" mi="4" ci="0" mb="0" cb="0"/><line nr="109" mi="1" ci="0" mb="0" cb="0"/><line nr="111" mi="2" ci="0" mb="2" cb="0"/><line nr="112" mi="8" ci="0" mb="0" cb="0"/><line nr="114" mi="6" ci="0" mb="0" cb="0"/><line nr="118" mi="2" ci="0" mb="2" cb="0"/><line nr="119" mi="3" ci="0" mb="0" cb="0"/><line nr="120" mi="5" ci="0" mb="4" cb="0"/><line nr="121" mi="4" ci="0" mb="0" cb="0"/><line nr="122" mi="2" ci="0" mb="0" cb="0"/><line nr="123" mi="5" ci="0" mb="4" cb="0"/><line nr="124" mi="5" ci="0" mb="0" cb="0"/><line nr="125" mi="2" ci="0" mb="0" cb="0"/><line nr="126" mi="7" ci="0" mb="0" cb="0"/><line nr="128" mi="1" ci="0" mb="0" cb="0"/><line nr="129" mi="5" ci="0" mb="0" cb="0"/><line nr="130" mi="1" ci="0" mb="0" cb="0"/><line nr="133" mi="2" ci="0" mb="2" cb="0"/><line nr="134" mi="3" ci="0" mb="0" cb="0"/><line nr="135" mi="5" ci="0" mb="4" cb="0"/><line nr="136" mi="5" ci="0" mb="0" cb="0"/><line nr="137" mi="2" ci="0" mb="0" cb="0"/><line nr="138" mi="7" ci="0" mb="0" cb="0"/><line nr="140" mi="6" ci="0" mb="0" cb="0"/><line nr="141" mi="1" ci="0" mb="0" cb="0"/><line nr="145" mi="2" ci="0" mb="2" cb="0"/><line nr="146" mi="8" ci="0" mb="0" cb="0"/><line nr="148" mi="4" ci="0" mb="0" cb="0"/><line nr="152" mi="2" ci="0" mb="2" cb="0"/><line nr="153" mi="8" ci="0" mb="0" cb="0"/><line nr="155" mi="4" ci="0" mb="0" cb="0"/><line nr="159" mi="2" ci="0" mb="2" cb="0"/><line nr="160" mi="8" ci="0" mb="0" cb="0"/><line nr="162" mi="4" ci="0" mb="0" cb="0"/><line nr="167" mi="2" ci="0" mb="2" cb="0"/><line nr="168" mi="8" ci="0" mb="0" cb="0"/><line nr="170" mi="4" ci="0" mb="0" cb="0"/><line nr="174" mi="2" ci="0" mb="2" cb="0"/><line nr="175" mi="8" ci="0" mb="0" cb="0"/><line nr="177" mi="4" ci="0" mb="0" cb="0"/><line nr="181" mi="2" ci="0" mb="2" cb="0"/><line nr="182" mi="8" ci="0" mb="0" cb="0"/><line nr="184" mi="4" ci="0" mb="0" cb="0"/><line nr="188" mi="2" ci="0" mb="2" cb="0"/><line nr="189" mi="8" ci="0" mb="0" cb="0"/><line nr="191" mi="4" ci="0" mb="0" cb="0"/><line nr="197" mi="1" ci="0" mb="0" cb="0"/><line nr="200" mi="2" ci="0" mb="2" cb="0"/><line nr="201" mi="8" ci="0" mb="0" cb="0"/><line nr="203" mi="4" ci="0" mb="0" cb="0"/><line nr="207" mi="2" ci="0" mb="2" cb="0"/><line nr="208" mi="8" ci="0" mb="0" cb="0"/><line nr="210" mi="4" ci="0" mb="0" cb="0"/><line nr="214" mi="2" ci="0" mb="2" cb="0"/><line nr="215" mi="8" ci="0" mb="0" cb="0"/><line nr="217" mi="4" ci="0" mb="0" cb="0"/><line nr="226" mi="2" ci="0" mb="2" cb="0"/><line nr="227" mi="9" ci="0" mb="0" cb="0"/><line nr="231" mi="7" ci="0" mb="0" cb="0"/><line nr="233" mi="1" ci="0" mb="0" cb="0"/><line nr="236" mi="4" ci="0" mb="0" cb="0"/><line nr="237" mi="11" ci="0" mb="2" cb="0"/><line nr="238" mi="7" ci="0" mb="0" cb="0"/><line nr="239" mi="11" ci="0" mb="0" cb="0"/><line nr="240" mi="1" ci="0" mb="0" cb="0"/><line nr="242" mi="11" ci="0" mb="0" cb="0"/><line nr="247" mi="2" ci="0" mb="0" cb="0"/><line nr="248" mi="1" ci="0" mb="0" cb="0"/><line nr="249" mi="8" ci="0" mb="2" cb="0"/><line nr="250" mi="3" ci="0" mb="0" cb="0"/><line nr="252" mi="3" ci="0" mb="0" cb="0"/><line nr="253" mi="2" ci="0" mb="0" cb="0"/><line nr="254" mi="2" ci="0" mb="0" cb="0"/><line nr="255" mi="2" ci="0" mb="0" cb="0"/><line nr="256" mi="2" ci="0" mb="0" cb="0"/><line nr="257" mi="1" ci="0" mb="0" cb="0"/><line nr="258" mi="2" ci="0" mb="0" cb="0"/><line nr="262" mi="2" ci="0" mb="0" cb="0"/><line nr="263" mi="3" ci="0" mb="2" cb="0"/><line nr="264" mi="6" ci="0" mb="0" cb="0"/><line nr="267" mi="3" ci="0" mb="0" cb="0"/><line nr="268" mi="2" ci="0" mb="0" cb="0"/><line nr="269" mi="2" ci="0" mb="0" cb="0"/><line nr="270" mi="2" ci="0" mb="0" cb="0"/><line nr="271" mi="2" ci="0" mb="0" cb="0"/><line nr="272" mi="3" ci="0" mb="0" cb="0"/><line nr="273" mi="2" ci="0" mb="0" cb="0"/><line nr="277" mi="2" ci="0" mb="0" cb="0"/><line nr="280" mi="3" ci="0" mb="2" cb="0"/><line nr="281" mi="3" ci="0" mb="0" cb="0"/><line nr="282" mi="3" ci="0" mb="2" cb="0"/><line nr="283" mi="5" ci="0" mb="0" cb="0"/><line nr="285" mi="4" ci="0" mb="2" cb="0"/><line nr="286" mi="3" ci="0" mb="0" cb="0"/><line nr="288" mi="7" ci="0" mb="4" cb="0"/><line nr="289" mi="6" ci="0" mb="0" cb="0"/><line nr="291" mi="4" ci="0" mb="2" cb="0"/><line nr="292" mi="3" ci="0" mb="0" cb="0"/><line nr="294" mi="7" ci="0" mb="4" cb="0"/><line nr="295" mi="5" ci="0" mb="0" cb="0"/><line nr="296" mi="5" ci="0" mb="0" cb="0"/><line nr="297" mi="4" ci="0" mb="0" cb="0"/><line nr="298" mi="2" ci="0" mb="0" cb="0"/><line nr="302" mi="3" ci="0" mb="0" cb="0"/><line nr="303" mi="2" ci="0" mb="0" cb="0"/><line nr="304" mi="2" ci="0" mb="0" cb="0"/><line nr="305" mi="2" ci="0" mb="0" cb="0"/><line nr="306" mi="2" ci="0" mb="0" cb="0"/><line nr="307" mi="3" ci="0" mb="0" cb="0"/><line nr="308" mi="2" ci="0" mb="0" cb="0"/><line nr="312" mi="2" ci="0" mb="0" cb="0"/><line nr="314" mi="2" ci="0" mb="0" cb="0"/><line nr="315" mi="4" ci="0" mb="6" cb="0"/><line nr="316" mi="2" ci="0" mb="0" cb="0"/><line nr="318" mi="3" ci="0" mb="0" cb="0"/><line nr="319" mi="3" ci="0" mb="2" cb="0"/><line nr="320" mi="3" ci="0" mb="2" cb="0"/><line nr="321" mi="3" ci="0" mb="2" cb="0"/><line nr="322" mi="6" ci="0" mb="0" cb="0"/><line nr="324" mi="2" ci="0" mb="0" cb="0"/><line nr="327" mi="3" ci="0" mb="0" cb="0"/><line nr="328" mi="3" ci="0" mb="2" cb="0"/><line nr="329" mi="3" ci="0" mb="2" cb="0"/><line nr="330" mi="3" ci="0" mb="2" cb="0"/><line nr="331" mi="6" ci="0" mb="0" cb="0"/><line nr="333" mi="2" ci="0" mb="0" cb="0"/><line nr="336" mi="3" ci="0" mb="0" cb="0"/><line nr="337" mi="3" ci="0" mb="2" cb="0"/><line nr="338" mi="3" ci="0" mb="2" cb="0"/><line nr="339" mi="3" ci="0" mb="2" cb="0"/><line nr="340" mi="6" ci="0" mb="0" cb="0"/><line nr="343" mi="2" ci="0" mb="0" cb="0"/><line nr="346" mi="3" ci="0" mb="0" cb="0"/><line nr="347" mi="3" ci="0" mb="2" cb="0"/><line nr="348" mi="3" ci="0" mb="2" cb="0"/><line nr="349" mi="3" ci="0" mb="2" cb="0"/><line nr="350" mi="6" ci="0" mb="0" cb="0"/><line nr="352" mi="2" ci="0" mb="0" cb="0"/><line nr="355" mi="3" ci="0" mb="0" cb="0"/><line nr="356" mi="6" ci="0" mb="0" cb="0"/><line nr="359" mi="3" ci="0" mb="0" cb="0"/><line nr="360" mi="2" ci="0" mb="0" cb="0"/><line nr="361" mi="3" ci="0" mb="0" cb="0"/><line nr="362" mi="2" ci="0" mb="0" cb="0"/><line nr="363" mi="2" ci="0" mb="0" cb="0"/><line nr="364" mi="3" ci="0" mb="0" cb="0"/><line nr="365" mi="2" ci="0" mb="0" cb="0"/><line nr="369" mi="2" ci="0" mb="0" cb="0"/><line nr="371" mi="3" ci="0" mb="2" cb="0"/><line nr="372" mi="3" ci="0" mb="0" cb="0"/><line nr="373" mi="7" ci="0" mb="4" cb="0"/><line nr="374" mi="6" ci="0" mb="0" cb="0"/><line nr="376" mi="4" ci="0" mb="2" cb="0"/><line nr="377" mi="3" ci="0" mb="0" cb="0"/><line nr="378" mi="7" ci="0" mb="4" cb="0"/><line nr="379" mi="6" ci="0" mb="0" cb="0"/><line nr="383" mi="3" ci="0" mb="0" cb="0"/><line nr="384" mi="2" ci="0" mb="0" cb="0"/><line nr="385" mi="2" ci="0" mb="0" cb="0"/><line nr="386" mi="2" ci="0" mb="0" cb="0"/><line nr="387" mi="2" ci="0" mb="0" cb="0"/><line nr="388" mi="3" ci="0" mb="0" cb="0"/><line nr="389" mi="3" ci="0" mb="0" cb="0"/><line nr="390" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="755" covered="0"/><counter type="BRANCH" missed="160" covered="0"/><counter type="LINE" missed="212" covered="0"/><counter type="COMPLEXITY" missed="100" covered="0"/><counter type="METHOD" missed="8" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="851" covered="0"/><counter type="BRANCH" missed="172" covered="0"/><counter type="LINE" missed="241" covered="0"/><counter type="COMPLEXITY" missed="110" covered="0"/><counter type="METHOD" missed="12" covered="0"/><counter type="CLASS" missed="2" covered="0"/></package><package name="software/amazon/lambda/durable/testing/local"><class name="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient" sourcefilename="LocalMemoryExecutionClient.java"><method name="&lt;init&gt;" desc="()V" line="25"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkpoint" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lsoftware/amazon/awssdk/services/lambda/model/CheckpointDurableExecutionResponse;" line="33"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExecutionState" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsoftware/amazon/awssdk/services/lambda/model/GetDurableExecutionStateResponse;" line="48"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationUpdates" desc="()Ljava/util/List;" line="55"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAllEvents" desc="()Ljava/util/List;" line="60"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getEventsForOperation" desc="(Ljava/lang/String;)Ljava/util/List;" line="65"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="advanceTime" desc="()Z" line="74"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completeChainedInvoke" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/testing/local/OperationResult;)V" line="104"><counter type="INSTRUCTION" missed="0" covered="85"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="0" covered="26"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperationByName" desc="(Ljava/lang/String;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="135"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAllOperations" desc="()Ljava/util/List;" line="143"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="reset" desc="()V" line="148"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toTestResult" desc="(Lsoftware/amazon/lambda/durable/model/DurableExecutionOutput;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="154"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="resetCheckpointToStarted" desc="(Ljava/lang/String;)V" line="170"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="simulateFireAndForgetCheckpointLoss" desc="(Ljava/lang/String;)V" line="180"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="applyUpdate" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)V" line="188"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="compositeKey" desc="(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" line="197"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toOperation" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="201"><counter type="INSTRUCTION" missed="5" covered="68"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="1" covered="15"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildChainedInvokeDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/ChainedInvokeDetails;" line="224"><counter type="INSTRUCTION" missed="2" covered="13"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildContextDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/ContextDetails;" line="234"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildWaitDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/WaitDetails;" line="245"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildStepDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/StepDetails;" line="252"><counter type="INSTRUCTION" missed="0" covered="83"/><counter type="BRANCH" missed="0" covered="14"/><counter type="LINE" missed="0" covered="16"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildCallbackDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/CallbackDetails;" line="279"><counter type="INSTRUCTION" missed="9" covered="31"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="3" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCallbackId" desc="(Ljava/lang/String;)Ljava/lang/String;" line="295"><counter type="INSTRUCTION" missed="2" covered="13"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completeCallback" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/testing/local/OperationResult;)V" line="304"><counter type="INSTRUCTION" missed="6" covered="37"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="11"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="findOperationByCallbackId" desc="(Ljava/lang/String;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="319"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deriveStatus" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationAction;)Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;" line="327"><counter type="INSTRUCTION" missed="3" covered="14"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="5"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$findOperationByCallbackId$5" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="320"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$toTestResult$4" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="156"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$toTestResult$3" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="155"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getOperationByName$2" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Z" line="136"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$advanceTime$1" desc="(Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Operation;" line="77"><counter type="INSTRUCTION" missed="0" covered="61"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getEventsForOperation$0" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Z" line="65"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="40" covered="720"/><counter type="BRANCH" missed="16" covered="60"/><counter type="LINE" missed="10" covered="172"/><counter type="COMPLEXITY" missed="18" covered="57"/><counter type="METHOD" missed="2" covered="30"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/testing/local/EventProcessor" sourcefilename="EventProcessor.java"><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="processUpdate" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="16"><counter type="INSTRUCTION" missed="8" covered="55"/><counter type="BRANCH" missed="1" covered="6"/><counter type="LINE" missed="1" covered="12"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildStepEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="34"><counter type="INSTRUCTION" missed="8" covered="69"/><counter type="BRANCH" missed="1" covered="4"/><counter type="LINE" missed="1" covered="23"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildWaitEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="67"><counter type="INSTRUCTION" missed="19" covered="44"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="4" covered="11"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildInvokeEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="92"><counter type="INSTRUCTION" missed="8" covered="64"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="25"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildExecutionEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="126"><counter type="INSTRUCTION" missed="35" covered="24"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="12" covered="8"/><counter type="COMPLEXITY" missed="3" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildCallbackEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="153"><counter type="INSTRUCTION" missed="20" covered="13"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="3" covered="2"/><counter type="COMPLEXITY" missed="3" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildContextEvent" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event$Builder;Lsoftware/amazon/awssdk/services/lambda/model/OperationUpdate;)Lsoftware/amazon/awssdk/services/lambda/model/Event;" line="162"><counter type="INSTRUCTION" missed="8" covered="25"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildRetryDetails" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;)Lsoftware/amazon/awssdk/services/lambda/model/RetryDetails;" line="171"><counter type="INSTRUCTION" missed="7" covered="21"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="113" covered="324"/><counter type="BRANCH" missed="15" covered="25"/><counter type="LINE" missed="24" covered="92"/><counter type="COMPLEXITY" missed="15" covered="23"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/testing/local/OperationResult" sourcefilename="OperationResult.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="9"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="succeeded" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/testing/local/OperationResult;" line="11"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failed" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Lsoftware/amazon/lambda/durable/testing/local/OperationResult;" line="15"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopped" desc="(Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)Lsoftware/amazon/lambda/durable/testing/local/OperationResult;" line="19"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="timedout" desc="()Lsoftware/amazon/lambda/durable/testing/local/OperationResult;" line="23"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="40"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="LocalMemoryExecutionClient.java"><line nr="25" mi="0" ci="2" mb="0" cb="0"/><line nr="26" mi="0" ci="5" mb="0" cb="0"/><line nr="27" mi="0" ci="5" mb="0" cb="0"/><line nr="28" mi="0" ci="5" mb="0" cb="0"/><line nr="29" mi="0" ci="6" mb="0" cb="0"/><line nr="33" mi="0" ci="5" mb="0" cb="0"/><line nr="34" mi="0" ci="4" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="1" mb="0" cb="0"/><line nr="40" mi="0" ci="4" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="2" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="48" mi="0" ci="4" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="50" mi="0" ci="2" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="4" ci="0" mb="0" cb="0"/><line nr="65" mi="0" ci="13" mb="0" cb="0"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><line nr="75" mi="0" ci="6" mb="0" cb="0"/><line nr="77" mi="0" ci="4" mb="0" cb="2"/><line nr="78" mi="0" ci="3" mb="0" cb="0"/><line nr="79" mi="0" ci="7" mb="0" cb="0"/><line nr="82" mi="0" ci="8" mb="0" cb="4"/><line nr="83" mi="0" ci="1" mb="0" cb="0"/><line nr="84" mi="0" ci="6" mb="0" cb="0"/><line nr="86" mi="0" ci="2" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="3" mb="0" cb="0"/><line nr="89" mi="0" ci="2" mb="0" cb="0"/><line nr="90" mi="0" ci="1" mb="0" cb="0"/><line nr="91" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="6" mb="0" cb="0"/><line nr="93" mi="0" ci="5" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="0" cb="0"/><line nr="97" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="4" mb="0" cb="0"/><line nr="105" mi="0" ci="2" mb="0" cb="2"/><line nr="106" mi="0" ci="6" mb="0" cb="0"/><line nr="108" mi="0" ci="5" mb="1" cb="1"/><line nr="109" mi="0" ci="4" mb="1" cb="1"/><line nr="110" mi="0" ci="4" mb="1" cb="1"/><line nr="111" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="2" mb="0" cb="0"/><line nr="113" mi="0" ci="3" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="2" mb="0" cb="0"/><line nr="116" mi="0" ci="2" mb="0" cb="0"/><line nr="117" mi="0" ci="3" mb="0" cb="0"/><line nr="118" mi="0" ci="2" mb="0" cb="0"/><line nr="119" mi="0" ci="3" mb="0" cb="0"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="0" ci="1" mb="0" cb="0"/><line nr="122" mi="0" ci="1" mb="0" cb="0"/><line nr="123" mi="0" ci="4" mb="0" cb="2"/><line nr="124" mi="0" ci="2" mb="0" cb="0"/><line nr="125" mi="0" ci="1" mb="0" cb="0"/><line nr="126" mi="0" ci="3" mb="0" cb="0"/><line nr="127" mi="0" ci="6" mb="0" cb="0"/><line nr="128" mi="0" ci="5" mb="0" cb="0"/><line nr="129" mi="0" ci="10" mb="0" cb="0"/><line nr="131" mi="0" ci="1" mb="0" cb="0"/><line nr="135" mi="0" ci="7" mb="0" cb="0"/><line nr="136" mi="0" ci="6" mb="0" cb="0"/><line nr="137" mi="0" ci="2" mb="0" cb="0"/><line nr="138" mi="0" ci="2" mb="0" cb="0"/><line nr="143" mi="0" ci="6" mb="0" cb="0"/><line nr="148" mi="3" ci="0" mb="0" cb="0"/><line nr="149" mi="3" ci="0" mb="0" cb="0"/><line nr="150" mi="1" ci="0" mb="0" cb="0"/><line nr="154" mi="0" ci="5" mb="0" cb="0"/><line nr="155" mi="0" ci="12" mb="0" cb="2"/><line nr="156" mi="0" ci="11" mb="0" cb="0"/><line nr="157" mi="0" ci="2" mb="0" cb="0"/><line nr="158" mi="0" ci="4" mb="0" cb="0"/><line nr="159" mi="0" ci="2" mb="0" cb="0"/><line nr="160" mi="0" ci="2" mb="0" cb="0"/><line nr="161" mi="0" ci="10" mb="0" cb="0"/><line nr="170" mi="0" ci="4" mb="0" cb="0"/><line nr="171" mi="0" ci="2" mb="0" cb="2"/><line nr="172" mi="0" ci="6" mb="0" cb="0"/><line nr="174" mi="0" ci="7" mb="0" cb="0"/><line nr="175" mi="0" ci="10" mb="0" cb="0"/><line nr="176" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="4" mb="0" cb="0"/><line nr="181" mi="0" ci="2" mb="0" cb="2"/><line nr="182" mi="0" ci="6" mb="0" cb="0"/><line nr="184" mi="0" ci="9" mb="0" cb="0"/><line nr="185" mi="0" ci="1" mb="0" cb="0"/><line nr="188" mi="0" ci="4" mb="0" cb="0"/><line nr="189" mi="0" ci="6" mb="0" cb="0"/><line nr="190" mi="0" ci="6" mb="0" cb="0"/><line nr="192" mi="0" ci="6" mb="0" cb="0"/><line nr="193" mi="0" ci="5" mb="0" cb="0"/><line nr="194" mi="0" ci="1" mb="0" cb="0"/><line nr="197" mi="0" ci="8" mb="0" cb="2"/><line nr="201" mi="0" ci="2" mb="0" cb="0"/><line nr="202" mi="0" ci="3" mb="0" cb="0"/><line nr="203" mi="0" ci="3" mb="0" cb="0"/><line nr="204" mi="0" ci="3" mb="0" cb="0"/><line nr="205" mi="0" ci="3" mb="0" cb="0"/><line nr="206" mi="0" ci="4" mb="0" cb="0"/><line nr="207" mi="0" ci="4" mb="0" cb="0"/><line nr="209" mi="0" ci="6" mb="2" cb="6"/><line nr="210" mi="0" ci="7" mb="0" cb="0"/><line nr="211" mi="0" ci="7" mb="0" cb="0"/><line nr="212" mi="0" ci="7" mb="0" cb="0"/><line nr="213" mi="0" ci="1" mb="0" cb="0"/><line nr="214" mi="0" ci="7" mb="0" cb="0"/><line nr="215" mi="0" ci="7" mb="0" cb="0"/><line nr="217" mi="5" ci="0" mb="0" cb="0"/><line nr="220" mi="0" ci="4" mb="0" cb="0"/><line nr="224" mi="0" ci="3" mb="1" cb="1"/><line nr="225" mi="2" ci="0" mb="0" cb="0"/><line nr="227" mi="0" ci="3" mb="0" cb="0"/><line nr="228" mi="0" ci="3" mb="0" cb="0"/><line nr="229" mi="0" ci="2" mb="0" cb="0"/><line nr="230" mi="0" ci="2" mb="0" cb="0"/><line nr="234" mi="0" ci="8" mb="0" cb="0"/><line nr="236" mi="0" ci="5" mb="0" cb="2"/><line nr="237" mi="0" ci="4" mb="1" cb="1"/><line nr="238" mi="0" ci="5" mb="0" cb="0"/><line nr="241" mi="0" ci="4" mb="0" cb="0"/><line nr="245" mi="2" ci="3" mb="1" cb="1"/><line nr="247" mi="0" ci="8" mb="0" cb="0"/><line nr="248" mi="0" ci="6" mb="0" cb="0"/><line nr="252" mi="0" ci="6" mb="0" cb="0"/><line nr="253" mi="0" ci="6" mb="0" cb="0"/><line nr="254" mi="0" ci="7" mb="0" cb="2"/><line nr="256" mi="0" ci="7" mb="0" cb="2"/><line nr="257" mi="0" ci="13" mb="0" cb="4"/><line nr="259" mi="0" ci="4" mb="0" cb="2"/><line nr="260" mi="0" ci="8" mb="0" cb="0"/><line nr="263" mi="0" ci="4" mb="0" cb="2"/><line nr="264" mi="0" ci="2" mb="0" cb="0"/><line nr="265" mi="0" ci="3" mb="0" cb="0"/><line nr="266" mi="0" ci="2" mb="0" cb="0"/><line nr="267" mi="0" ci="2" mb="0" cb="0"/><line nr="268" mi="0" ci="7" mb="0" cb="0"/><line nr="271" mi="0" ci="3" mb="0" cb="2"/><line nr="272" mi="0" ci="5" mb="0" cb="0"/><line nr="275" mi="0" ci="4" mb="0" cb="0"/><line nr="279" mi="0" ci="6" mb="0" cb="0"/><line nr="280" mi="0" ci="6" mb="0" cb="0"/><line nr="281" mi="3" ci="4" mb="1" cb="1"/><line nr="285" mi="3" ci="5" mb="1" cb="1"/><line nr="287" mi="0" ci="3" mb="0" cb="0"/><line nr="288" mi="0" ci="1" mb="0" cb="0"/><line nr="289" mi="3" ci="4" mb="1" cb="1"/><line nr="290" mi="0" ci="2" mb="0" cb="0"/><line nr="295" mi="0" ci="4" mb="0" cb="0"/><line nr="296" mi="0" ci="5" mb="2" cb="2"/><line nr="297" mi="2" ci="0" mb="0" cb="0"/><line nr="299" mi="0" ci="4" mb="0" cb="0"/><line nr="304" mi="0" ci="4" mb="0" cb="0"/><line nr="305" mi="0" ci="2" mb="1" cb="1"/><line nr="306" mi="6" ci="0" mb="0" cb="0"/><line nr="308" mi="0" ci="3" mb="0" cb="0"/><line nr="309" mi="0" ci="3" mb="0" cb="0"/><line nr="310" mi="0" ci="4" mb="0" cb="0"/><line nr="311" mi="0" ci="3" mb="0" cb="0"/><line nr="312" mi="0" ci="2" mb="0" cb="0"/><line nr="313" mi="0" ci="2" mb="0" cb="0"/><line nr="314" mi="0" ci="3" mb="0" cb="0"/><line nr="315" mi="0" ci="10" mb="0" cb="0"/><line nr="316" mi="0" ci="1" mb="0" cb="0"/><line nr="319" mi="0" ci="7" mb="0" cb="0"/><line nr="320" mi="0" ci="7" mb="0" cb="2"/><line nr="321" mi="0" ci="7" mb="0" cb="2"/><line nr="322" mi="0" ci="2" mb="0" cb="0"/><line nr="323" mi="0" ci="2" mb="0" cb="0"/><line nr="327" mi="0" ci="6" mb="2" cb="4"/><line nr="328" mi="0" ci="2" mb="0" cb="0"/><line nr="329" mi="0" ci="2" mb="0" cb="0"/><line nr="330" mi="0" ci="2" mb="0" cb="0"/><line nr="331" mi="0" ci="2" mb="0" cb="0"/><line nr="332" mi="2" ci="0" mb="0" cb="0"/><line nr="333" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="40" covered="720"/><counter type="BRANCH" missed="16" covered="60"/><counter type="LINE" missed="10" covered="172"/><counter type="COMPLEXITY" missed="18" covered="57"/><counter type="METHOD" missed="2" covered="30"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="EventProcessor.java"><line nr="12" mi="0" ci="2" mb="0" cb="0"/><line nr="13" mi="0" ci="7" mb="0" cb="0"/><line nr="16" mi="0" ci="3" mb="0" cb="0"/><line nr="17" mi="0" ci="3" mb="0" cb="0"/><line nr="18" mi="0" ci="3" mb="0" cb="0"/><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="3" mb="0" cb="0"/><line nr="22" mi="0" ci="7" mb="1" cb="6"/><line nr="23" mi="0" ci="6" mb="0" cb="0"/><line nr="24" mi="0" ci="6" mb="0" cb="0"/><line nr="25" mi="0" ci="6" mb="0" cb="0"/><line nr="26" mi="0" ci="5" mb="0" cb="0"/><line nr="27" mi="0" ci="5" mb="0" cb="0"/><line nr="28" mi="0" ci="5" mb="0" cb="0"/><line nr="29" mi="8" ci="0" mb="0" cb="0"/><line nr="34" mi="0" ci="7" mb="1" cb="4"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="2" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="2" mb="0" cb="0"/><line nr="51" mi="0" ci="5" mb="0" cb="0"/><line nr="52" mi="0" ci="2" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="54" mi="0" ci="2" mb="0" cb="0"/><line nr="55" mi="0" ci="2" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="8" ci="0" mb="0" cb="0"/><line nr="67" mi="0" ci="7" mb="2" cb="2"/><line nr="70" mi="1" ci="9" mb="1" cb="1"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><line nr="75" mi="0" ci="2" mb="0" cb="0"/><line nr="76" mi="0" ci="3" mb="0" cb="0"/><line nr="79" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="3" ci="0" mb="0" cb="0"/><line nr="84" mi="4" ci="0" mb="0" cb="0"/><line nr="85" mi="3" ci="0" mb="0" cb="0"/><line nr="86" mi="8" ci="0" mb="0" cb="0"/><line nr="92" mi="0" ci="7" mb="1" cb="3"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="2" mb="0" cb="0"/><line nr="100" mi="0" ci="2" mb="0" cb="0"/><line nr="101" mi="0" ci="3" mb="0" cb="0"/><line nr="103" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="3" mb="0" cb="0"/><line nr="106" mi="0" ci="1" mb="0" cb="0"/><line nr="107" mi="0" ci="2" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="113" mi="0" ci="2" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="2" mb="0" cb="0"/><line nr="117" mi="0" ci="2" mb="0" cb="0"/><line nr="118" mi="0" ci="2" mb="0" cb="0"/><line nr="119" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="8" ci="0" mb="0" cb="0"/><line nr="126" mi="0" ci="7" mb="3" cb="1"/><line nr="128" mi="3" ci="0" mb="0" cb="0"/><line nr="129" mi="1" ci="0" mb="0" cb="0"/><line nr="130" mi="3" ci="0" mb="0" cb="0"/><line nr="131" mi="3" ci="0" mb="0" cb="0"/><line nr="133" mi="0" ci="3" mb="0" cb="0"/><line nr="134" mi="0" ci="2" mb="0" cb="0"/><line nr="135" mi="0" ci="3" mb="0" cb="0"/><line nr="136" mi="0" ci="2" mb="0" cb="0"/><line nr="137" mi="0" ci="2" mb="0" cb="0"/><line nr="138" mi="0" ci="2" mb="0" cb="0"/><line nr="139" mi="0" ci="3" mb="0" cb="0"/><line nr="141" mi="3" ci="0" mb="0" cb="0"/><line nr="142" mi="2" ci="0" mb="0" cb="0"/><line nr="143" mi="3" ci="0" mb="0" cb="0"/><line nr="144" mi="2" ci="0" mb="0" cb="0"/><line nr="145" mi="2" ci="0" mb="0" cb="0"/><line nr="146" mi="2" ci="0" mb="0" cb="0"/><line nr="147" mi="3" ci="0" mb="0" cb="0"/><line nr="148" mi="8" ci="0" mb="0" cb="0"/><line nr="153" mi="0" ci="7" mb="3" cb="1"/><line nr="154" mi="0" ci="6" mb="0" cb="0"/><line nr="155" mi="6" ci="0" mb="0" cb="0"/><line nr="156" mi="6" ci="0" mb="0" cb="0"/><line nr="157" mi="8" ci="0" mb="0" cb="0"/><line nr="162" mi="0" ci="7" mb="1" cb="3"/><line nr="163" mi="0" ci="6" mb="0" cb="0"/><line nr="164" mi="0" ci="6" mb="0" cb="0"/><line nr="165" mi="0" ci="6" mb="0" cb="0"/><line nr="166" mi="8" ci="0" mb="0" cb="0"/><line nr="171" mi="0" ci="5" mb="2" cb="2"/><line nr="172" mi="7" ci="0" mb="0" cb="0"/><line nr="174" mi="0" ci="4" mb="0" cb="0"/><line nr="175" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="0" ci="8" mb="0" cb="2"/><line nr="177" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="113" covered="324"/><counter type="BRANCH" missed="15" covered="25"/><counter type="LINE" missed="24" covered="92"/><counter type="COMPLEXITY" missed="15" covered="23"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="OperationResult.java"><line nr="9" mi="0" ci="12" mb="0" cb="0"/><line nr="11" mi="0" ci="7" mb="0" cb="0"/><line nr="15" mi="0" ci="7" mb="0" cb="0"/><line nr="19" mi="0" ci="7" mb="0" cb="0"/><line nr="23" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="40"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="153" covered="1084"/><counter type="BRANCH" missed="31" covered="85"/><counter type="LINE" missed="34" covered="269"/><counter type="COMPLEXITY" missed="33" covered="85"/><counter type="METHOD" missed="2" covered="44"/><counter type="CLASS" missed="0" covered="3"/></package><package name="software/amazon/lambda/durable/testing"><class name="software/amazon/lambda/durable/testing/CloudDurableTestRunner" sourcefilename="CloudDurableTestRunner.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/awssdk/services/lambda/LambdaClient;Ljava/time/Duration;Ljava/time/Duration;Lsoftware/amazon/awssdk/services/lambda/model/InvocationType;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="45"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createDefaultLambdaClient" desc="()Lsoftware/amazon/awssdk/services/lambda/LambdaClient;" line="58"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="create" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="66"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="create" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/TypeToken;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="72"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="create" desc="(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Lsoftware/amazon/awssdk/services/lambda/LambdaClient;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="86"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/awssdk/services/lambda/LambdaClient;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="92"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withLambdaClient" desc="(Lsoftware/amazon/awssdk/services/lambda/LambdaClient;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="105"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="withPollInterval" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="111"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withTimeout" desc="(Ljava/time/Duration;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="117"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="withInvocationType" desc="(Lsoftware/amazon/awssdk/services/lambda/model/InvocationType;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="123"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withSerDes" desc="(Lsoftware/amazon/lambda/durable/serde/SerDes;)Lsoftware/amazon/lambda/durable/testing/CloudDurableTestRunner;" line="128"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="runUntilComplete" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="134"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="run" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="141"><counter type="INSTRUCTION" missed="71" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="startAsync" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/testing/AsyncExecution;" line="182"><counter type="INSTRUCTION" missed="65" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="17" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getOperation" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="214"><counter type="INSTRUCTION" missed="5" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="231" covered="101"/><counter type="BRANCH" missed="5" covered="1"/><counter type="LINE" missed="47" covered="19"/><counter type="COMPLEXITY" missed="12" covered="6"/><counter type="METHOD" missed="9" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/testing/LocalDurableTestRunner" sourcefilename="LocalDurableTestRunner.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;)V" line="48"><counter type="INSTRUCTION" missed="0" covered="54"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Ljava/lang/Class;Ljava/util/function/BiFunction;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="85"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="106"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Ljava/lang/Class;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="122"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Ljava/util/function/BiFunction;Lsoftware/amazon/lambda/durable/DurableConfig;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="160"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="create" desc="(Ljava/lang/Class;Lsoftware/amazon/lambda/durable/DurableHandler;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="175"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withDurableConfig" desc="(Lsoftware/amazon/lambda/durable/DurableConfig;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="184"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="withOutputType" desc="(Lsoftware/amazon/lambda/durable/TypeToken;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="189"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="withOutputType" desc="(Ljava/lang/Class;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="194"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/DurableHandler;)Lsoftware/amazon/lambda/durable/testing/LocalDurableTestRunner;" line="230"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="235"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="runUntilComplete" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/testing/TestResult;" line="251"><counter type="INSTRUCTION" missed="1" covered="23"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="resetCheckpointToStarted" desc="(Ljava/lang/String;)V" line="267"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="simulateFireAndForgetCheckpointLoss" desc="(Ljava/lang/String;)V" line="272"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperation" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="277"><counter type="INSTRUCTION" missed="1" covered="15"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCallbackId" desc="(Ljava/lang/String;)Ljava/lang/String;" line="283"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completeCallback" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="288"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failCallback" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="293"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="timeoutCallback" desc="(Ljava/lang/String;)V" line="298"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="advanceTime" desc="()V" line="303"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="completeChainedInvoke" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="308"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="timeoutChainedInvoke" desc="(Ljava/lang/String;)V" line="313"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="failChainedInvoke" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="318"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stopChainedInvoke" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="323"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createDurableInput" desc="(Ljava/lang/Object;)Lsoftware/amazon/lambda/durable/model/DurableExecutionInput;" line="327"><counter type="INSTRUCTION" missed="0" covered="72"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="mockLambdaContext" desc="()Lcom/amazonaws/services/lambda/runtime/Context;" line="355"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="32" covered="322"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="4" covered="76"/><counter type="COMPLEXITY" missed="6" covered="25"/><counter type="METHOD" missed="3" covered="23"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/testing/TestResult" sourcefilename="TestResult.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/model/ExecutionStatus;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Ljava/util/List;Ljava/util/List;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="44"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStatus" desc="()Lsoftware/amazon/lambda/durable/model/ExecutionStatus;" line="58"><counter type="INSTRUCTION" missed="8" covered="10"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getResult" desc="(Ljava/lang/Class;)Ljava/lang/Object;" line="67"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getResult" desc="(Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="72"><counter type="INSTRUCTION" missed="2" covered="49"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="1" covered="8"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getResult" desc="()Ljava/lang/Object;" line="88"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="()Ljava/util/Optional;" line="94"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperations" desc="()Ljava/util/List;" line="99"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOperation" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="104"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getHistoryEvents" desc="()Ljava/util/List;" line="109"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getEventsForOperation" desc="(Ljava/lang/String;)Ljava/util/List;" line="114"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isSucceeded" desc="()Z" line="120"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isFailed" desc="()Z" line="125"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSucceededOperations" desc="()Ljava/util/List;" line="130"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFailedOperations" desc="()Ljava/util/List;" line="137"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getFailedOperations$3" desc="(Lsoftware/amazon/lambda/durable/testing/TestOperation;)Z" line="138"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getSucceededOperations$2" desc="(Lsoftware/amazon/lambda/durable/testing/TestOperation;)Z" line="131"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$1" desc="(Lsoftware/amazon/lambda/durable/testing/TestOperation;Lsoftware/amazon/lambda/durable/testing/TestOperation;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="50"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$0" desc="(Lsoftware/amazon/lambda/durable/testing/TestOperation;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="50"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="26"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="42" covered="161"/><counter type="BRANCH" missed="9" covered="11"/><counter type="LINE" missed="8" covered="34"/><counter type="COMPLEXITY" missed="10" covered="19"/><counter type="METHOD" missed="4" covered="15"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/testing/AsyncExecution" sourcefilename="AsyncExecution.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/LambdaClient;Lsoftware/amazon/lambda/durable/TypeToken;Lsoftware/amazon/lambda/durable/serde/SerDes;Ljava/time/Duration;Ljava/time/Duration;)V" line="42"><counter type="INSTRUCTION" missed="26" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="pollUntil" desc="(Ljava/util/function/Predicate;)Lsoftware/amazon/lambda/durable/testing/AsyncExecution;" line="59"><counter type="INSTRUCTION" missed="39" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="pollUntilComplete" desc="()Lsoftware/amazon/lambda/durable/testing/TestResult;" line="85"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isComplete" desc="()Z" line="91"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="hasOperation" desc="(Ljava/lang/String;)Z" line="102"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="hasCallback" desc="(Ljava/lang/String;)Z" line="110"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getCallbackId" desc="(Ljava/lang/String;)Ljava/lang/String;" line="126"><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getOperation" desc="(Ljava/lang/String;)Lsoftware/amazon/lambda/durable/testing/TestOperation;" line="146"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getOperations" desc="()Ljava/util/List;" line="154"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStatus" desc="()Lsoftware/amazon/lambda/durable/model/ExecutionStatus;" line="162"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getExecutionArn" desc="()Ljava/lang/String;" line="170"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="completeCallback" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="175"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="failCallback" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;)V" line="181"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="heartbeatCallback" desc="(Ljava/lang/String;)V" line="187"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="refreshHistory" desc="()V" line="192"><counter type="INSTRUCTION" missed="39" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$heartbeatCallback$7" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/SendDurableExecutionCallbackHeartbeatRequest$Builder;)V" line="187"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$failCallback$6" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;Lsoftware/amazon/awssdk/services/lambda/model/SendDurableExecutionCallbackFailureRequest$Builder;)V" line="182"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$completeCallback$5" desc="(Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/SendDurableExecutionCallbackSuccessRequest$Builder;)V" line="176"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$getCallbackId$4" desc="(Ljava/lang/String;)Ljava/lang/IllegalStateException;" line="133"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$getCallbackId$3" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/testing/TestOperation;)Z" line="131"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$hasCallback$2" desc="(Ljava/lang/String;Lsoftware/amazon/awssdk/services/lambda/model/Event;)Z" line="115"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$hasOperation$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/testing/TestOperation;)Z" line="105"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$isComplete$0" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Event;)Z" line="95"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="310" covered="0"/><counter type="BRANCH" missed="30" covered="0"/><counter type="LINE" missed="74" covered="0"/><counter type="COMPLEXITY" missed="38" covered="0"/><counter type="METHOD" missed="23" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/testing/TestOperation" sourcefilename="TestOperation.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="30"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lsoftware/amazon/awssdk/services/lambda/model/Operation;Ljava/util/List;Lsoftware/amazon/lambda/durable/serde/SerDes;)V" line="33"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getEvents" desc="()Ljava/util/List;" line="41"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getName" desc="()Ljava/lang/String;" line="46"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStatus" desc="()Lsoftware/amazon/awssdk/services/lambda/model/OperationStatus;" line="51"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getType" desc="()Lsoftware/amazon/awssdk/services/lambda/model/OperationType;" line="56"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSubtype" desc="()Ljava/lang/String;" line="61"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isCompleted" desc="()Z" line="66"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getDuration" desc="()Ljava/time/Duration;" line="71"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStepDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/StepDetails;" line="78"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getWaitDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/WaitDetails;" line="83"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getCallbackDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/CallbackDetails;" line="88"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getChainedInvokeDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ChainedInvokeDetails;" line="93"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getContextDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ContextDetails;" line="98"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getExecutionDetails" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ExecutionDetails;" line="103"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStepResult" desc="(Ljava/lang/Class;)Ljava/lang/Object;" line="108"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStepResult" desc="(Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="113"><counter type="INSTRUCTION" missed="2" covered="16"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getError" desc="()Lsoftware/amazon/awssdk/services/lambda/model/ErrorObject;" line="122"><counter type="INSTRUCTION" missed="1" covered="10"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAttempt" desc="()I" line="128"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="65" covered="65"/><counter type="BRANCH" missed="9" covered="3"/><counter type="LINE" missed="14" covered="17"/><counter type="COMPLEXITY" missed="16" covered="9"/><counter type="METHOD" missed="10" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="AsyncExecution.java"><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="43" mi="3" ci="0" mb="0" cb="0"/><line nr="44" mi="3" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="3" ci="0" mb="0" cb="0"/><line nr="47" mi="3" ci="0" mb="0" cb="0"/><line nr="48" mi="3" ci="0" mb="0" cb="0"/><line nr="49" mi="5" ci="0" mb="0" cb="0"/><line nr="50" mi="1" ci="0" mb="0" cb="0"/><line nr="59" mi="2" ci="0" mb="0" cb="0"/><line nr="61" mi="7" ci="0" mb="2" cb="0"/><line nr="62" mi="2" ci="0" mb="0" cb="0"/><line nr="64" mi="4" ci="0" mb="2" cb="0"/><line nr="65" mi="2" ci="0" mb="0" cb="0"/><line nr="69" mi="4" ci="0" mb="0" cb="0"/><line nr="70" mi="1" ci="0" mb="0" cb="0"/><line nr="71" mi="2" ci="0" mb="0" cb="0"/><line nr="72" mi="6" ci="0" mb="0" cb="0"/><line nr="73" mi="1" ci="0" mb="0" cb="0"/><line nr="76" mi="8" ci="0" mb="0" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="86" mi="3" ci="0" mb="0" cb="0"/><line nr="91" mi="3" ci="0" mb="2" cb="0"/><line nr="92" mi="2" ci="0" mb="0" cb="0"/><line nr="94" mi="6" ci="0" mb="0" cb="0"/><line nr="95" mi="3" ci="0" mb="0" cb="0"/><line nr="96" mi="12" ci="0" mb="4" cb="0"/><line nr="102" mi="3" ci="0" mb="2" cb="0"/><line nr="103" mi="2" ci="0" mb="0" cb="0"/><line nr="105" mi="13" ci="0" mb="0" cb="0"/><line nr="110" mi="3" ci="0" mb="2" cb="0"/><line nr="111" mi="2" ci="0" mb="0" cb="0"/><line nr="114" mi="6" ci="0" mb="0" cb="0"/><line nr="115" mi="15" ci="0" mb="4" cb="0"/><line nr="126" mi="3" ci="0" mb="2" cb="0"/><line nr="127" mi="5" ci="0" mb="0" cb="0"/><line nr="130" mi="6" ci="0" mb="0" cb="0"/><line nr="131" mi="6" ci="0" mb="0" cb="0"/><line nr="132" mi="3" ci="0" mb="0" cb="0"/><line nr="133" mi="9" ci="0" mb="0" cb="0"/><line nr="135" mi="3" ci="0" mb="0" cb="0"/><line nr="136" mi="5" ci="0" mb="4" cb="0"/><line nr="137" mi="6" ci="0" mb="0" cb="0"/><line nr="141" mi="3" ci="0" mb="0" cb="0"/><line nr="146" mi="3" ci="0" mb="2" cb="0"/><line nr="147" mi="5" ci="0" mb="0" cb="0"/><line nr="149" mi="5" ci="0" mb="0" cb="0"/><line nr="154" mi="3" ci="0" mb="2" cb="0"/><line nr="155" mi="5" ci="0" mb="0" cb="0"/><line nr="157" mi="4" ci="0" mb="0" cb="0"/><line nr="162" mi="3" ci="0" mb="2" cb="0"/><line nr="163" mi="2" ci="0" mb="0" cb="0"/><line nr="165" mi="4" ci="0" mb="0" cb="0"/><line nr="170" mi="3" ci="0" mb="0" cb="0"/><line nr="175" mi="7" ci="0" mb="0" cb="0"/><line nr="176" mi="8" ci="0" mb="0" cb="0"/><line nr="177" mi="1" ci="0" mb="0" cb="0"/><line nr="181" mi="7" ci="0" mb="0" cb="0"/><line nr="182" mi="7" ci="0" mb="0" cb="0"/><line nr="183" mi="1" ci="0" mb="0" cb="0"/><line nr="187" mi="11" ci="0" mb="0" cb="0"/><line nr="188" mi="1" ci="0" mb="0" cb="0"/><line nr="192" mi="3" ci="0" mb="0" cb="0"/><line nr="193" mi="2" ci="0" mb="0" cb="0"/><line nr="194" mi="2" ci="0" mb="0" cb="0"/><line nr="195" mi="3" ci="0" mb="0" cb="0"/><line nr="196" mi="5" ci="0" mb="0" cb="0"/><line nr="197" mi="4" ci="0" mb="0" cb="0"/><line nr="198" mi="11" ci="0" mb="0" cb="0"/><line nr="199" mi="1" ci="0" mb="0" cb="0"/><line nr="202" mi="3" ci="0" mb="0" cb="0"/><line nr="203" mi="3" ci="0" mb="0" cb="0"/><line nr="204" mi="1" ci="0" mb="0" cb="0"/><line nr="205" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="310" covered="0"/><counter type="BRANCH" missed="30" covered="0"/><counter type="LINE" missed="74" covered="0"/><counter type="COMPLEXITY" missed="38" covered="0"/><counter type="METHOD" missed="23" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LocalDurableTestRunner.java"><line nr="48" mi="0" ci="2" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="5" mb="0" cb="0"/><line nr="55" mi="0" ci="2" mb="0" cb="2"/><line nr="57" mi="0" ci="4" mb="0" cb="0"/><line nr="58" mi="0" ci="2" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="6" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="85" mi="0" ci="9" mb="0" cb="0"/><line nr="106" mi="0" ci="8" mb="0" cb="0"/><line nr="122" mi="0" ci="9" mb="0" cb="0"/><line nr="160" mi="8" ci="0" mb="0" cb="0"/><line nr="175" mi="0" ci="4" mb="0" cb="0"/><line nr="176" mi="0" ci="10" mb="0" cb="0"/><line nr="184" mi="11" ci="0" mb="0" cb="0"/><line nr="189" mi="11" ci="0" mb="0" cb="0"/><line nr="194" mi="0" ci="12" mb="0" cb="0"/><line nr="230" mi="0" ci="13" mb="0" cb="0"/><line nr="235" mi="0" ci="4" mb="0" cb="0"/><line nr="237" mi="0" ci="11" mb="0" cb="0"/><line nr="239" mi="0" ci="9" mb="0" cb="0"/><line nr="251" mi="0" ci="2" mb="0" cb="0"/><line nr="252" mi="0" ci="7" mb="1" cb="1"/><line nr="253" mi="0" ci="4" mb="0" cb="0"/><line nr="255" mi="0" ci="8" mb="1" cb="3"/><line nr="259" mi="1" ci="0" mb="0" cb="0"/><line nr="262" mi="0" ci="2" mb="0" cb="0"/><line nr="267" mi="0" ci="4" mb="0" cb="0"/><line nr="268" mi="0" ci="1" mb="0" cb="0"/><line nr="272" mi="0" ci="4" mb="0" cb="0"/><line nr="273" mi="0" ci="1" mb="0" cb="0"/><line nr="277" mi="0" ci="5" mb="0" cb="0"/><line nr="278" mi="1" ci="10" mb="1" cb="1"/><line nr="283" mi="0" ci="5" mb="0" cb="0"/><line nr="288" mi="0" ci="6" mb="0" cb="0"/><line nr="289" mi="0" ci="1" mb="0" cb="0"/><line nr="293" mi="0" ci="6" mb="0" cb="0"/><line nr="294" mi="0" ci="1" mb="0" cb="0"/><line nr="298" mi="0" ci="5" mb="0" cb="0"/><line nr="299" mi="0" ci="1" mb="0" cb="0"/><line nr="303" mi="0" ci="4" mb="0" cb="0"/><line nr="304" mi="0" ci="1" mb="0" cb="0"/><line nr="308" mi="0" ci="6" mb="0" cb="0"/><line nr="309" mi="0" ci="1" mb="0" cb="0"/><line nr="313" mi="0" ci="5" mb="0" cb="0"/><line nr="314" mi="0" ci="1" mb="0" cb="0"/><line nr="318" mi="0" ci="6" mb="0" cb="0"/><line nr="319" mi="0" ci="1" mb="0" cb="0"/><line nr="323" mi="0" ci="6" mb="0" cb="0"/><line nr="324" mi="0" ci="1" mb="0" cb="0"/><line nr="327" mi="0" ci="3" mb="0" cb="0"/><line nr="328" mi="0" ci="3" mb="0" cb="0"/><line nr="329" mi="0" ci="13" mb="0" cb="0"/><line nr="332" mi="0" ci="5" mb="0" cb="0"/><line nr="333" mi="0" ci="2" mb="0" cb="0"/><line nr="334" mi="0" ci="2" mb="0" cb="0"/><line nr="335" mi="0" ci="2" mb="0" cb="0"/><line nr="336" mi="0" ci="2" mb="0" cb="0"/><line nr="337" mi="0" ci="1" mb="0" cb="0"/><line nr="338" mi="0" ci="1" mb="0" cb="0"/><line nr="339" mi="0" ci="5" mb="0" cb="0"/><line nr="340" mi="0" ci="3" mb="0" cb="0"/><line nr="343" mi="0" ci="5" mb="0" cb="0"/><line nr="344" mi="0" ci="3" mb="0" cb="0"/><line nr="345" mi="0" ci="6" mb="0" cb="0"/><line nr="346" mi="0" ci="4" mb="0" cb="0"/><line nr="348" mi="0" ci="4" mb="0" cb="0"/><line nr="350" mi="0" ci="2" mb="0" cb="0"/><line nr="351" mi="0" ci="6" mb="0" cb="0"/><line nr="355" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="32" covered="322"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="4" covered="76"/><counter type="COMPLEXITY" missed="6" covered="25"/><counter type="METHOD" missed="3" covered="23"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CloudDurableTestRunner.java"><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="0"/><line nr="54" mi="0" ci="6" mb="0" cb="0"/><line nr="55" mi="0" ci="1" mb="0" cb="0"/><line nr="58" mi="2" ci="0" mb="0" cb="0"/><line nr="59" mi="4" ci="0" mb="0" cb="0"/><line nr="60" mi="2" ci="0" mb="0" cb="0"/><line nr="66" mi="7" ci="0" mb="0" cb="0"/><line nr="72" mi="8" ci="0" mb="0" cb="0"/><line nr="77" mi="2" ci="0" mb="0" cb="0"/><line nr="78" mi="4" ci="0" mb="0" cb="0"/><line nr="86" mi="0" ci="8" mb="0" cb="0"/><line nr="92" mi="0" ci="8" mb="0" cb="0"/><line nr="97" mi="0" ci="2" mb="0" cb="0"/><line nr="98" mi="0" ci="4" mb="0" cb="0"/><line nr="105" mi="19" ci="0" mb="0" cb="0"/><line nr="111" mi="0" ci="19" mb="0" cb="0"/><line nr="117" mi="19" ci="0" mb="0" cb="0"/><line nr="123" mi="0" ci="19" mb="0" cb="0"/><line nr="128" mi="19" ci="0" mb="0" cb="0"/><line nr="134" mi="4" ci="0" mb="0" cb="0"/><line nr="141" mi="5" ci="0" mb="0" cb="0"/><line nr="144" mi="3" ci="0" mb="0" cb="0"/><line nr="145" mi="3" ci="0" mb="0" cb="0"/><line nr="146" mi="2" ci="0" mb="0" cb="0"/><line nr="147" mi="2" ci="0" mb="0" cb="0"/><line nr="148" mi="3" ci="0" mb="0" cb="0"/><line nr="150" mi="5" ci="0" mb="0" cb="0"/><line nr="153" mi="3" ci="0" mb="0" cb="0"/><line nr="154" mi="2" ci="0" mb="2" cb="0"/><line nr="155" mi="5" ci="0" mb="0" cb="0"/><line nr="159" mi="6" ci="0" mb="0" cb="0"/><line nr="160" mi="8" ci="0" mb="0" cb="0"/><line nr="163" mi="4" ci="0" mb="0" cb="0"/><line nr="164" mi="8" ci="0" mb="0" cb="0"/><line nr="165" mi="3" ci="0" mb="0" cb="0"/><line nr="166" mi="2" ci="0" mb="0" cb="0"/><line nr="167" mi="1" ci="0" mb="0" cb="0"/><line nr="168" mi="6" ci="0" mb="0" cb="0"/><line nr="182" mi="5" ci="0" mb="0" cb="0"/><line nr="185" mi="3" ci="0" mb="0" cb="0"/><line nr="186" mi="2" ci="0" mb="0" cb="0"/><line nr="187" mi="2" ci="0" mb="0" cb="0"/><line nr="188" mi="2" ci="0" mb="0" cb="0"/><line nr="189" mi="3" ci="0" mb="0" cb="0"/><line nr="191" mi="5" ci="0" mb="0" cb="0"/><line nr="194" mi="3" ci="0" mb="0" cb="0"/><line nr="195" mi="2" ci="0" mb="2" cb="0"/><line nr="196" mi="5" ci="0" mb="0" cb="0"/><line nr="201" mi="2" ci="0" mb="0" cb="0"/><line nr="203" mi="15" ci="0" mb="0" cb="0"/><line nr="204" mi="1" ci="0" mb="0" cb="0"/><line nr="205" mi="2" ci="0" mb="0" cb="0"/><line nr="206" mi="6" ci="0" mb="0" cb="0"/><line nr="207" mi="1" ci="0" mb="0" cb="0"/><line nr="208" mi="6" ci="0" mb="0" cb="0"/><line nr="214" mi="0" ci="3" mb="1" cb="1"/><line nr="215" mi="0" ci="5" mb="0" cb="0"/><line nr="217" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="231" covered="101"/><counter type="BRANCH" missed="5" covered="1"/><counter type="LINE" missed="47" covered="19"/><counter type="COMPLEXITY" missed="12" covered="6"/><counter type="METHOD" missed="9" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="TestResult.java"><line nr="26" mi="0" ci="7" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="45" mi="0" ci="3" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="4" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="50" mi="0" ci="12" mb="0" cb="0"/><line nr="51" mi="0" ci="4" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="0"/><line nr="54" mi="0" ci="1" mb="0" cb="0"/><line nr="58" mi="0" ci="7" mb="1" cb="3"/><line nr="59" mi="4" ci="0" mb="0" cb="0"/><line nr="60" mi="4" ci="0" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="5" mb="0" cb="0"/><line nr="72" mi="0" ci="4" mb="0" cb="2"/><line nr="73" mi="0" ci="8" mb="0" cb="0"/><line nr="75" mi="0" ci="7" mb="1" cb="3"/><line nr="76" mi="0" ci="10" mb="0" cb="0"/><line nr="77" mi="0" ci="4" mb="1" cb="1"/><line nr="78" mi="0" ci="5" mb="0" cb="0"/><line nr="79" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="2" ci="0" mb="0" cb="0"/><line nr="83" mi="0" ci="7" mb="0" cb="0"/><line nr="88" mi="0" ci="5" mb="0" cb="0"/><line nr="89" mi="0" ci="5" mb="0" cb="0"/><line nr="94" mi="0" ci="4" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="6" mb="0" cb="0"/><line nr="109" mi="3" ci="0" mb="0" cb="0"/><line nr="114" mi="6" ci="0" mb="0" cb="0"/><line nr="115" mi="7" ci="0" mb="2" cb="0"/><line nr="120" mi="8" ci="0" mb="2" cb="0"/><line nr="125" mi="8" ci="0" mb="2" cb="0"/><line nr="130" mi="0" ci="5" mb="0" cb="0"/><line nr="131" mi="0" ci="9" mb="0" cb="2"/><line nr="132" mi="0" ci="1" mb="0" cb="0"/><line nr="137" mi="0" ci="5" mb="0" cb="0"/><line nr="138" mi="0" ci="6" mb="0" cb="0"/><line nr="139" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="42" covered="161"/><counter type="BRANCH" missed="9" covered="11"/><counter type="LINE" missed="8" covered="34"/><counter type="COMPLEXITY" missed="10" covered="19"/><counter type="METHOD" missed="4" covered="15"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="TestOperation.java"><line nr="30" mi="0" ci="5" mb="0" cb="0"/><line nr="31" mi="0" ci="1" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="1" mb="0" cb="0"/><line nr="41" mi="4" ci="0" mb="0" cb="0"/><line nr="46" mi="0" ci="4" mb="0" cb="0"/><line nr="51" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="61" mi="4" ci="0" mb="0" cb="0"/><line nr="66" mi="5" ci="0" mb="0" cb="0"/><line nr="71" mi="4" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="73" mi="9" ci="0" mb="2" cb="0"/><line nr="78" mi="0" ci="4" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="88" mi="4" ci="0" mb="0" cb="0"/><line nr="93" mi="4" ci="0" mb="0" cb="0"/><line nr="98" mi="4" ci="0" mb="0" cb="0"/><line nr="103" mi="4" ci="0" mb="0" cb="0"/><line nr="108" mi="0" ci="5" mb="0" cb="0"/><line nr="113" mi="0" ci="4" mb="0" cb="0"/><line nr="114" mi="0" ci="5" mb="2" cb="2"/><line nr="115" mi="2" ci="0" mb="0" cb="0"/><line nr="117" mi="0" ci="7" mb="0" cb="0"/><line nr="122" mi="0" ci="4" mb="0" cb="0"/><line nr="123" mi="1" ci="6" mb="1" cb="1"/><line nr="128" mi="4" ci="0" mb="0" cb="0"/><line nr="129" mi="11" ci="0" mb="4" cb="0"/><counter type="INSTRUCTION" missed="65" covered="65"/><counter type="BRANCH" missed="9" covered="3"/><counter type="LINE" missed="14" covered="17"/><counter type="COMPLEXITY" missed="16" covered="9"/><counter type="METHOD" missed="10" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="680" covered="649"/><counter type="BRANCH" missed="56" covered="22"/><counter type="LINE" missed="147" covered="146"/><counter type="COMPLEXITY" missed="82" covered="59"/><counter type="METHOD" missed="49" covered="53"/><counter type="CLASS" missed="1" covered="4"/></package><counter type="INSTRUCTION" missed="1684" covered="1733"/><counter type="BRANCH" missed="259" covered="107"/><counter type="LINE" missed="422" covered="415"/><counter type="COMPLEXITY" missed="225" covered="144"/><counter type="METHOD" missed="63" covered="97"/><counter type="CLASS" missed="3" covered="7"/></group><group name="aws-durable-execution-sdk-java-integration-tests"/><group name="aws-durable-execution-sdk-java-examples"><package name="software/amazon/lambda/durable/examples/callback"><class name="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample$FailedSerDes" sourcefilename="WaitForCallbackFailedExample.java"><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="48"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/callback/CallbackExample" sourcefilename="CallbackExample.java"><method name="&lt;init&gt;" desc="()V" line="31"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/ApprovalRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="36"><counter type="INSTRUCTION" missed="6" covered="56"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="74"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Lsoftware/amazon/lambda/durable/DurableCallbackFuture;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Void;" line="56"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)V" line="49"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/ApprovalRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="39"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="6" covered="105"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample" sourcefilename="WaitForCallbackFailedExample.java"><method name="&lt;init&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/ApprovalRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="23"><counter type="INSTRUCTION" missed="6" covered="24"/><counter type="LINE" missed="2" covered="10"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)V" line="27"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="6" covered="42"/><counter type="LINE" missed="2" covered="13"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="CallbackExample.java"><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="8" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="44" mi="6" ci="6" mb="1" cb="1"/><line nr="46" mi="0" ci="5" mb="0" cb="0"/><line nr="48" mi="0" ci="6" mb="0" cb="0"/><line nr="49" mi="0" ci="10" mb="0" cb="0"/><line nr="50" mi="0" ci="1" mb="0" cb="0"/><line nr="52" mi="0" ci="6" mb="0" cb="0"/><line nr="55" mi="0" ci="7" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="9" mb="0" cb="0"/><line nr="61" mi="0" ci="10" mb="0" cb="0"/><line nr="62" mi="0" ci="2" mb="0" cb="0"/><line nr="65" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="71" mi="0" ci="10" mb="0" cb="0"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="105"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitForCallbackFailedExample.java"><line nr="15" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="3" ci="4" mb="0" cb="0"/><line nr="27" mi="0" ci="10" mb="0" cb="0"/><line nr="28" mi="0" ci="5" mb="0" cb="0"/><line nr="30" mi="0" ci="1" mb="0" cb="0"/><line nr="31" mi="0" ci="5" mb="0" cb="0"/><line nr="32" mi="0" ci="1" mb="0" cb="0"/><line nr="33" mi="0" ci="1" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="35" mi="0" ci="1" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="38" mi="0" ci="1" mb="0" cb="0"/><line nr="39" mi="0" ci="7" mb="0" cb="0"/><line nr="40" mi="1" ci="0" mb="0" cb="0"/><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="48" mi="0" ci="5" mb="0" cb="0"/><line nr="49" mi="0" ci="6" mb="1" cb="1"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="52" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="59"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="3" covered="16"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="14" covered="164"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="3" covered="34"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="0" covered="10"/><counter type="CLASS" missed="0" covered="3"/></package><package name="software/amazon/lambda/durable/examples/general"><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample$Output" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="()V" line="41"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V" line="43"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample$1" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample;)V" line="55"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample$3" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample;)V" line="76"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample$2" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample;)V" line="63"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/ErrorHandlingExample" sourcefilename="ErrorHandlingExample.java"><method name="&lt;init&gt;" desc="()V" line="29"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/Object;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="59"><counter type="INSTRUCTION" missed="4" covered="54"/><counter type="LINE" missed="1" covered="17"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="94"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Ljava/lang/Object;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="84"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="71"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="63"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="31"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="4" covered="75"/><counter type="LINE" missed="1" covered="21"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="()V" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample$Output;" line="52"><counter type="INSTRUCTION" missed="0" covered="68"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/util/Map;" line="78"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/util/Map;" line="64"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericTypesExample$Input;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/util/List;" line="56"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="24"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="141"/><counter type="LINE" missed="0" covered="29"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/CustomConfigExample$SnakeCaseSerDes" sourcefilename="CustomConfigExample.java"><method name="&lt;init&gt;" desc="()V" line="113"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serialize" desc="(Ljava/lang/Object;)Ljava/lang/String;" line="120"><counter type="INSTRUCTION" missed="7" covered="5"/><counter type="LINE" missed="2" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="129"><counter type="INSTRUCTION" missed="7" covered="10"/><counter type="LINE" missed="2" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="14" covered="25"/><counter type="LINE" missed="4" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/LoggingExample" sourcefilename="LoggingExample.java"><method name="&lt;init&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="20"><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="30"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="24"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/ErrorHandlingExample$ServiceUnavailableException" sourcefilename="ErrorHandlingExample.java"><method name="&lt;init&gt;" desc="()V" line="39"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="43"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServiceName" desc="()Ljava/lang/String;" line="48"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/CustomConfigExample$CustomData" sourcefilename="CustomConfigExample.java"><method name="&lt;init&gt;" desc="()V" line="96"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V" line="98"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/NoopExample" sourcefilename="NoopExample.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="18"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/examples/general/GenericInputOutputExample" sourcefilename="GenericInputOutputExample.java"><method name="&lt;init&gt;" desc="()V" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/util/Map;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/util/Map;" line="29"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/util/Map;" line="36"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="25"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="71"/><counter type="LINE" missed="0" covered="16"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericTypesExample$Input" sourcefilename="GenericTypesExample.java"><method name="&lt;init&gt;" desc="()V" line="29"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="31"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/GenericInputOutputExample$1" sourcefilename="GenericInputOutputExample.java"><method name="&lt;init&gt;" desc="(Lsoftware/amazon/lambda/durable/examples/general/GenericInputOutputExample;)V" line="34"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/CustomConfigExample" sourcefilename="CustomConfigExample.java"><method name="&lt;init&gt;" desc="()V" line="36"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="41"><counter type="INSTRUCTION" missed="3" covered="50"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="77"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Lsoftware/amazon/lambda/durable/examples/general/CustomConfigExample$CustomData;" line="80"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="78"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/general/CustomPollingExample" sourcefilename="CustomPollingExample.java"><method name="&lt;init&gt;" desc="()V" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="32"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="40"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="46"><counter type="INSTRUCTION" missed="3" covered="7"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="57"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="GenericTypesExample.java"><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="24" mi="0" ci="4" mb="0" cb="0"/><line nr="29" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="2" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="1" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="45" mi="0" ci="3" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="1" mb="0" cb="0"/><line nr="52" mi="0" ci="5" mb="0" cb="0"/><line nr="55" mi="0" ci="17" mb="0" cb="0"/><line nr="56" mi="0" ci="5" mb="0" cb="0"/><line nr="57" mi="0" ci="6" mb="0" cb="0"/><line nr="59" mi="0" ci="6" mb="0" cb="0"/><line nr="62" mi="0" ci="7" mb="0" cb="0"/><line nr="63" mi="0" ci="9" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="0" ci="4" mb="0" cb="0"/><line nr="66" mi="0" ci="6" mb="0" cb="0"/><line nr="67" mi="0" ci="6" mb="0" cb="0"/><line nr="68" mi="0" ci="6" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="71" mi="0" ci="6" mb="0" cb="0"/><line nr="74" mi="0" ci="10" mb="0" cb="0"/><line nr="76" mi="0" ci="6" mb="0" cb="0"/><line nr="78" mi="0" ci="3" mb="0" cb="0"/><line nr="79" mi="0" ci="4" mb="0" cb="0"/><line nr="80" mi="0" ci="7" mb="0" cb="0"/><line nr="81" mi="0" ci="6" mb="0" cb="0"/><line nr="82" mi="0" ci="6" mb="0" cb="0"/><line nr="83" mi="0" ci="2" mb="0" cb="0"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="86" mi="0" ci="1" mb="0" cb="0"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="88" mi="0" ci="6" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="0"/><line nr="91" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="183"/><counter type="LINE" missed="0" covered="40"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="6"/></sourcefile><sourcefile name="LoggingExample.java"><line nr="15" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="11" mb="0" cb="0"/><line nr="23" mi="0" ci="8" mb="0" cb="0"/><line nr="24" mi="0" ci="6" mb="0" cb="0"/><line nr="25" mi="0" ci="4" mb="0" cb="0"/><line nr="29" mi="0" ci="8" mb="0" cb="0"/><line nr="30" mi="0" ci="6" mb="0" cb="0"/><line nr="31" mi="0" ci="4" mb="0" cb="0"/><line nr="34" mi="0" ci="10" mb="0" cb="0"/><line nr="35" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CustomConfigExample.java"><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="49" mi="0" ci="4" mb="0" cb="0"/><line nr="50" mi="3" ci="2" mb="3" cb="1"/><line nr="51" mi="0" ci="2" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="57" mi="0" ci="2" mb="0" cb="0"/><line nr="58" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="5" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="71" mi="0" ci="1" mb="0" cb="0"/><line nr="77" mi="0" ci="7" mb="0" cb="0"/><line nr="80" mi="0" ci="8" mb="0" cb="0"/><line nr="82" mi="0" ci="10" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="3" mb="0" cb="0"/><line nr="101" mi="0" ci="3" mb="0" cb="0"/><line nr="102" mi="0" ci="3" mb="0" cb="0"/><line nr="103" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="2" mb="0" cb="0"/><line nr="114" mi="0" ci="7" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="120" mi="0" ci="5" mb="0" cb="0"/><line nr="121" mi="1" ci="0" mb="0" cb="0"/><line nr="122" mi="6" ci="0" mb="0" cb="0"/><line nr="129" mi="0" ci="10" mb="0" cb="0"/><line nr="130" mi="1" ci="0" mb="0" cb="0"/><line nr="131" mi="6" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="17" covered="121"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="4" covered="35"/><counter type="COMPLEXITY" missed="2" covered="9"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="CustomPollingExample.java"><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="5" mb="0" cb="0"/><line nr="35" mi="0" ci="1" mb="0" cb="0"/><line nr="40" mi="0" ci="10" mb="0" cb="0"/><line nr="43" mi="0" ci="7" mb="0" cb="0"/><line nr="46" mi="0" ci="2" mb="0" cb="0"/><line nr="47" mi="1" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="0" ci="1" mb="0" cb="0"/><line nr="50" mi="0" ci="4" mb="0" cb="0"/><line nr="54" mi="0" ci="5" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="2" mb="0" cb="0"/><line nr="62" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="57"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ErrorHandlingExample.java"><line nr="29" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="4" mb="0" cb="0"/><line nr="39" mi="0" ci="2" mb="0" cb="0"/><line nr="40" mi="0" ci="1" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="45" mi="0" ci="1" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="3" ci="4" mb="0" cb="0"/><line nr="63" mi="0" ci="6" mb="0" cb="0"/><line nr="65" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="1" mb="0" cb="0"/><line nr="67" mi="0" ci="1" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="70" mi="0" ci="7" mb="0" cb="0"/><line nr="71" mi="0" ci="9" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="81" mi="0" ci="8" mb="0" cb="0"/><line nr="84" mi="0" ci="4" mb="0" cb="0"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="86" mi="0" ci="1" mb="0" cb="0"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="88" mi="0" ci="1" mb="0" cb="0"/><line nr="89" mi="0" ci="4" mb="0" cb="0"/><line nr="91" mi="0" ci="2" mb="0" cb="0"/><line nr="94" mi="0" ci="9" mb="0" cb="0"/><line nr="95" mi="0" ci="1" mb="0" cb="0"/><line nr="97" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="4" covered="88"/><counter type="LINE" missed="1" covered="27"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="10"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="GenericInputOutputExample.java"><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="4" mb="0" cb="0"/><line nr="29" mi="0" ci="6" mb="0" cb="0"/><line nr="32" mi="0" ci="10" mb="0" cb="0"/><line nr="34" mi="0" ci="6" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="7" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="40" mi="0" ci="6" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="1" mb="0" cb="0"/><line nr="45" mi="0" ci="1" mb="0" cb="0"/><line nr="46" mi="0" ci="6" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="77"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="NoopExample.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="18" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="31" covered="588"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="9" covered="143"/><counter type="COMPLEXITY" missed="4" covered="45"/><counter type="METHOD" missed="2" covered="45"/><counter type="CLASS" missed="1" covered="15"/></package><package name="software/amazon/lambda/durable/examples/types"><class name="software/amazon/lambda/durable/examples/types/GreetingRequest" sourcefilename="GreetingRequest.java"><method name="&lt;init&gt;" desc="()V" line="8"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="10"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getName" desc="()Ljava/lang/String;" line="15"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setName" desc="(Ljava/lang/String;)V" line="19"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/types/ApprovalRequest" sourcefilename="ApprovalRequest.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;D)V" line="9"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;DLjava/lang/Integer;)V" line="6"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ApprovalRequest.java"><line nr="6" mi="0" ci="12" mb="0" cb="0"/><line nr="9" mi="0" ci="5" mb="0" cb="0"/><line nr="10" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="GreetingRequest.java"><line nr="8" mi="0" ci="3" mb="0" cb="0"/><line nr="10" mi="0" ci="2" mb="0" cb="0"/><line nr="11" mi="0" ci="3" mb="0" cb="0"/><line nr="12" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="8" mb="0" cb="2"/><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="2"/></package><package name="software/amazon/lambda/durable/examples/invoke"><class name="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample" sourcefilename="SimpleInvokeExample.java"><method name="&lt;init&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="20"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="SimpleInvokeExample.java"><line nr="15" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="5" mb="0" cb="0"/><line nr="22" mi="0" ci="4" mb="0" cb="0"/><line nr="25" mi="0" ci="2" mb="0" cb="0"/><line nr="26" mi="0" ci="6" mb="0" cb="0"/><line nr="28" mi="0" ci="4" mb="0" cb="0"/><line nr="31" mi="0" ci="2" mb="0" cb="0"/><line nr="32" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="0" covered="32"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></package><package name="software/amazon/lambda/durable/examples/wait"><class name="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample" sourcefilename="ConcurrentWaitForConditionExample.java"><method name="&lt;init&gt;" desc="()V" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample$Input;Ljava/lang/Integer;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="37"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample$Input;Ljava/lang/Integer;Lsoftware/amazon/lambda/durable/StepContext;)Lsoftware/amazon/lambda/durable/model/WaitForConditionResult;" line="45"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="65"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/wait/WaitForConditionExample" sourcefilename="WaitForConditionExample.java"><method name="&lt;init&gt;" desc="()V" line="20"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/Integer;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/Integer;" line="25"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Lsoftware/amazon/lambda/durable/StepContext;)Lsoftware/amazon/lambda/durable/model/WaitForConditionResult;" line="29"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample" sourcefilename="WaitAtLeastInProcessExample.java"><method name="&lt;init&gt;" desc="()V" line="27"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="40"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="29"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="68" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample" sourcefilename="WaitAtLeastExample.java"><method name="&lt;init&gt;" desc="()V" line="27"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="40"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="29"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="68" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/examples/wait/WaitAsyncExample" sourcefilename="WaitAsyncExample.java"><method name="&lt;init&gt;" desc="()V" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="0" covered="43"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="35"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="50"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/wait/WaitExample" sourcefilename="WaitExample.java"><method name="&lt;init&gt;" desc="()V" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="29"><counter type="INSTRUCTION" missed="42" covered="8"/><counter type="LINE" missed="6" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Ljava/lang/Object;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="55"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$2" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="47"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="38"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="30"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="67" covered="15"/><counter type="LINE" missed="13" covered="3"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="3" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample$Input" sourcefilename="ConcurrentWaitForConditionExample.java"><method name="&lt;init&gt;" desc="(III)V" line="24"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="WaitExample.java"><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="29" mi="0" ci="5" mb="0" cb="0"/><line nr="30" mi="0" ci="7" mb="0" cb="0"/><line nr="33" mi="6" ci="0" mb="0" cb="0"/><line nr="36" mi="7" ci="0" mb="0" cb="0"/><line nr="38" mi="2" ci="0" mb="0" cb="0"/><line nr="39" mi="1" ci="0" mb="0" cb="0"/><line nr="40" mi="5" ci="0" mb="0" cb="0"/><line nr="41" mi="1" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="7" ci="0" mb="0" cb="0"/><line nr="47" mi="6" ci="0" mb="0" cb="0"/><line nr="49" mi="3" ci="0" mb="0" cb="0"/><line nr="52" mi="12" ci="0" mb="0" cb="0"/><line nr="55" mi="12" ci="0" mb="0" cb="0"/><line nr="57" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="67" covered="15"/><counter type="LINE" missed="13" covered="3"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="3" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitForConditionExample.java"><line nr="20" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="8" mb="0" cb="0"/><line nr="29" mi="0" ci="5" mb="0" cb="2"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="7" mb="0" cb="0"/><line nr="36" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitAtLeastInProcessExample.java"><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="4" ci="0" mb="0" cb="0"/><line nr="33" mi="5" ci="0" mb="0" cb="0"/><line nr="36" mi="7" ci="0" mb="0" cb="0"/><line nr="40" mi="3" ci="0" mb="0" cb="0"/><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="4" ci="0" mb="0" cb="0"/><line nr="47" mi="1" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="6" ci="0" mb="0" cb="0"/><line nr="52" mi="2" ci="0" mb="0" cb="0"/><line nr="53" mi="1" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="58" mi="3" ci="0" mb="0" cb="0"/><line nr="59" mi="6" ci="0" mb="0" cb="0"/><line nr="62" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="4" ci="0" mb="0" cb="0"/><line nr="64" mi="4" ci="0" mb="0" cb="0"/><line nr="66" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="68" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ConcurrentWaitForConditionExample.java"><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="24" mi="0" ci="12" mb="0" cb="0"/><line nr="28" mi="0" ci="7" mb="0" cb="0"/><line nr="30" mi="0" ci="7" mb="0" cb="0"/><line nr="32" mi="0" ci="9" mb="0" cb="0"/><line nr="37" mi="0" ci="2" mb="0" cb="0"/><line nr="38" mi="0" ci="2" mb="0" cb="0"/><line nr="39" mi="0" ci="2" mb="0" cb="0"/><line nr="41" mi="0" ci="10" mb="0" cb="0"/><line nr="45" mi="0" ci="5" mb="0" cb="2"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="7" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="77"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="WaitAsyncExample.java"><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="11" mb="0" cb="0"/><line nr="31" mi="0" ci="6" mb="0" cb="0"/><line nr="34" mi="0" ci="5" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="4" mb="0" cb="0"/><line nr="41" mi="0" ci="10" mb="0" cb="0"/><line nr="42" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="50"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="WaitAtLeastExample.java"><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="4" ci="0" mb="0" cb="0"/><line nr="33" mi="5" ci="0" mb="0" cb="0"/><line nr="36" mi="7" ci="0" mb="0" cb="0"/><line nr="40" mi="3" ci="0" mb="0" cb="0"/><line nr="42" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="4" ci="0" mb="0" cb="0"/><line nr="47" mi="1" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="6" ci="0" mb="0" cb="0"/><line nr="52" mi="2" ci="0" mb="0" cb="0"/><line nr="53" mi="1" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="58" mi="3" ci="0" mb="0" cb="0"/><line nr="59" mi="6" ci="0" mb="0" cb="0"/><line nr="62" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="4" ci="0" mb="0" cb="0"/><line nr="64" mi="4" ci="0" mb="0" cb="0"/><line nr="66" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="68" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="203" covered="173"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="55" covered="32"/><counter type="COMPLEXITY" missed="11" covered="16"/><counter type="METHOD" missed="11" covered="14"/><counter type="CLASS" missed="2" covered="5"/></package><package name="software/amazon/lambda/durable/examples/child"><class name="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample$Input" sourcefilename="ManyAsyncChildContextExample.java"><method name="&lt;init&gt;" desc="(II)V" line="27"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/child/ChildContextExample" sourcefilename="ChildContextExample.java"><method name="&lt;init&gt;" desc="()V" line="25"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="29"><counter type="INSTRUCTION" missed="0" covered="72"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$10" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="54"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$9" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="63"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$8" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="61"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$7" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="61"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$6" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="54"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$5" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="44"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$4" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="49"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="44"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="39"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="184"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample$Output" sourcefilename="ManyAsyncChildContextExample.java"><method name="&lt;init&gt;" desc="(JJJ)V" line="29"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample" sourcefilename="ManyAsyncChildContextExample.java"><method name="&lt;init&gt;" desc="()V" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample$Output;" line="33"><counter type="INSTRUCTION" missed="0" covered="120"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="19"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="75"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(JLsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Long;" line="59"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(IILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/Integer;" line="46"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(IILsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Integer;" line="46"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="151"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="25"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ManyAsyncChildContextExample.java"><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="9" mb="0" cb="0"/><line nr="29" mi="0" ci="12" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="15" mb="0" cb="0"/><line nr="41" mi="0" ci="5" mb="0" cb="0"/><line nr="42" mi="0" ci="7" mb="0" cb="2"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="9" mb="0" cb="0"/><line nr="46" mi="0" ci="15" mb="0" cb="0"/><line nr="48" mi="0" ci="4" mb="0" cb="0"/><line nr="51" mi="0" ci="10" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="6" mb="0" cb="0"/><line nr="58" mi="0" ci="8" mb="0" cb="0"/><line nr="59" mi="0" ci="7" mb="0" cb="0"/><line nr="60" mi="0" ci="8" mb="0" cb="0"/><line nr="61" mi="0" ci="11" mb="0" cb="0"/><line nr="64" mi="0" ci="6" mb="0" cb="0"/><line nr="66" mi="0" ci="6" mb="0" cb="0"/><line nr="68" mi="0" ci="9" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="2" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="172"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="27"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="ChildContextExample.java"><line nr="25" mi="0" ci="3" mb="0" cb="0"/><line nr="29" mi="0" ci="3" mb="0" cb="0"/><line nr="30" mi="0" ci="10" mb="0" cb="0"/><line nr="33" mi="0" ci="7" mb="0" cb="0"/><line nr="34" mi="0" ci="11" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="37" mi="0" ci="6" mb="0" cb="0"/><line nr="39" mi="0" ci="11" mb="0" cb="0"/><line nr="43" mi="0" ci="7" mb="0" cb="0"/><line nr="44" mi="0" ci="11" mb="0" cb="0"/><line nr="45" mi="0" ci="6" mb="0" cb="0"/><line nr="47" mi="0" ci="6" mb="0" cb="0"/><line nr="49" mi="0" ci="11" mb="0" cb="0"/><line nr="53" mi="0" ci="7" mb="0" cb="0"/><line nr="54" mi="0" ci="11" mb="0" cb="0"/><line nr="57" mi="0" ci="8" mb="0" cb="0"/><line nr="61" mi="0" ci="11" mb="0" cb="0"/><line nr="63" mi="0" ci="11" mb="0" cb="0"/><line nr="67" mi="0" ci="6" mb="0" cb="0"/><line nr="68" mi="0" ci="16" mb="0" cb="0"/><line nr="71" mi="0" ci="4" mb="0" cb="0"/><line nr="72" mi="0" ci="10" mb="0" cb="0"/><line nr="74" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="184"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="0" covered="356"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="50"/><counter type="COMPLEXITY" missed="0" covered="22"/><counter type="METHOD" missed="0" covered="21"/><counter type="CLASS" missed="0" covered="4"/></package><package name="software/amazon/lambda/durable/examples/parallel"><class name="software/amazon/lambda/durable/examples/parallel/ParallelExample" sourcefilename="ParallelExample.java"><method name="&lt;init&gt;" desc="()V" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/parallel/ParallelExample$Output;" line="36"><counter type="INSTRUCTION" missed="0" covered="96"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="48"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="49"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="121"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Output" sourcefilename="ParallelWithWaitExample.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;II)V" line="33"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample$FailedSerDes" sourcefilename="DeserializationFailedParallelExample.java"><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="71"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelExample$Output" sourcefilename="ParallelExample.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;I)V" line="32"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample" sourcefilename="DeserializationFailedParallelExample.java"><method name="&lt;init&gt;" desc="()V" line="30"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="37"><counter type="INSTRUCTION" missed="13" covered="48"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="11"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="50"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="51"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="20" covered="56"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="5" covered="13"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample" sourcefilename="ParallelFailureToleranceExample.java"><method name="&lt;init&gt;" desc="()V" line="26"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample$Output;" line="35"><counter type="INSTRUCTION" missed="0" covered="121"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="48"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="52"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="150"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="29"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample$Input" sourcefilename="ParallelFailureToleranceExample.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;)V" line="29"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample$Input" sourcefilename="DeserializationFailedParallelExample.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;)V" line="33"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelExample$Input" sourcefilename="ParallelExample.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;)V" line="30"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input" sourcefilename="ParallelWithWaitExample.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="31"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample" sourcefilename="ParallelWithWaitExample.java"><method name="&lt;init&gt;" desc="()V" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Output;" line="37"><counter type="INSTRUCTION" missed="0" covered="91"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$5" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="60"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$4" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="61"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="54"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="55"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="48"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample$Input;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="49"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="148"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample$Output" sourcefilename="ParallelFailureToleranceExample.java"><method name="&lt;init&gt;" desc="(II)V" line="31"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ParallelFailureToleranceExample.java"><line nr="26" mi="0" ci="3" mb="0" cb="0"/><line nr="29" mi="0" ci="12" mb="0" cb="0"/><line nr="31" mi="0" ci="9" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="10" mb="0" cb="0"/><line nr="38" mi="0" ci="9" mb="0" cb="0"/><line nr="39" mi="0" ci="1" mb="0" cb="0"/><line nr="40" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="7" mb="0" cb="0"/><line nr="43" mi="0" ci="5" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="11" mb="0" cb="2"/><line nr="47" mi="0" ci="8" mb="0" cb="0"/><line nr="48" mi="0" ci="9" mb="0" cb="0"/><line nr="52" mi="0" ci="4" mb="0" cb="2"/><line nr="53" mi="0" ci="6" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="2" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="1" mb="0" cb="0"/><line nr="61" mi="0" ci="4" mb="0" cb="0"/><line nr="62" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="0" ci="4" mb="0" cb="0"/><line nr="66" mi="0" ci="8" mb="0" cb="0"/><line nr="68" mi="0" ci="6" mb="0" cb="0"/><line nr="69" mi="0" ci="5" mb="0" cb="0"/><line nr="70" mi="0" ci="8" mb="0" cb="2"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="15" mb="0" cb="0"/><line nr="76" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="171"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="31"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="DeserializationFailedParallelExample.java"><line nr="30" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="6" mb="0" cb="0"/><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="11" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="5" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="6" mb="0" cb="0"/><line nr="50" mi="7" ci="0" mb="0" cb="0"/><line nr="51" mi="0" ci="5" mb="0" cb="0"/><line nr="54" mi="0" ci="6" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="6" ci="0" mb="0" cb="0"/><line nr="59" mi="1" ci="0" mb="0" cb="0"/><line nr="60" mi="2" ci="0" mb="0" cb="0"/><line nr="61" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="5" mb="0" cb="0"/><line nr="64" mi="4" ci="0" mb="2" cb="0"/><line nr="71" mi="0" ci="5" mb="0" cb="0"/><line nr="72" mi="0" ci="6" mb="1" cb="1"/><line nr="73" mi="0" ci="6" mb="0" cb="0"/><line nr="75" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="22" covered="79"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="6" covered="17"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="ParallelWithWaitExample.java"><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="9" mb="0" cb="0"/><line nr="33" mi="0" ci="12" mb="0" cb="0"/><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="10" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="5" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="47" mi="0" ci="9" mb="0" cb="0"/><line nr="48" mi="0" ci="6" mb="0" cb="0"/><line nr="49" mi="0" ci="12" mb="0" cb="0"/><line nr="53" mi="0" ci="9" mb="0" cb="0"/><line nr="54" mi="0" ci="6" mb="0" cb="0"/><line nr="55" mi="0" ci="12" mb="0" cb="0"/><line nr="59" mi="0" ci="9" mb="0" cb="0"/><line nr="60" mi="0" ci="6" mb="0" cb="0"/><line nr="61" mi="0" ci="12" mb="0" cb="0"/><line nr="65" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="0" ci="6" mb="0" cb="0"/><line nr="68" mi="0" ci="11" mb="0" cb="0"/><line nr="70" mi="0" ci="6" mb="0" cb="0"/><line nr="71" mi="0" ci="9" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="169"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="10"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="ParallelExample.java"><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="30" mi="0" ci="6" mb="0" cb="0"/><line nr="32" mi="0" ci="9" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="11" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="6" mb="0" cb="0"/><line nr="43" mi="0" ci="5" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="10" mb="0" cb="2"/><line nr="47" mi="0" ci="8" mb="0" cb="0"/><line nr="48" mi="0" ci="10" mb="0" cb="0"/><line nr="49" mi="0" ci="12" mb="0" cb="0"/><line nr="51" mi="0" ci="4" mb="0" cb="0"/><line nr="52" mi="0" ci="1" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="0" ci="8" mb="0" cb="0"/><line nr="58" mi="0" ci="6" mb="0" cb="0"/><line nr="59" mi="0" ci="6" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="6" mb="0" cb="0"/><line nr="64" mi="0" ci="7" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="136"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><counter type="INSTRUCTION" missed="22" covered="555"/><counter type="BRANCH" missed="3" covered="9"/><counter type="LINE" missed="6" covered="94"/><counter type="COMPLEXITY" missed="3" covered="31"/><counter type="METHOD" missed="1" covered="27"/><counter type="CLASS" missed="0" covered="12"/></package><package name="software/amazon/lambda/durable/examples/map"><class name="software/amazon/lambda/durable/examples/map/ComplexMapExample" sourcefilename="ComplexMapExample.java"><method name="&lt;init&gt;" desc="()V" line="23"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/Integer;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="27"><counter type="INSTRUCTION" missed="0" covered="81"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$5" desc="(Ljava/lang/String;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="55"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$4" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="55"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$3" desc="(Ljava/lang/String;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="40"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(I)Ljava/lang/String;" line="30"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="130"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample" sourcefilename="DeserializationFailedMapExample.java"><method name="&lt;init&gt;" desc="()V" line="27"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="31"><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="42"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="43"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="9" covered="71"/><counter type="LINE" missed="1" covered="10"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample$FailedSerDes" sourcefilename="DeserializationFailedMapExample.java"><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="59"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/map/SimpleMapExample" sourcefilename="SimpleMapExample.java"><method name="&lt;init&gt;" desc="()V" line="22"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="26"><counter type="INSTRUCTION" missed="0" covered="50"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;ILsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="33"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="65"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="SimpleMapExample.java"><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="26" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="10" mb="0" cb="0"/><line nr="29" mi="0" ci="7" mb="0" cb="0"/><line nr="32" mi="0" ci="7" mb="0" cb="0"/><line nr="33" mi="0" ci="12" mb="0" cb="0"/><line nr="36" mi="0" ci="18" mb="0" cb="0"/><line nr="38" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="65"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DeserializationFailedMapExample.java"><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="10" mb="0" cb="0"/><line nr="34" mi="0" ci="7" mb="0" cb="0"/><line nr="37" mi="0" ci="7" mb="0" cb="0"/><line nr="42" mi="9" ci="0" mb="0" cb="0"/><line nr="43" mi="0" ci="6" mb="0" cb="0"/><line nr="46" mi="0" ci="6" mb="0" cb="0"/><line nr="48" mi="0" ci="18" mb="0" cb="0"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="52" mi="0" ci="5" mb="0" cb="0"/><line nr="59" mi="0" ci="5" mb="0" cb="0"/><line nr="60" mi="0" ci="6" mb="0" cb="2"/><line nr="61" mi="0" ci="6" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="9" covered="90"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="14"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ComplexMapExample.java"><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="10" mb="0" cb="0"/><line nr="30" mi="0" ci="15" mb="0" cb="0"/><line nr="32" mi="0" ci="7" mb="0" cb="0"/><line nr="34" mi="0" ci="12" mb="0" cb="0"/><line nr="37" mi="0" ci="7" mb="0" cb="0"/><line nr="40" mi="0" ci="12" mb="0" cb="0"/><line nr="43" mi="0" ci="5" mb="0" cb="0"/><line nr="46" mi="0" ci="7" mb="0" cb="0"/><line nr="47" mi="0" ci="2" mb="0" cb="0"/><line nr="48" mi="0" ci="2" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="51" mi="0" ci="8" mb="0" cb="0"/><line nr="55" mi="0" ci="12" mb="0" cb="0"/><line nr="58" mi="0" ci="8" mb="0" cb="0"/><line nr="60" mi="0" ci="16" mb="0" cb="0"/><line nr="61" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="130"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="9" covered="285"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="39"/><counter type="COMPLEXITY" missed="1" covered="17"/><counter type="METHOD" missed="1" covered="16"/><counter type="CLASS" missed="0" covered="4"/></package><package name="software/amazon/lambda/durable/examples/step"><class name="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample$Input" sourcefilename="ManyAsyncStepsExample.java"><method name="&lt;init&gt;" desc="(II)V" line="26"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample$Output" sourcefilename="ManyAsyncStepsExample.java"><method name="&lt;init&gt;" desc="(JJJ)V" line="28"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/DeserializationFailureExample$FailedSerDes" sourcefilename="DeserializationFailureExample.java"><method name="deserialize" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/TypeToken;)Ljava/lang/Object;" line="40"><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="17"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/SimpleStepExample" sourcefilename="SimpleStepExample.java"><method name="&lt;init&gt;" desc="()V" line="20"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="25"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="31"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/examples/types/GreetingRequest;Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="25"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/RetryExample" sourcefilename="RetryExample.java"><method name="&lt;init&gt;" desc="()V" line="25"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/Object;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="34"><counter type="INSTRUCTION" missed="22" covered="36"/><counter type="LINE" missed="5" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$2" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="58"><counter type="INSTRUCTION" missed="27" covered="43"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="4" covered="7"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Void;" line="43"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/time/Instant;" line="34"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="27"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="49" covered="93"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="9" covered="22"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/RetryInProcessExample" sourcefilename="RetryInProcessExample.java"><method name="&lt;init&gt;" desc="()V" line="27"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="handleRequest" desc="(Ljava/lang/Object;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="35"><counter type="INSTRUCTION" missed="47" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$1" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="67"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="42"><counter type="INSTRUCTION" missed="33" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="29"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="114" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="34" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="software/amazon/lambda/durable/examples/step/DeserializationFailureExample" sourcefilename="DeserializationFailureExample.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Ljava/lang/String;Lsoftware/amazon/lambda/durable/DurableContext;)Ljava/lang/String;" line="19"><counter type="INSTRUCTION" missed="8" covered="27"/><counter type="LINE" missed="2" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(Lsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/String;" line="23"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="35"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample" sourcefilename="ManyAsyncStepsExample.java"><method name="&lt;init&gt;" desc="()V" line="24"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="handleRequest" desc="(Lsoftware/amazon/lambda/durable/examples/step/ManyAsyncStepsExample$Input;Lsoftware/amazon/lambda/durable/DurableContext;)Lsoftware/amazon/lambda/durable/examples/step/ManyAsyncStepsExample$Output;" line="32"><counter type="INSTRUCTION" missed="0" covered="120"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createConfiguration" desc="()Lsoftware/amazon/lambda/durable/DurableConfig;" line="70"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$1" desc="(JLsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Long;" line="55"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$handleRequest$0" desc="(IILsoftware/amazon/lambda/durable/StepContext;)Ljava/lang/Integer;" line="43"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="141"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="RetryExample.java"><line nr="25" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="4" mb="0" cb="0"/><line nr="34" mi="0" ci="10" mb="0" cb="0"/><line nr="35" mi="0" ci="5" mb="0" cb="0"/><line nr="39" mi="2" ci="4" mb="0" cb="0"/><line nr="43" mi="0" ci="5" mb="0" cb="0"/><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="1" mb="0" cb="0"/><line nr="47" mi="0" ci="1" mb="0" cb="0"/><line nr="48" mi="0" ci="1" mb="0" cb="0"/><line nr="49" mi="0" ci="5" mb="0" cb="0"/><line nr="50" mi="1" ci="0" mb="0" cb="0"/><line nr="53" mi="3" ci="5" mb="0" cb="0"/><line nr="58" mi="0" ci="2" mb="0" cb="0"/><line nr="59" mi="0" ci="5" mb="0" cb="0"/><line nr="61" mi="0" ci="6" mb="1" cb="1"/><line nr="62" mi="0" ci="8" mb="0" cb="0"/><line nr="64" mi="0" ci="14" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="5" mb="0" cb="0"/><line nr="68" mi="8" ci="0" mb="0" cb="0"/><line nr="70" mi="14" ci="0" mb="0" cb="0"/><line nr="71" mi="3" ci="0" mb="0" cb="0"/><line nr="72" mi="2" ci="0" mb="0" cb="0"/><line nr="75" mi="0" ci="2" mb="0" cb="0"/><line nr="76" mi="0" ci="1" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="79" mi="4" ci="0" mb="0" cb="0"/><line nr="82" mi="6" ci="0" mb="0" cb="0"/><line nr="84" mi="3" ci="0" mb="0" cb="0"/><line nr="85" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="49" covered="93"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="9" covered="22"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ManyAsyncStepsExample.java"><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="26" mi="0" ci="9" mb="0" cb="0"/><line nr="28" mi="0" ci="12" mb="0" cb="0"/><line nr="32" mi="0" ci="2" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="15" mb="0" cb="0"/><line nr="40" mi="0" ci="5" mb="0" cb="0"/><line nr="41" mi="0" ci="7" mb="0" cb="2"/><line nr="42" mi="0" ci="2" mb="0" cb="0"/><line nr="43" mi="0" ci="14" mb="0" cb="0"/><line nr="44" mi="0" ci="4" mb="0" cb="0"/><line nr="47" mi="0" ci="10" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="6" mb="0" cb="0"/><line nr="54" mi="0" ci="8" mb="0" cb="0"/><line nr="55" mi="0" ci="7" mb="0" cb="0"/><line nr="56" mi="0" ci="19" mb="0" cb="0"/><line nr="59" mi="0" ci="6" mb="0" cb="0"/><line nr="61" mi="0" ci="6" mb="0" cb="0"/><line nr="63" mi="0" ci="9" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="0" cb="0"/><line nr="72" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="162"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="25"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="SimpleStepExample.java"><line nr="20" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="12" mb="0" cb="0"/><line nr="28" mi="0" ci="11" mb="0" cb="0"/><line nr="31" mi="0" ci="11" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DeserializationFailureExample.java"><line nr="14" mi="0" ci="3" mb="0" cb="0"/><line nr="19" mi="2" ci="4" mb="0" cb="0"/><line nr="23" mi="0" ci="5" mb="0" cb="0"/><line nr="25" mi="0" ci="6" mb="0" cb="0"/><line nr="26" mi="0" ci="1" mb="0" cb="0"/><line nr="27" mi="0" ci="2" mb="0" cb="0"/><line nr="28" mi="0" ci="1" mb="0" cb="0"/><line nr="29" mi="0" ci="6" mb="0" cb="0"/><line nr="30" mi="0" ci="7" mb="0" cb="0"/><line nr="31" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="5" ci="0" mb="0" cb="0"/><line nr="40" mi="0" ci="5" mb="0" cb="0"/><line nr="41" mi="0" ci="6" mb="1" cb="1"/><line nr="42" mi="0" ci="6" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="10" covered="52"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="3" covered="12"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="RetryInProcessExample.java"><line nr="27" mi="2" ci="0" mb="0" cb="0"/><line nr="29" mi="4" ci="0" mb="0" cb="0"/><line nr="31" mi="7" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="0" cb="0"/><line nr="38" mi="7" ci="0" mb="0" cb="0"/><line nr="42" mi="4" ci="0" mb="0" cb="0"/><line nr="43" mi="4" ci="0" mb="0" cb="0"/><line nr="45" mi="1" ci="0" mb="0" cb="0"/><line nr="46" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="3" ci="0" mb="2" cb="0"/><line nr="50" mi="3" ci="0" mb="0" cb="0"/><line nr="51" mi="3" ci="0" mb="0" cb="0"/><line nr="52" mi="5" ci="0" mb="0" cb="0"/><line nr="54" mi="3" ci="0" mb="0" cb="0"/><line nr="55" mi="3" ci="0" mb="0" cb="0"/><line nr="56" mi="2" ci="0" mb="0" cb="0"/><line nr="59" mi="3" ci="0" mb="0" cb="0"/><line nr="60" mi="2" ci="0" mb="0" cb="0"/><line nr="61" mi="5" ci="0" mb="0" cb="0"/><line nr="62" mi="1" ci="0" mb="0" cb="0"/><line nr="66" mi="7" ci="0" mb="0" cb="0"/><line nr="67" mi="3" ci="0" mb="0" cb="0"/><line nr="69" mi="2" ci="0" mb="0" cb="0"/><line nr="71" mi="2" ci="0" mb="0" cb="0"/><line nr="72" mi="3" ci="0" mb="0" cb="0"/><line nr="73" mi="2" ci="0" mb="0" cb="0"/><line nr="74" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="2" ci="0" mb="0" cb="0"/><line nr="76" mi="6" ci="0" mb="0" cb="0"/><line nr="82" mi="3" ci="0" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="86" mi="4" ci="0" mb="0" cb="0"/><line nr="88" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="114" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="34" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="173" covered="346"/><counter type="BRANCH" missed="4" covered="4"/><counter type="LINE" missed="46" covered="64"/><counter type="COMPLEXITY" missed="8" covered="23"/><counter type="METHOD" missed="5" covered="22"/><counter type="CLASS" missed="1" covered="7"/></package><counter type="INSTRUCTION" missed="452" covered="2538"/><counter type="BRANCH" missed="12" covered="26"/><counter type="LINE" missed="120" covered="474"/><counter type="COMPLEXITY" missed="29" covered="173"/><counter type="METHOD" missed="20" covered="163"/><counter type="CLASS" missed="4" covered="53"/></group><counter type="INSTRUCTION" missed="2950" covered="12574"/><counter type="BRANCH" missed="373" covered="740"/><counter type="LINE" missed="736" covered="2906"/><counter type="COMPLEXITY" missed="404" covered="1156"/><counter type="METHOD" missed="134" covered="833"/><counter type="CLASS" missed="8" covered="172"/></report>
    \ No newline at end of file
    diff --git a/docs/adr/001-threaded-handler-execution.md b/docs/adr/001-threaded-handler-execution.md
    deleted file mode 100644
    index be5cf8739..000000000
    --- a/docs/adr/001-threaded-handler-execution.md
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -# ADR-001: Threaded Handler Execution
    -
    -**Status:** Accepted  
    -**Date:** 2025-12-29
    -
    -## Context
    -
    -Durable functions need to suspend execution immediately at suspension points (wait, callback, retry). The system must return `PENDING` status to Lambda without waiting for the handler to complete.
    -
    -```java
    -public String handleRequest(MyInput input, DurableContext context) {
    -    var result1 = context.step("step1", stepCtx -> "first");
    -    context.wait(null, Duration.ofHours(1)); // Should suspend HERE
    -    var result2 = context.step("step2", stepCtx -> "second"); // Don't wait for this
    -    return result1 + result2;
    -}
    -```
    -
    -## Decision
    -
    -Run the handler in a background thread and race two futures:
    -
    -```java
    -var handlerFuture = CompletableFuture.supplyAsync(stepCtx -> handler.apply(input, context), executor);
    -var suspendFuture = executionManager.getSuspendExecutionFuture();
    -
    -CompletableFuture.anyOf(handlerFuture, suspendFuture).join();
    -
    -if (suspendFuture.isDone()) {
    -    return DurableExecutionOutput.pending();
    -}
    -```
    -
    -## Alternatives Considered
    -
    -### Exception-Based Control Flow
    -```java
    -try {
    -    O result = handler.apply(input, context);
    -    return DurableExecutionOutput.success(result);
    -} catch (SuspendExecutionException e) {
    -    return DurableExecutionOutput.pending();
    -}
    -```
    -
    -**Rejected because:**
    -1. Users can catch and suppress the exception
    -2. Requires two-level exception handling (operation wants suspend vs. ExecutionManager confirms suspend)
    -3. Exceptions for control flow is an anti-pattern
    -
    -## Consequences
    -
    -**Positive:**
    -- Immediate suspension without waiting for handler completion
    -- Clean separation: suspension decision is in ExecutionManager, not scattered in operations
    -- Users cannot accidentally suppress suspension
    -
    -**Negative:**
    -- More complex threading model
    -- Requires thread tracking in ExecutionManager
    diff --git a/docs/adr/002-phaser-based-coordination.md b/docs/adr/002-phaser-based-coordination.md
    deleted file mode 100644
    index 8d419a14f..000000000
    --- a/docs/adr/002-phaser-based-coordination.md
    +++ /dev/null
    @@ -1,196 +0,0 @@
    -# ADR-002: Phaser-Based Operation Coordination
    -
    -**Status:** Superseded by ADR-003 CompletableFuture-Based Operation Coordination
    -**Date:** 2025-12-29
    -
    -
    -## Context
    -
    -The SDK uses a unified suspension mechanism: when `activeThreads.isEmpty()`, execution suspends. Thread counting handles simple cases, but complex scenarios require sophisticated coordination.
    -
    -### Simple Case: Direct Suspension
    -```java
    -context.wait(null, Duration.ofMinutes(5)); // Root deregisters β†’ immediate suspension
    -```
    -
    -### Complex Case: Blocking on Retrying Operations
    -```java
    -var future1 = context.stepAsync("step1", stepCtx -> failsAndRetries());
    -var result = context.step("step2", stepCtx -> future1.get() + "-processed");
    -```
    -
    -**Problem:** Simple thread counting fails because step2's thread would stay registered while blocked on `future1.get()`, preventing suspension during step1's retry delay.
    -
    -**Required coordination:** When step1 retries, step2's thread must:
    -1. Deregister (to allow suspension during retry delay)
    -2. Block until step1 completes or suspends for another retry
    -3. Re-register when step1 finishes or when resuming from suspension
    -4. Ensure step1's result is checkpointed before proceeding
    -
    -**Additional scenarios requiring coordination:**
    -- Nested blocking: Multiple threads blocking on each other's results
    -- Future operations: `runInChildContext` with multiple child threads
    -- Race conditions: Ensuring checkpoint completion before thread lifecycle changes
    -
    -## Decision
    -
    -Use Java `Phaser` for checkpoint-driven operation coordination.
    -### Implementation
    -
    -```java
    -// Operation execution doesn't signal completion directly
    -T result = function.get();
    -executionManager.sendOperationUpdate(successUpdate); // Async checkpoint
    -// Phaser stays in Phase 0 (RUNNING)
    -
    -// ExecutionManager advances phaser AFTER checkpoint succeeds
    -private void onCheckpointComplete(String newToken, List<Operation> ops) {
    -    if (isTerminalStatus(op.status())) {
    -        phaser.arriveAndAwaitAdvance(); // Phase 0β†’1: Unblock waiters
    -        phaser.arriveAndAwaitAdvance(); // Phase 1β†’2: Allow step deregistration
    -    }
    -}
    -```
    -
    -**Usage patterns:**
    -- **Steps:** Always use phasers - `get()` blocks until ExecutionManager advances phaser after checkpoint
    -- **Waits:** Usually suspend before reaching phasers - only use them when other threads keep execution alive
    -
    -### Two-Phase Completion Protocol
    -
    -- **Phase 0 (RUNNING):** Operation executing, waiters blocked 
    -- **Phase 1 (COMPLETING):** Waiters unblock and re-register as active
    -- **Phase 2 (DONE):** Step threads deregister safely
    -
    -#### Single Step Coordination
    -```mermaid
    -sequenceDiagram
    -    participant Root as Root Thread
    -    participant Step as Step Thread
    -    participant Ph as Phaser
    -    participant EM as ExecutionManager
    -
    -    Note over Ph: Phase 0 (RUNNING)
    -    
    -    Root->>Ph: register()
    -    Root->>EM: deregisterActiveThread("Root")
    -    Root->>Ph: arriveAndAwaitAdvance()
    -    Note over Root: BLOCKED
    -    
    -    Step->>Step: execute user function
    -    Step->>EM: checkpoint SUCCESS
    -    EM->>Ph: arriveAndAwaitAdvance()
    -    Note over Ph: Phase 1 (COMPLETING)
    -    
    -    Note over Root: UNBLOCKED
    -    Root->>EM: registerActiveThread("Root")
    -    Root->>Ph: arriveAndDeregister()
    -    
    -    EM->>Ph: arriveAndAwaitAdvance()
    -    Note over Ph: Phase 2 (DONE)
    -    Step->>EM: deregisterActiveThread("step-thread")
    -```
    -
    -**Why two phases?** Prevents race condition:
    -```java
    -// Without two phases - RACE:
    -1. Root thread deregisters, blocks on phaser
    -2. Step completes, checkpoints
    -3. Step thread deregisters β†’ suspension triggered  
    -4. Root thread tries to re-register β†’ TOO LATE
    -
    -// With two phases - SAFE:
    -1. Root thread deregisters, blocks on Phase 0
    -2. Step completes, checkpoints
    -3. ExecutionManager advances Phase 0β†’1 β†’ Root thread unblocks and re-registers
    -4. ExecutionManager advances Phase 1β†’2 β†’ Step thread deregisters safely
    -```
    -
    -#### Complex Blocking Scenario
    -```mermaid
    -sequenceDiagram
    -    participant Step2 as Step2 Thread
    -    participant Step1 as Step1 Thread
    -    participant Ph as Phaser
    -    participant EM as ExecutionManager
    -
    -    Note over Ph: Phase 0 (RUNNING)
    -    
    -    Step2->>Ph: register()
    -    Step2->>EM: deregisterActiveThread("step2")
    -    Step2->>Ph: arriveAndAwaitAdvance()
    -    Note over Step2: BLOCKED
    -    
    -    Step1->>Step1: execute user function
    -    Step1->>EM: checkpoint SUCCESS
    -    EM->>Ph: arriveAndAwaitAdvance()
    -    Note over Ph: Phase 1 (COMPLETING)
    -    
    -    Note over Step2: UNBLOCKED
    -    Step2->>EM: registerActiveThread("step2")
    -    Step2->>Ph: arriveAndDeregister()
    -    
    -    EM->>Ph: arriveAndAwaitAdvance()
    -    Note over Ph: Phase 2 (DONE)
    -    Step1->>EM: deregisterActiveThread("step1")
    -```
    -### Phaser Creation and Lifecycle
    -```java
    -// ExecutionManager.startPhaser() - creates phaser for each operation
    -var phaser = new Phaser(1);
    -openPhasers.put(operationId, phaser);
    -```
    -
    -Each durable operation (step, wait) gets its own phaser to coordinate completion.
    -
    -### When Phasers Are Actually Used
    -
    -**Steps:** Always use phasers for coordination
    -```java
    -// StepOperation.get() - blocks waiting for advancement
    -phaser.arriveAndAwaitAdvance(); // Blocks until ExecutionManager advances it
    -
    -// ExecutionManager.onCheckpointComplete() - advances after checkpoint succeeds
    -phaser.arriveAndAwaitAdvance(); // Phase 0β†’1: Unblock waiters
    -phaser.arriveAndAwaitAdvance(); // Phase 1β†’2: Allow step deregistration
    -```
    -
    -**Waits:** Usually suspend before reaching phaser logic
    -```java
    -// WaitOperation.get() - normal case
    -executionManager.deregisterActiveThread("Root"); // ← Suspension happens here
    -// SuspendExecutionException thrown - phaser code never reached
    -
    -// Only when other threads active:
    -phaser.arriveAndAwaitAdvance(); // Phase 0β†’1 (immediate advancement)
    -```
    -
    -**Key difference:** Steps have background threads keeping execution alive, so they reach phaser coordination. Waits have no background threads, so they usually suspend immediately when root thread deregisters.
    -
    -**Advanced cases:** When other threads keep execution alive, both waits and step retries use in-process polling to detect backend completion and advance phasers accordingly.
    -
    -
    -## Alternatives Considered
    -
    -### Simple Thread Signaling
    -**Rejected:** Fails on blocking scenarios. If thread A blocks on thread B's result while B is retrying, A remains registered but inactive, preventing suspension.
    -
    -### CompletableFuture
    -**Rejected:** 
    -- Checkpoint timing issues (complete before/after checkpoint)
    -- Single-completion model doesn't handle retry attempts
    -- No integration with thread lifecycle management
    -
    -## Consequences
    -
    -**Enables:**
    -- Correct suspension on blocking scenarios
    -- Checkpoint-driven completion ensuring durability
    -- Support for future complex operations requiring multi-party coordination
    -- Unified `get()` logic for both new and replayed operations
    -
    -**Cost:**
    -- Phaser complexity vs simpler alternatives
    -- Two-phase protocol cognitive overhead
    -
    -The phaser approach is architected to support the full spectrum of durable operations, ensuring the SDK can handle complex coordination patterns without architectural changes.
    diff --git a/docs/adr/003-completable-future-based-coordination.md b/docs/adr/003-completable-future-based-coordination.md
    deleted file mode 100644
    index 4b571eaf6..000000000
    --- a/docs/adr/003-completable-future-based-coordination.md
    +++ /dev/null
    @@ -1,177 +0,0 @@
    -# ADR-003: CompletableFuture-Based Operation Coordination
    -
    -**Status:** Review
    -**Date:** 2026-02-18
    -
    -## Context
    -
    -Currently, the SDK employs a Phaser-based mechanism for coordinating operations. The design is detailed in [ADR-002: Phaser-Based Operation Coordination](002-phaser-based-coordination.md).
    -
    -With this design, we can:
    - 
    -- Register a thread when it begins and deregister it when it completes;
    -- Block `DurableFuture::get()` calls until the operation completes;
    -- Suspend execution when no registered thread exists.
    -
    -However, this design has a few issues:
    -
    -- We allow the Phasers to advance over predefined phase ranges (0 - RUNNING, 1 - COMPLETE). If we received duplicate completion updates from local runner or backend API, the phase could be advanced to 2, 3, and so on.
    -- We assume that there is only one party during operation replay, and two parties when receiving an operation state from checkpoint API. We call Phaser `arriveAndAwaitAdvance` once or twice based on this assumption, but it could be incorrect. In complex scenarios, this could lead to a deadlock (not enough arrive calls) or exceeding the phase range (too many arrive calls).
    -- The Phaser has higher complexity and cognitive overhead compared to other synchronization mechanisms.
    -
    -## Decision
    -
    -We will implement operation coordination using `CompletableFuture`.,
    -
    -### Threads
    -
    -Each piece of user code (e.g. the main Lambda function body, a step body, a child context body) runs in its own user thread from the user thread pool. 
    -Execution manager tracks active running user threads. 
    -When a new step or a new child context is created, a new thread is created and registered in execution manager. 
    -When the step or the child context completes, the corresponding thread is deregistered from execution manager.
    -When the user code is blocked on `DurableFuture::get()` or another synchronous durable operation (e.g., `wait()`), the caller thread is deregistered from execution manager. 
    -When there is no registered thread in execution manager, the durable execution is suspended.
    -
    -A special SDK thread is created and managed by the SDK to make checkpoint API requests.
    -
    -### CompletableFuture
    -
    -The `CompletableFuture` is used to manage the completion of operations. It allows us to track the progress of operations and handle their completion in a more flexible and readable manner.
    -
    -Each durable operation has a `CompletableFuture` field.
    -This field is used by user threads and the SDK thread communicate the completion of operations. 
    -
    -For example, when a context executes a step, the communication occurs as follows
    -
    -```mermaid
    -sequenceDiagram
    -    participant Context as Context Thread
    -    participant Future as CompletableFuture
    -    participant EM as Execution Manager
    -    participant SDK as SDK Thread
    -    participant Step as Step Thread
    -
    -    Note over Context: calling context.stepAsync()
    -    Context->>Context: create StepOperation 
    -    Context->>Future: create CompletableFuture
    -    Note over EM: Step Thread lifecycle in EM
    -    Context->>EM: register Step Thread
    -    activate Step
    -    activate EM
    -    Context->>+Step: create Step Thread
    -    Note over Context: calling step.get()
    -    Context->>Future: check if CompletableFuture is done
    -    alt is not done
    -    Context->>EM: deregister Context Thread
    -    Context->>Future: attach a callback to register context thread when CompletableFuture is done
    -    Context->>Future: wait for CompletableFuture to complete
    -    Note over Context: (BLOCKED)
    -    end
    -
    -    Note over Step: executing Step logic
    -    Step->>Step: execute user function
    -    Step->>+SDK: checkpoint SUCCESS
    -    SDK->>SDK: call checkpoint API
    -    SDK->>SDK: handle checkpoint response
    -    SDK->>+Future: complete CompletableFuture
    -    alt callback attached
    -    Future->>EM: register Context Thread
    -    Future->>Context: unblock Context Thread
    -    Note over Context: (UNBLOCKED)
    -    end
    -    Future-->>-SDK: CompletableFuture completed
    -    SDK-->>-Step: checkpoint done
    -    Context->>Context: retrieve the step result
    -    Step->>EM: deregister Step thread
    -    deactivate Step
    -    deactivate EM
    -
    -```
    -
    -|   | Context Thread                                                                                              | Step Thread                                                         | SDK Thread                                                                                                                                                                    |
    -|---|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    -| 1 | create StepOperation (a CompletableFuture is created)                                                       | (not created)                                                       | (idle)                                                                                                                                                                        |
    -| 2 | checkpoint START event (synchronously or asynchronously)                                                    | (not created)                                                       | call checkpoint API                                                                                                                                                           |
    -| 3 | create and register the Step thread                                                                         | execute user code for the step                                      | (idle)                                                                                                                                                                        |
    -| 4 | call `DurableFuture::get()`, deregister the context thread and wait for the `CompletableFuture` to complete | (continue)                                                          | (idle)                                                                                                                                                                        |
    -| 5 | (blocked)                                                                                                   | checkpoint the step result and wait for checkpoint call to complete | call checkpoint API, and handle the API response. If it is a terminal response, complete the step operation CompletableFuture, register and unblock the context thread.       |
    -| 6 | retrieve the result of the step                                                                             | deregister and terminate the Step thread                            | (idle)                                                                                                                                                                        |        
    -
    -If the step code completes quickly, an alternative scenario could happen as follows
    -
    -```mermaid
    -sequenceDiagram
    -    participant Context as Context Thread
    -    participant Future as CompletableFuture
    -    participant EM as Execution Manager
    -    participant SDK as SDK Thread
    -    participant Step as Step Thread
    -
    -    Note over Context: calling context.stepAsync()
    -    Context->>Context: create StepOperation 
    -    Context->>Future: create CompletableFuture
    -    Note over EM: Step Thread lifecycle in EM
    -    Context->>EM: register Step Thread
    -    activate EM
    -    Context->>Step: create Step Thread
    -    activate Step
    -    Step->>Step: execute user function
    -    Step->>EM: checkpoint SUCCESS
    -    EM->>SDK: checkpoint SUCCESS
    -    activate SDK
    -    SDK->>SDK: call checkpoint API
    -    SDK->>SDK: handle checkpoint response
    -    SDK->>+Future: complete CompletableFuture
    -    Note over Future: no callback attached
    -    Future-->>-SDK: CompletableFuture completed
    -    SDK-->>Step: checkpoint done
    -    deactivate SDK
    -    Step->>EM: deregister Step thread
    -    deactivate EM
    -    deactivate Step
    -
    -    Note over Context: calling step.get()
    -    Context->>Future: check if CompletableFuture is done
    -    alt is done
    -    Context->>Context: retrieve the step result
    -    end
    -
    -
    -```
    -
    -|   | Context Thread                                                                              | Step Thread                                                         | SDK Thread                                                                                                                     |
    -|---|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|
    -| 1 | create StepOperation (a CompletableFuture is created)                                       | (not created)                                                       | (idle)                                                                                                                         |
    -| 2 | checkpoint START event (synchronously or asynchronously)                                    | (not created)                                                       | call checkpoint API                                                                                                            |
    -| 3 | create and register the Step thread                                                         | execute user code for the step and complete quickly                 | (idle)                                                                                                                         |
    -| 5 | (do something else or just get starved)                                                     | checkpoint the step result and wait for checkpoint call to complete | call checkpoint API, and handle the API response. If it is a terminal response, complete the Step operation CompletableFuture. |
    -| 4 | call `DurableFuture::get()` (non-blocking because `CompletableFuture` is already completed) | deregister and terminate the Step thread                            | (idle)                                                                                                                         |
    -| 6 | retrieve the result of the step                                                             | (ended)                                                             | (idle)                                                                                                                         |        
    -
    -The following two key mechanisms make `CompletableFuture` based solution work properly.
    -
    -- Strict ordering of `register and unblock the context thread` and `deregister and terminate the Step thread`.
    -  - When a step completes, it calls checkpoint API to checkpoint the result and wait for the checkpoint call to complete.
    -  - SDK thread receives the checkpoint request, makes the API call, and processes the API response.
    -    - If the response contains a terminal operation state (it should for a succeeded or failed step), it will send the response to the `StepOperation` to complete `CompletableFuture`. When completing the future, the attached completion stages will be executed synchronously, which will register any context threads that are waiting for the result of the step.
    -  - When SDK thread completes the API request and registers all waiting threads, the step thread continues to deregister itself from execution manager.
    -- Synchronized access to `CompletableFuture`.
    -  - When a context thread calls `DurableFuture::get()`, it checks if `CompletableFuture` is done. 
    -    1. If the future is done, `get()` will return the operation result. Otherwise, the context thread will
    -    2. deregister itself from execution manager;
    -    3. attach a completion stage to `CompletableFuture` that will re-register the context thread when later the future is completed;
    -    4. wait for `CompletableFuture` to complete.
    -  - Meantime, `CompletableFuture` can be completed by SDK thread when handling the checkpoint API responses. 
    -    - A race condition will occur if this happens when the context thread is between the step `a` and `c`.
    -    - To prevent the race condition, all the mutating access to `CompletableFuture` either to complete the future or to attach a completion stage is synchronized.
    -
    -## Consequences
    -
    -Enables:
    -- Support for complex scenarios which were not supported by Phaser
    -- Reduced implementation complexity and improved readability
    -- `CompletableFuture` based implementation of `DurableFuture::allOf` and `DurableFuture::anyOf`
    -
    -Cost:
    -- Synchronized access to `CompletableFuture`
    -- Obscured ordering of thread registration/deregistration
    \ No newline at end of file
    diff --git a/docs/adr/004-child-context-execution.md b/docs/adr/004-child-context-execution.md
    deleted file mode 100644
    index cadd24751..000000000
    --- a/docs/adr/004-child-context-execution.md
    +++ /dev/null
    @@ -1,98 +0,0 @@
    -# ADR-004: Child Context Execution (`runInChildContext`)
    -
    -**Status:** Accepted  
    -**Date:** 2026-02-16
    -
    -## Context
    -
    -The TypeScript and Python durable execution SDKs support child contexts via `OperationType.CONTEXT`, enabling isolated sub-workflows with independent operation counters and checkpoint logs. The Java SDK needs the same capability to support fan-out/fan-in, parallel processing branches, and hierarchical workflow composition.
    -
    -```java
    -var futureA = ctx.runInChildContextAsync("branch-a", String.class, child -> {
    -    child.step("validate", Void.class, stepCtx -> validate(order));
    -    child.wait(null, Duration.ofMinutes(5));
    -    return child.step("charge", String.class, stepCtx -> charge(order));
    -});
    -var futureB = ctx.runInChildContextAsync("branch-b", String.class, child -> { ... });
    -var results = DurableFuture.allOf(futureA, futureB);
    -```
    -
    -## Decision
    -
    -### Child context as a CONTEXT operation
    -
    -A child context is a `CONTEXT` operation in the checkpoint log with a three-phase lifecycle:
    -
    -1. **START** (fire-and-forget) β€” marks the child context as in-progress
    -2. Inner operations checkpoint with `parentId` set to the child context's operation ID
    -3. **SUCCEED** or **FAIL** (blocking) β€” finalizes the child context
    -
    -```
    -Op ID | Parent ID | Type    | Action  | Payload
    -------|-----------|---------|---------|--------
    -3     | null      | CONTEXT | START   | β€”
    -3-1   | 3         | STEP    | START   | β€”
    -3-1   | 3         | STEP    | SUCCEED | "result"
    -3     | null      | CONTEXT | SUCCEED | "final result"
    -```
    -
    -### Operation ID prefixing
    -
    -Inner operation IDs are prefixed with the parent context's operation ID using `-` as separator (e.g., `"3-1"`, `"3-2"`). This matches the JavaScript SDK's `stepPrefix` convention and ensures global uniqueness β€” the backend validates type consistency by operation ID alone.
    -
    -- Root context: `"1"`, `"2"`, `"3"`
    -- Child context `"1"`: `"1-1"`, `"1-2"`, `"1-3"`
    -- Nested child context `"1-2"`: `"1-2-1"`, `"1-2-2"`
    -
    -### Per-context replay state
    -
    -A global `executionMode` doesn't work for child contexts β€” a child may be replaying while the parent is already executing. Each `DurableContext` tracks its own replay state via an `isReplaying` field, initialized by checking `ExecutionManager.hasOperationsForContext(contextId)`.
    -
    -### Thread model
    -
    -Child context user code runs in a separate thread (same pattern as `StepOperation`):
    -- `registerActiveThread` before the executor runs (on parent thread)
    -- `setCurrentContext` inside the executor thread
    -- `deregisterActiveThread` in the finally block
    -- `SuspendExecutionException` caught in finally (suspension already signaled)
    -
    -### Large result handling
    -
    -Results < 256KB are checkpointed directly. Results β‰₯ 256KB trigger the `ReplayChildren` flow:
    -- SUCCEED checkpoint with empty payload + `ContextOptions { replayChildren: true }`
    -- On replay, child context re-executes; inner operations replay from cache
    -- No new SUCCEED checkpoint during reconstruction
    -
    -### Replay behavior
    -
    -| Cached status | Behavior |
    -|---------------|----------|
    -| SUCCEEDED | Return cached result |
    -| SUCCEEDED + `replayChildren=true` | Re-execute child to reconstruct large result |
    -| FAILED | Re-throw cached error |
    -| STARTED | Re-execute (interrupted mid-flight) |
    -
    -## Alternatives Considered
    -
    -### Flatten child operations into root checkpoint log
    -**Rejected:** Breaks operation ID uniqueness. A CONTEXT op with ID `"1"` and an inner STEP with ID `"1"` (different `parentId`) would trigger `InvalidParameterValueException` from the backend.
    -
    -### Global replay state with context tracking
    -**Rejected:** Adds complexity to `ExecutionManager` for something that's naturally per-context. The TypeScript SDK uses per-entity replay state for the same reason.
    -
    -## Consequences
    -
    -**Positive:**
    -- Aligns with TypeScript and Python SDK implementations
    -- Enables fan-out/fan-in, parallel branches, hierarchical workflows
    -- Clean separation: each child context is self-contained
    -- Nested child contexts chain naturally via ID prefixing
    -
    -**Negative:**
    -- More threads to coordinate
    -- Per-context replay state adds complexity vs. global mode
    -
    -**Deferred:**
    -- Orphan detection in `CheckpointBatcher`
    -- `summaryGenerator` for large-result observability
    -- Higher-level `map`/`parallel` combinators (different `OperationSubType` values, same `CONTEXT` operation type)
    diff --git a/docs/advanced/configuration.md b/docs/advanced/configuration.md
    deleted file mode 100644
    index abf2dfbde..000000000
    --- a/docs/advanced/configuration.md
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -## Configuration
    -
    -Customize SDK behavior by overriding `createConfiguration()` in your handler:
    -
    -```java
    -public class OrderProcessor extends DurableHandler<Order, OrderResult> {
    -
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        // Custom Lambda client with connection pooling
    -        var lambdaClientBuilder = LambdaClient.builder()
    -            .httpClient(ApacheHttpClient.builder()
    -                .maxConnections(50)
    -                .connectionTimeout(Duration.ofSeconds(30))
    -                .build());
    -
    -        return DurableConfig.builder()
    -            .withLambdaClientBuilder(lambdaClientBuilder)
    -            .withSerDes(new MyCustomSerDes())           // Custom serialization
    -            .withExecutorService(Executors.newFixedThreadPool(10))  // Custom thread pool
    -            .withLoggerConfig(LoggerConfig.withReplayLogging())     // Enable replay logs
    -            .build();
    -    }
    -
    -    @Override
    -    protected OrderResult handleRequest(Order order, DurableContext ctx) {
    -        // Your handler logic
    -    }
    -}
    -```
    -
    -| Option                      | Description                             | Default                       |
    -|-----------------------------|-----------------------------------------|-------------------------------|
    -| `withLambdaClientBuilder()` | Custom AWS Lambda client                | Auto-configured Lambda client |
    -| `withSerDes()`              | Serializer for step results             | Jackson with default settings |
    -| `withExecutorService()`     | Thread pool for user-defined operations | Cached daemon thread pool     |
    -| `withLoggerConfig()`        | Logger behavior configuration           | Suppress logs during replay   |
    -
    -The `withExecutorService()` option configures the thread pool used for running user-defined operations. Internal SDK coordination (checkpoint batching, polling) runs on an SDK-managed thread pool.
    \ No newline at end of file
    diff --git a/docs/advanced/error-handling.md b/docs/advanced/error-handling.md
    deleted file mode 100644
    index 4285f9e17..000000000
    --- a/docs/advanced/error-handling.md
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -## Error Handling
    -
    -The SDK throws specific exceptions to help you handle different failure scenarios:
    -
    -```
    -DurableExecutionException              - General durable exception
    -β”œβ”€β”€ NonDeterministicExecutionException - Code changed between original execution and replay. Fix code to maintain determinism; don't change step order/names.
    -β”œβ”€β”€ SerDesException                    - Serialization and deserialization exception.
    -└── DurableOperationException          - General operation exception
    -    β”œβ”€β”€ StepException                  - General Step exception
    -    β”‚   β”œβ”€β”€ StepFailedException        - Step exhausted all retry attempts.Catch to implement fallback logic or let execution fail.
    -    β”‚   └── StepInterruptedException   - `AT_MOST_ONCE` step was interrupted before completion. Implement manual recovery (check if operation completed externally)
    -    β”œβ”€β”€ InvokeException                - General chained invocation exception
    -    β”‚   β”œβ”€β”€ InvokeFailedException      - Chained invocation failed. Handle the error or propagate failure.
    -    β”‚   β”œβ”€β”€ InvokeTimedoutException    - Chained invocation timed out. Handle the error or propagate failure.
    -    β”‚   └── InvokeStoppedException     - Chained invocation stopped. Handle the error or propagate failure.
    -    β”œβ”€β”€ CallbackException              - General callback exception
    -    β”‚   β”œβ”€β”€ CallbackFailedException    - External system sent an error response to the callback. Handle the error or propagate failure
    -    β”‚   └── CallbackTimeoutException   - Callback exceeded its timeout duration. Handle the error or propagate the failure
    -    β”œβ”€β”€ WaitForConditionFailedException- waitForCondition exceeded max polling attempts or failed. Catch to implement fallback logic.
    -    └── ChildContextFailedException    - Child context failed and the original exception could not be reconstructed
    -```
    -
    -```java
    -try {
    -    var result = ctx.step("charge-payment", Payment.class,
    -        stepCtx -> paymentService.charge(amount),
    -        StepConfig.builder()
    -            .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -            .build());
    -} catch (StepInterruptedException e) {
    -    // Step started but we don't know if it completed
    -    // Check payment status externally before retrying
    -    var status = paymentService.checkStatus(transactionId);
    -    if (status.isPending()) {
    -        throw e; // Let it fail - manual intervention needed
    -    }
    -}
    -```
    \ No newline at end of file
    diff --git a/docs/advanced/logging.md b/docs/advanced/logging.md
    deleted file mode 100644
    index fe4762235..000000000
    --- a/docs/advanced/logging.md
    +++ /dev/null
    @@ -1,62 +0,0 @@
    -## Logging
    -
    -The SDK provides a `DurableLogger` via `ctx.getLogger()` that automatically includes execution metadata in log entries and suppresses duplicate logs during replay.
    -
    -### Basic Usage
    -
    -```java
    -@Override
    -protected OrderResult handleRequest(Order order, DurableContext ctx) {
    -    ctx.getLogger().info("Processing order: {}", order.getId());
    -    
    -    var result = ctx.step("validate", String.class, stepCtx -> {
    -        stepCtx.getLogger().debug("Validating order details");
    -        return validate(order);
    -    });
    -    
    -    ctx.getLogger().info("Order processed successfully");
    -    return new OrderResult(result);
    -}
    -```
    -
    -### Log Output
    -
    -Logs include execution context via MDC (works with any SLF4J-compatible logging framework):
    -
    -```json
    -{
    -  "timestamp": "2024-01-15T10:30:00.000Z",
    -  "level": "INFO",
    -  "message": "Processing order: ORD-123",
    -  "durableExecutionArn": "arn:aws:lambda:us-east-1:123456789:function:order-processor:exec-abc123",
    -  "requestId": "a1b2c3d4-5678-90ab-cdef-example12345",
    -  "operationId": "1",
    -  "operationName": "validate"
    -}
    -```
    -
    -### Replay Behavior
    -
    -By default, logs are suppressed during replay to avoid duplicates:
    -
    -```
    -First Invocation:
    -  [INFO] Processing order: ORD-123          βœ“ Logged
    -  [DEBUG] Validating order details          βœ“ Logged
    -
    -Replay (after wait):
    -  [INFO] Processing order: ORD-123          βœ— Suppressed (already logged)
    -  [DEBUG] Validating order details          βœ— Suppressed
    -  [INFO] Continuing after wait              βœ“ Logged (new code path)
    -```
    -
    -To log during replay (e.g., for debugging):
    -
    -```java
    -@Override
    -protected DurableConfig createConfiguration() {
    -    return DurableConfig.builder()
    -        .withLoggerConfig(LoggerConfig.withReplayLogging())
    -        .build();
    -}
    -```
    \ No newline at end of file
    diff --git a/docs/advanced/testing.md b/docs/advanced/testing.md
    deleted file mode 100644
    index bb2491458..000000000
    --- a/docs/advanced/testing.md
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -## Testing
    -
    -The SDK includes testing utilities for both local development and cloud-based integration testing.
    -
    -### Installation
    -
    -```xml
    -<dependency>
    -    <groupId>software.amazon.lambda.durable</groupId>
    -    <artifactId>aws-durable-execution-sdk-java-testing</artifactId>
    -    <version>VERSION</version>
    -    <scope>test</scope>
    -</dependency>
    -```
    -
    -### Local Testing
    -
    -```java
    -@Test
    -void testOrderProcessing() {
    -    var handler = new OrderProcessor();
    -    var runner = LocalDurableTestRunner.create(Order.class, handler);
    -
    -    var result = runner.runUntilComplete(new Order("order-123", items));
    -
    -    assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    assertNotNull(result.getResult(OrderResult.class).getTrackingNumber());
    -}
    -```
    -
    -You can also pass a lambda directly instead of a handler instance:
    -
    -```java
    -var runner = LocalDurableTestRunner.create(Order.class, (order, ctx) -> {
    -    var result = ctx.step("process", String.class, stepCtx -> "done");
    -    return new OrderResult(order.getId(), result);
    -});
    -```
    -
    -### Inspecting Operations
    -
    -```java
    -var result = runner.runUntilComplete(input);
    -
    -// Verify specific step completed
    -var paymentOp = result.getOperation("process-payment");
    -assertNotNull(paymentOp);
    -assertEquals(OperationStatus.SUCCEEDED, paymentOp.getStatus());
    -
    -// Get step result
    -var paymentResult = paymentOp.getStepResult(Payment.class);
    -assertNotNull(paymentResult.getTransactionId());
    -
    -// Inspect all operations
    -List<TestOperation> succeeded = result.getSucceededOperations();
    -List<TestOperation> failed = result.getFailedOperations();
    -```
    -
    -### Controlling Time in Tests
    -
    -By default, `runUntilComplete()` skips wait durations. For testing time-dependent logic, disable this:
    -
    -```java
    -var runner = LocalDurableTestRunner.create(Order.class, handler)
    -    .withSkipTime(false);  // Don't auto-advance time
    -
    -var result = runner.run(input);
    -assertEquals(ExecutionStatus.PENDING, result.getStatus());  // Blocked on wait
    -
    -runner.advanceTime();  // Manually advance past the wait
    -result = runner.run(input);
    -assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -```
    -
    -### Cloud Testing
    -
    -Test against deployed Lambda functions:
    -
    -```java
    -var runner = CloudDurableTestRunner.create(
    -    "arn:aws:lambda:us-east-1:123456789012:function:order-processor:$LATEST",
    -    Order.class,
    -    OrderResult.class);
    -
    -var result = runner.run(new Order("order-123", items));
    -assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -```
    \ No newline at end of file
    diff --git a/docs/core/callbacks.md b/docs/core/callbacks.md
    deleted file mode 100644
    index cab6dc305..000000000
    --- a/docs/core/callbacks.md
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -## createCallback() – Wait for External Events
    -
    -Callbacks suspend execution until an external system sends a result. Use this for human approvals, webhooks, or any event-driven workflow.
    -
    -```java
    -// Create a callback and get the ID to share with external systems
    -DurableCallbackFuture<String> callback = ctx.createCallback("approval", String.class);
    -
    -// Send the callback ID to an external system within a step
    -ctx.step("send-notification", String.class, stepCtx -> {
    -    notificationService.sendApprovalRequest(callback.callbackId(), requestDetails);
    -    return "notification-sent";
    -});
    -
    -// Suspend until the external system calls back with a result
    -String approvalResult = callback.get();
    -```
    -
    -The external system completes the callback by calling the Lambda Durable Functions API with the callback ID and result payload.
    -
    -#### waitForCallback() #### 
    -
    -`waitForCallback` simplifies callback handling by combining callback creation and submission in one operation. The SDK creates the callback, executes your submitter function with the callback ID, and waits for the result.
    -
    -```java
    -ctx.waitForCallback("send-notification", String.class, (callbackId, stepCtx) -> {
    -    notificationService.sendApprovalRequest(callbackId, requestDetails);
    -})
    -```
    -
    -#### Callback Configuration
    -
    -Configure timeouts and serialization to handle cases where callbacks are never completed or need custom deserialization:
    -
    -```java
    -var config = CallbackConfig.builder()
    -    .timeout(Duration.ofHours(24))        // Max time to wait for callback
    -    .heartbeatTimeout(Duration.ofHours(1)) // Max time between heartbeats
    -    .serDes(new CustomSerDes())           // Custom serialization/deserialization
    -    .build();
    -
    -var callback = ctx.createCallback("approval", String.class, config);
    -
    -var waitForCallbackConfig = WaitForCallbackConfig.builder()
    -    .callbackConfig(config)
    -    .stepConfig(StepConfig.builder().retryStrategy(...).build())
    -    .build();
    -ctx.waitForCallback("approval", String.class, callbackId -> sendApprovalRequest(callbackId), waitForCallbackConfig);
    -```
    -
    -| Option | Description |
    -|--------|-------------|
    -| `timeout()` | Maximum duration to wait for the callback to complete |
    -| `heartbeatTimeout()` | Maximum duration between heartbeat signals from the external system |
    -| `serDes()` | Custom SerDes for deserializing callback results (e.g., encryption, custom formats) |
    -
    -#### Callback Exceptions
    -
    -| Exception | When Thrown |
    -|-----------|-------------|
    -| `CallbackTimeoutException` | Callback exceeded its timeout duration |
    -| `CallbackFailedException` | External system sent an error response |
    -
    -```java
    -try {
    -    var result = callback.get();
    -} catch (CallbackTimeoutException e) {
    -    // Callback timed out - implement fallback logic
    -} catch (CallbackFailedException e) {
    -    // External system reported an error
    -}
    -```
    \ No newline at end of file
    diff --git a/docs/core/child-contexts.md b/docs/core/child-contexts.md
    deleted file mode 100644
    index 7c96a00f2..000000000
    --- a/docs/core/child-contexts.md
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -## runInChildContext() – Isolated Execution Contexts
    -
    -Child contexts run an isolated stream of work with their own operation counter and checkpoint log. They support the full range of durable operations β€” `step`, `wait`, `invoke`, `createCallback`, and nested child contexts.
    -
    -```java
    -// Sync: blocks until the child context completes
    -var result = ctx.runInChildContext("validate-order", String.class, child -> {
    -    var data = child.step("fetch", String.class, stepCtx -> fetchData());
    -    child.wait(null, Duration.ofMinutes(5));
    -    return child.step("validate", String.class, stepCtx -> validate(data));
    -});
    -
    -// Async: returns a DurableFuture for concurrent execution
    -var futureA = ctx.runInChildContextAsync("branch-a", String.class, child -> {
    -    return child.step("work-a", String.class, stepCtx -> doWorkA());
    -});
    -var futureB = ctx.runInChildContextAsync("branch-b", String.class, child -> {
    -    return child.step("work-b", String.class, stepCtx -> doWorkB());
    -});
    -
    -// Wait for all child contexts to complete
    -var results = DurableFuture.allOf(futureA, futureB);
    -```
    \ No newline at end of file
    diff --git a/docs/core/invoke.md b/docs/core/invoke.md
    deleted file mode 100644
    index 73dfe3d95..000000000
    --- a/docs/core/invoke.md
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -## invoke() - Invoke another Lambda function
    -
    -
    -```java
    -// Basic invoke
    -var result = ctx.invoke("invoke-function", 
    -				"function-name",
    -				"\"payload\"",
    -				Result.class, 
    -				InvokeConfig.builder()
    -						.payloadSerDes(...)  // payload serializer
    -						.resultSerDes(...)   // result deserializer
    -						.timeout(Duration.of(...))  // wait timeout
    -						.tenantId(...)       // Lambda tenantId
    -						.build()
    -		);
    -				
    -```
    \ No newline at end of file
    diff --git a/docs/core/map.md b/docs/core/map.md
    deleted file mode 100644
    index 544838d17..000000000
    --- a/docs/core/map.md
    +++ /dev/null
    @@ -1,177 +0,0 @@
    -## map() – Data-Driven Concurrent Execution
    -
    -`map()` applies a function to each item in a collection concurrently, with each item running in its own child context. Results are collected into a `MapResult<T>` that maintains input order.
    -
    -```java
    -// Basic map: process items concurrently
    -var items = List.of("order-1", "order-2", "order-3");
    -var result = ctx.map("process-orders", items, OrderResult.class, (orderId, index, childCtx) -> {
    -    return childCtx.step("fetch-" + index, OrderResult.class, 
    -        stepCtx -> orderService.process(orderId));
    -});
    -
    -// Results maintain input order
    -OrderResult first = result.getResult(0);   // result for "order-1"
    -OrderResult second = result.getResult(1);  // result for "order-2"
    -assertTrue(result.allSucceeded());
    -```
    -
    -Each item's function receives its own `DurableContext`, so you can use any durable operation (`step()`, `wait()`, `invoke()`, etc.) inside the map function.
    -
    -### mapAsync() – Non-Blocking Map
    -
    -`mapAsync()` starts the map operation without blocking, returning a `DurableFuture<MapResult<T>>`:
    -
    -```java
    -var future = ctx.mapAsync("process-orders", items, OrderResult.class, (orderId, index, childCtx) -> {
    -    return childCtx.step("process-" + index, OrderResult.class, stepCtx -> process(orderId));
    -});
    -
    -// Do other work while map runs...
    -var otherResult = ctx.step("other-work", String.class, stepCtx -> doOtherWork());
    -
    -// Block when you need the results
    -MapResult<OrderResult> result = future.get();
    -```
    -
    -### MapResult
    -
    -`MapResult<T>` holds ordered results from the map operation. Each item is represented as a `MapResultItem<T>` containing its status, result, and error:
    -
    -| Method | Description |
    -|--------|-------------|
    -| `getResult(i)` | Result at index `i`, or `null` if that item failed |
    -| `getError(i)` | `MapError` at index `i`, or `null` if that item succeeded |
    -| `getItem(i)` | The `MapResultItem` at index `i` with status, result, and error |
    -| `allSucceeded()` | `true` if every item succeeded |
    -| `size()` | Number of items in the result |
    -| `items()` | All result items as an unmodifiable list |
    -| `results()` | All results as an unmodifiable list (nulls for failed items) |
    -| `succeeded()` | Only the non-null (successful) results |
    -| `failed()` | Only the non-null `MapError`s |
    -| `completionReason()` | Why the operation completed (`ALL_COMPLETED`, `MIN_SUCCESSFUL_REACHED`, `FAILURE_TOLERANCE_EXCEEDED`) |
    -
    -### MapResultItem
    -
    -Each `MapResultItem<T>` contains:
    -
    -| Field | Description |
    -|-------|-------------|
    -| `status()` | `SUCCEEDED`, `FAILED`, or `NOT_STARTED` |
    -| `result()` | The result value, or `null` if failed/not started |
    -| `error()` | The error details as `MapError`, or `null` if succeeded/not started |
    -
    -### MapError
    -
    -Failed items store error details as `MapError`, a serializable record that survives checkpoint-and-replay cycles:
    -
    -| Field | Description |
    -|-------|-------------|
    -| `errorType()` | Fully qualified exception class name (e.g., `java.lang.RuntimeException`) |
    -| `errorMessage()` | The exception message |
    -| `stackTrace()` | Stack trace frames as a list of strings, or `null` |
    -
    -### Error Isolation
    -
    -One item's failure does not prevent other items from completing. Failed items are captured in the `MapResult` at their corresponding index:
    -
    -```java
    -var result = ctx.map("risky-work", items, String.class, (item, index, childCtx) -> {
    -    if (item.equals("bad")) throw new RuntimeException("failed");
    -    return item.toUpperCase();
    -});
    -
    -assertFalse(result.allSucceeded());
    -assertNotNull(result.getError(1));    // the failed item
    -assertEquals("A", result.getResult(0)); // other items still succeed
    -```
    -
    -### MapConfig
    -
    -Configure concurrency limits and completion criteria with `MapConfig`:
    -
    -```java
    -var config = MapConfig.builder()
    -    .maxConcurrency(5)                                    // at most 5 items run at once
    -    .completionConfig(CompletionConfig.allCompleted())    // default: run all items
    -    .build();
    -
    -var result = ctx.map("process-orders", items, OrderResult.class, 
    -    (orderId, index, childCtx) -> process(orderId, childCtx), config);
    -```
    -
    -`MapConfig` also supports a custom `serDes` for serialization via `.serDes(customSerDes)`. By default, the context's serializer is used. `maxConcurrency` must be at least 1 if set.
    -
    -#### Concurrency Limiting
    -
    -`maxConcurrency` controls how many items execute concurrently. When set, items beyond the limit are queued and started as earlier items complete. Default is `null` (unlimited).
    -
    -```java
    -// Sequential execution: one item at a time
    -var sequential = MapConfig.builder().maxConcurrency(1).build();
    -
    -// Limited concurrency
    -var limited = MapConfig.builder().maxConcurrency(3).build();
    -```
    -
    -#### CompletionConfig
    -
    -`CompletionConfig` controls when the map operation stops starting new items:
    -
    -| Factory Method | Behavior |
    -|----------------|----------|
    -| `allCompleted()` (default) | All items run regardless of failures |
    -| `allSuccessful()` | Stop if any item fails (zero failures tolerated) |
    -| `firstSuccessful()` | Stop after the first item succeeds |
    -| `minSuccessful(n)` | Stop after `n` items succeed |
    -| `toleratedFailureCount(n)` | Stop after more than `n` failures |
    -| `toleratedFailurePercentage(p)` | Stop when failure rate exceeds `p` (0.0–1.0) |
    -
    -```java
    -// Stop after 2 successes
    -var config = MapConfig.builder()
    -    .maxConcurrency(1)
    -    .completionConfig(CompletionConfig.minSuccessful(2))
    -    .build();
    -
    -var result = ctx.map("find-two", items, String.class, fn, config);
    -assertEquals(CompletionReason.MIN_SUCCESSFUL_REACHED, result.completionReason());
    -```
    -
    -When early termination triggers, items that were never started have `NOT_STARTED` status with `null` for both result and error in the `MapResult`.
    -
    -### Checkpoint-and-Replay
    -
    -Map operations are fully durable. On replay after interruption:
    -
    -- Completed items return cached results without re-execution
    -- Incomplete items resume from their last checkpoint
    -- Items that never started execute fresh
    -
    -Small results (< 256KB) are checkpointed directly. Large results are reconstructed from individual child context checkpoints on replay.
    -
    -### Input Collection Requirements
    -
    -The input collection must have deterministic iteration order. `List`, `LinkedList`, and `TreeSet` are accepted. `HashSet` and unordered map views are rejected with `IllegalArgumentException`.
    -
    -```java
    -// OK
    -ctx.map("work", List.of("a", "b"), String.class, fn);
    -ctx.map("work", new ArrayList<>(items), String.class, fn);
    -
    -// Throws IllegalArgumentException
    -ctx.map("work", new HashSet<>(items), String.class, fn);
    -```
    -
    -### MapFunction Interface
    -
    -The function passed to `map()` is a `MapFunction<I, O>`:
    -
    -```java
    -@FunctionalInterface
    -public interface MapFunction<I, O> {
    -    O apply(I item, int index, DurableContext context);
    -}
    -```
    -
    -The `index` parameter is the zero-based position of the item in the input collection, useful for naming operations or correlating results.
    diff --git a/docs/core/parallel.md b/docs/core/parallel.md
    deleted file mode 100644
    index 509b69548..000000000
    --- a/docs/core/parallel.md
    +++ /dev/null
    @@ -1,143 +0,0 @@
    -# Parallel Operations Design Plan
    -
    -## Overview
    -
    -Add parallel execution capability to the AWS Lambda Durable Execution SDK, allowing multiple branches to run concurrently within a single durable function execution.
    -
    -## API Design
    -
    -### User Interface
    -
    -```java
    -try (var parallelContext = ctx.parallel(ParallelConfig.builder().build())) {
    -    DurableFuture<Boolean> task1 = parallelContext.branch("validate", Boolean.class, branchContext -> validate());
    -    DurableFuture<String> task2 = parallelContext.branch("process", String.class, branchContext -> process());
    -    parallelContext.join(); // Wait for completion based on config
    -    
    -    // Access results
    -    Boolean validated = task1.get();
    -    String processed = task2.get();
    -}
    -```
    -
    -### Core Components
    -
    -#### 1. ParallelConfig
    -Configuration object controlling parallel execution behavior:
    -
    -```java
    -ParallelConfig config = ParallelConfig.builder()
    -    .maxConcurrency(5)           // Max branches running simultaneously
    -    .minSuccessful(3)            // Minimum successful branches required (-1 = all)
    -    .toleratedFailureCount(2)    // Max failures before stopping execution
    -    .build();
    -```
    -
    -**Configuration Rules:**
    -- `maxConcurrency`: Controls resource usage, prevents overwhelming the system
    -- `minSuccessful`: Enables "best effort" scenarios where not all branches need to succeed
    -- `toleratedFailureCount`: Fail-fast behavior when too many branches fail
    -
    -#### 2. ParallelContext
    -Manages the lifecycle of parallel branches:
    -
    -```java
    -public class ParallelContext implements AutoCloseable {
    -    // Create branches
    -    public <T> DurableFuture<T> branch(String name, Class<T> resultType, Function<DurableContext, T> func);
    -    public <T> DurableFuture<T> branch(String name, TypeToken<T> resultType, Function<DurableContext, T> func);
    -    
    -    // Wait for completion
    -    public void join();
    -    
    -    // AutoCloseable ensures join() is called
    -    public void close();
    -}
    -```
    -
    -#### 3. DurableContext Integration
    -Add single method to existing `DurableContext`:
    -
    -```java
    -public ParallelContext parallel(ParallelConfig config);
    -```
    -
    -## Implementation Strategy
    -
    -### 1. Leverage Existing Child Context Infrastructure
    -
    -Each parallel branch will be implemented as a `ChildContextOperation`:
    -- **Isolation**: Each branch has its own checkpoint log
    -- **Replay Safety**: Branches replay independently
    -- **Error Handling**: Branch failures don't affect other branches directly
    -
    -### 2. Execution Flow
    -
    -1. **Branch Registration**: `branch()` calls create `ChildContextOperation` instances but don't execute immediately
    -2. **Execution Start**: `join()` triggers execution of branches respecting `maxConcurrency`
    -3. **Concurrency Control**: Use a queue to manage pending branches when `maxConcurrency` is reached
    -4. **Completion Logic**: Monitor success/failure counts against configuration thresholds
    -5. **Result Collection**: Return results via `DurableFuture` instances
    -
    -
    -### 4. Error Handling Strategy
    -
    -**Branch-Level Failures:**
    -- Individual branch failures are captured in their respective `DurableFuture`
    -- Don't immediately fail the entire parallel operation
    -- Count towards `failureCount` for threshold checking
    -
    -**Parallel-Level Failures:**
    -- Exceed `toleratedFailureCount`: Stop starting new branches, wait for running ones
    -- Insufficient `minSuccessful`: Throw `ParallelExecutionException` after all branches complete
    -- Configuration validation errors: Fail immediately
    -
    -## Key Design Decisions
    -
    -### 1. Build on Child Contexts
    -- **Pros**: Reuses existing isolation and checkpointing logic
    -- **Cons**: Each branch has overhead of a separate child context
    -- **Decision**: Acceptable trade-off for clean isolation and replay safety
    -
    -### 2. Eager vs Lazy Execution
    -- **Chosen**: Lazy execution (branches start only on `join()`)
    -- **Rationale**: Allows all branches to be registered before execution starts, enabling better concurrency planning
    -
    -### 3. AutoCloseable Pattern
    -- **Purpose**: Ensures `join()` is called even if user forgets
    -- **Behavior**: If `close()` is called before `join()`, automatically call `join()`
    -
    -### 4. Configuration Validation
    -- Validate at `ParallelConfig.build()` time:
    -  - `maxConcurrency > 0`
    -  - `minSuccessful >= -1` (where -1 means "all")
    -  - `toleratedFailureCount >= 0`
    -  - `minSuccessful + toleratedFailureCount <= total branches` (validated at runtime)
    -
    -## Implementation Files
    -
    -### New Files to Create
    -1. `ParallelConfig.java` - Configuration builder
    -2. `ParallelContext.java` - User-facing parallel context
    -3. `operation/ParallelOperation.java` - Core execution logic
    -4. `exception/ParallelExecutionException.java` - Parallel-specific exceptions
    -
    -### Files to Modify
    -1. `DurableContext.java` - Add `parallel()` method
    -2. `DurableFuture.java` - Ensure compatibility with parallel results (likely no changes needed)
    -
    -## Testing Strategy
    -
    -### Unit Tests
    -- `ParallelConfigTest` - Configuration validation
    -- `ParallelOperationTest` - Core execution logic with mocked child contexts
    -
    -### Integration Tests
    -- Success scenarios with various configurations
    -- Failure scenarios (exceeding thresholds)
    -- Concurrency limits
    -- Replay behavior
    -
    -### Example Implementation
    -- `ParallelExample.java` in examples module
    -- Demonstrate common patterns and error handling
    diff --git a/docs/core/steps.md b/docs/core/steps.md
    deleted file mode 100644
    index 5bf06a053..000000000
    --- a/docs/core/steps.md
    +++ /dev/null
    @@ -1,122 +0,0 @@
    -## step() – Execute with Checkpointing
    -
    -Steps execute your code and checkpoint the result. On replay, results from completed checkpoints are returned without re-execution.
    -
    -```java
    -// Basic step (blocks until complete)
    -var result = ctx.step("fetch-user", User.class, stepCtx -> userService.getUser(userId));
    -
    -// Step with custom configuration (retries, semantics, serialization)
    -var result = ctx.step("call-api", Response.class, 
    -	stepCtx -> externalApi.call(request),
    -	StepConfig.builder()
    -		.retryStrategy(...)
    -		.semantics(...)
    -		.build());
    -```
    -
    -See [Step Configuration](#step-configuration) for retry strategies, delivery semantics, and per-step serialization options.
    -
    -### stepAsync() and DurableFuture – Concurrent Operations
    -
    -`stepAsync()` starts a step in the background and returns a `DurableFuture<T>`. This enables concurrent execution patterns.
    -
    -```java
    -// Start multiple operations concurrently
    -DurableFuture<User> userFuture = ctx.stepAsync("fetch-user", User.class, 
    -	stepCtx -> userService.getUser(userId));
    -DurableFuture<List<Order>> ordersFuture = ctx.stepAsync("fetch-orders", 
    -	new TypeToken<List<Order>>() {}, stepCtx -> orderService.getOrders(userId));
    -
    -// Both operations run concurrently
    -// Block and get results when needed
    -User user = userFuture.get();
    -List<Order> orders = ordersFuture.get();
    -```
    -
    -## Step Configuration
    -
    -Configure step behavior with `StepConfig`:
    -
    -```java
    -ctx.step("my-step", Result.class, stepCtx -> doWork(),
    -	StepConfig.builder()
    -		.retryStrategy(...)    // How to handle failures
    -		.semantics(...)        // At-least-once vs at-most-once
    -		.serDes(...)           // Custom serialization
    -		.build());
    -```
    -
    -### Retry Strategies
    -
    -Configure how steps handle transient failures:
    -
    -```java
    -// No retry - fail immediately (default)
    -var noRetries = StepConfig.builder().retryStrategy(RetryStrategies.Presets.NO_RETRY).build()
    -
    -// Exponential backoff with jitter
    -var customRetries = StepConfig.builder()
    -	.retryStrategy(RetryStrategies.exponentialBackoff(
    -		5,                        // max attempts
    -		Duration.ofSeconds(2),    // initial delay  
    -		Duration.ofSeconds(30),   // max delay
    -		2.0,                      // backoff multiplier
    -		JitterStrategy.FULL))     // randomize delays
    -	.build()
    -```
    -
    -### Step-Retry Semantics
    -
    -Control how steps behave when interrupted mid-execution:
    -
    -| Semantic | Behavior | Use Case |
    -|----------|----------|----------|
    -| `AT_LEAST_ONCE_PER_RETRY` (default) | Re-executes step if interrupted before completion | Idempotent operations (database upserts, API calls with idempotency keys) |
    -| `AT_MOST_ONCE_PER_RETRY` | Never re-executes; throws `StepInterruptedException` if interrupted | Non-idempotent operations (sending emails, charging payments) |
    -
    -```java
    -// Default: at-least-once per retry (step may re-run if interrupted)
    -var result = ctx.step("idempotent-update", Result.class, 
    -	stepCtx -> database.upsert(record));
    -
    -// At-most-once per retry
    -var result = ctx.step("send-email", Result.class,
    -	stepCtx -> emailService.send(notification),
    -	StepConfig.builder()
    -		.semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -		.build());
    -```
    -
    -**Important**: These semantics apply *per retry attempt*, not per overall execution:
    -
    -- **AT_LEAST_ONCE_PER_RETRY**: The step executes at least once per retry. If the step succeeds but checkpointing fails (e.g., sandbox crash), the step re-executes on replay.
    -- **AT_MOST_ONCE_PER_RETRY**: A checkpoint is created before execution. If failure occurs after checkpoint but before completion, the step is skipped on replay and `StepInterruptedException` is thrown.
    -
    -To achieve step-level at-most-once semantics, combine with a no-retry strategy:
    -
    -```java
    -// True at-most-once: step executes at most once, ever
    -var result = ctx.step("charge-payment", Result.class,
    -	stepCtx -> paymentService.charge(amount),
    -	StepConfig.builder()
    -		.semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -		.retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -		.build());
    -```
    -
    -Without this, a step using `AT_MOST_ONCE_PER_RETRY` with retries enabled could still execute multiple times across different retry attempts.
    -
    -### Generic Types
    -
    -When a step returns a parameterized type like `List<User>`, use `TypeToken` to preserve the type information:
    -
    -```java
    -var users = ctx.step("fetch-users", new TypeToken<List<User>>() {}, 
    -	stepCtx -> userService.getAllUsers());
    -
    -var orderMap = ctx.step("fetch-orders", new TypeToken<Map<String, Order>>() {},
    -	stepCtx -> orderService.getOrdersByCustomer());
    -```
    -
    -This is needed for the SDK to deserialize a checkpointed result and get the exact type to reconstruct. See [TypeToken and Type Erasure](docs/internal-design.md#typetoken-and-type-erasure) for technical details. 
    \ No newline at end of file
    diff --git a/docs/core/wait-for-condition.md b/docs/core/wait-for-condition.md
    deleted file mode 100644
    index 66750055d..000000000
    --- a/docs/core/wait-for-condition.md
    +++ /dev/null
    @@ -1,130 +0,0 @@
    -## waitForCondition() – Poll Until a Condition is Met
    -
    -`waitForCondition` repeatedly calls a check function until it signals done. Between polls, the Lambda suspends without consuming compute. State is checkpointed after each check, so progress survives interruptions.
    -
    -```java
    -// Poll an order status until it ships
    -var status = ctx.waitForCondition(
    -    "wait-for-shipment",
    -    String.class,
    -    (currentStatus, stepCtx) -> {
    -        var latest = orderService.getStatus(orderId);
    -        return "SHIPPED".equals(latest)
    -            ? WaitForConditionResult.stopPolling(latest)
    -            : WaitForConditionResult.continuePolling(latest);
    -    },
    -    "PENDING");
    -```
    -
    -The check function receives the current state and a `StepContext`, and returns a `WaitForConditionResult`:
    -- `WaitForConditionResult.stopPolling(value)` β€” condition met, return `value` as the final result
    -- `WaitForConditionResult.continuePolling(value)` β€” keep polling, pass `value` to the next check
    -
    -The `initialState` parameter (`"PENDING"` above) is passed to the first check invocation.
    -
    -## waitForConditionAsync() – Non-Blocking Polling
    -
    -`waitForConditionAsync()` starts polling but returns a `DurableFuture<T>` immediately, allowing other operations to run concurrently.
    -
    -```java
    -DurableFuture<String> shipmentFuture = ctx.waitForConditionAsync(
    -    "wait-for-shipment",
    -    String.class,
    -    (status, stepCtx) -> {
    -        var latest = orderService.getStatus(orderId);
    -        return "SHIPPED".equals(latest)
    -            ? WaitForConditionResult.stopPolling(latest)
    -            : WaitForConditionResult.continuePolling(latest);
    -    },
    -    "PENDING");
    -
    -// Do other work while polling runs
    -var invoice = ctx.step("generate-invoice", String.class, stepCtx -> generateInvoice(orderId));
    -
    -// Block until the condition is met
    -var shipmentStatus = shipmentFuture.get();
    -```
    -
    -## Wait Strategies
    -
    -The wait strategy controls the delay between polls. By default, `waitForCondition` uses exponential backoff (60 max attempts, 5s initial delay, 300s max delay, 1.5x backoff rate, FULL jitter).
    -
    -Use `WaitStrategies` to configure a different strategy:
    -
    -```java
    -// Fixed 30-second delay, up to 10 attempts
    -var config = WaitForConditionConfig.<String>builder()
    -    .waitStrategy(WaitStrategies.fixedDelay(10, Duration.ofSeconds(30)))
    -    .build();
    -
    -var result = ctx.waitForCondition("poll-status", String.class, checkFunc, "PENDING", config);
    -```
    -
    -```java
    -// Custom exponential backoff
    -var config = WaitForConditionConfig.<String>builder()
    -    .waitStrategy(WaitStrategies.exponentialBackoff(
    -        20,                          // max attempts
    -        Duration.ofSeconds(2),       // initial delay
    -        Duration.ofSeconds(60),      // max delay
    -        2.0,                         // backoff rate
    -        JitterStrategy.HALF))        // jitter
    -    .build();
    -```
    -
    -| Factory Method | Description |
    -|----------------|-------------|
    -| `WaitStrategies.defaultStrategy()` | Exponential backoff: 60 attempts, 5s initial, 300s max, 1.5x rate, FULL jitter |
    -| `WaitStrategies.exponentialBackoff(...)` | Custom exponential backoff with configurable parameters |
    -| `WaitStrategies.fixedDelay(maxAttempts, delay)` | Constant delay between polls |
    -| `WaitStrategies.Presets.DEFAULT` | Same as `defaultStrategy()`, as a static constant |
    -
    -## Configuration
    -
    -`WaitForConditionConfig` holds optional parameters. All fields have sensible defaults, so you only need it when customizing:
    -
    -```java
    -var config = WaitForConditionConfig.<String>builder()
    -    .waitStrategy(WaitStrategies.fixedDelay(10, Duration.ofSeconds(5)))
    -    .serDes(new CustomSerDes())
    -    .build();
    -```
    -
    -| Option | Default | Description |
    -|--------|---------|-------------|
    -| `waitStrategy()` | Exponential backoff (see above) | Controls delay between polls and max attempts |
    -| `serDes()` | Handler default | Custom serialization for checkpointing state |
    -
    -## Error Handling
    -
    -| Exception | When Thrown |
    -|-----------|-------------|
    -| `WaitForConditionException` | Max attempts exceeded (thrown by the wait strategy) |
    -| `SerDesException` | Checkpointed state fails to deserialize on replay |
    -| User's exception | Check function throws β€” propagated through `get()` |
    -
    -```java
    -try {
    -    var result = ctx.waitForCondition("poll", String.class, checkFunc, "initial");
    -} catch (WaitForConditionException e) {
    -    // Max attempts exceeded β€” condition was never met
    -} catch (IllegalStateException e) {
    -    // Check function threw this β€” handle accordingly
    -}
    -```
    -
    -## Custom Wait Strategies
    -
    -You can write a custom strategy by implementing `WaitForConditionWaitStrategy<T>`:
    -
    -```java
    -WaitForConditionWaitStrategy<String> customStrategy = (state, attempt) -> {
    -    // Vary delay based on state
    -    if ("ALMOST_READY".equals(state)) {
    -        return Duration.ofSeconds(2);  // Poll faster when close
    -    }
    -    return Duration.ofSeconds(30);     // Otherwise poll slowly
    -};
    -```
    -
    -The strategy receives the current state and attempt number, and returns a `Duration`. Throw `WaitForConditionException` to stop polling with an error.
    diff --git a/docs/core/wait.md b/docs/core/wait.md
    deleted file mode 100644
    index 25d36db3f..000000000
    --- a/docs/core/wait.md
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -## wait() – Suspend Without Cost
    -
    -Waits suspend the function and resume after the specified duration. You're not charged during suspension.
    -
    -```java
    -// Wait 30 minutes
    -ctx.wait(null, Duration.ofMinutes(30));
    -
    -// Named wait (useful for debugging)
    -ctx.wait("cooling-off-period", Duration.ofDays(7));
    -```
    -
    -## waitAsync() – Non-Blocking Wait
    -
    -`waitAsync()` starts the wait timer but returns a `DurableFuture<Void>` immediately, allowing other operations to run concurrently. The execution only suspends when you call `.get()` on the future (if the wait hasn't completed yet).
    -
    -```java
    -// Start a 5-second timer (non-blocking)
    -DurableFuture<Void> timer = ctx.waitAsync("min-delay", Duration.ofSeconds(5));
    -
    -// Do work while the timer runs
    -var result = ctx.step("process", String.class, stepCtx -> doWork());
    -
    -// Block until the wait elapses
    -timer.get();
    -```
    \ No newline at end of file
    diff --git a/docs/design.md b/docs/design.md
    deleted file mode 100644
    index e5100d024..000000000
    --- a/docs/design.md
    +++ /dev/null
    @@ -1,779 +0,0 @@
    -# AWS Lambda Durable Execution Java SDK - Internal Design
    -
    -> **Note:** This document is for SDK developers and contributors. For user-facing documentation, see the [README](../README.md).
    -
    -## Overview
    -
    -This document explains the internal architecture, threading model, and extension points to help contributors understand how the SDK works under the hood. Core design decisions and advanced concepts are further outlined in the [Architecture Decision Records](adr/).
    -
    -## Module Structure
    -
    -```
    -aws-durable-execution-sdk-java/
    -β”œβ”€β”€ sdk/                      # Core SDK - DurableHandler, DurableContext, operations
    -β”œβ”€β”€ sdk-testing/              # Test utilities for local and cloud testing
    -β”œβ”€β”€ sdk-integration-tests/    # Integration tests using LocalDurableTestRunner
    -└── examples/                 # Real-world usage patterns as customers would implement them
    -```
    -
    -| Module | Purpose | Key Classes |
    -|--------|---------|-------------|
    -| `sdk` | Core runtime - extend `DurableHandler`, use `DurableContext` for durable operations | `DurableHandler`, `DurableContext`, `DurableExecutor`, `ExecutionManager` |
    -| `sdk-testing` | Test utilities: `LocalDurableTestRunner` (in-memory, simulates re-invocations and time-skipping) and `CloudDurableTestRunner` (executes against deployed Lambda) | `LocalDurableTestRunner`, `CloudDurableTestRunner`, `LocalMemoryExecutionClient`, `TestResult` |
    -| `sdk-integration-tests` | Dogfooding tests - validates the SDK using its own test utilities. Separate module keeps dependencies acyclic: `sdk` β†’ `sdk-testing` β†’ `sdk-integration-tests`. | Test classes only |
    -| `examples` | Real-world usage patterns as customers would implement them, with local and cloud tests | Example handlers, `CloudBasedIntegrationTest` |
    -
    ----
    -
    -## API Surface
    -
    -### User-Facing (DurableContext)
    -
    -```java
    -// Synchronous step
    -T step(String name, Class<T> type, Supplier<T> func)
    -T step(String name, Class<T> type, Supplier<T> func, StepConfig config)
    -T step(String name, TypeToken<T> type, Supplier<T> func)
    -T step(String name, TypeToken<T> type, Supplier<T> func, StepConfig config)
    -
    -// Asynchronous step
    -DurableFuture<T> stepAsync(String name, Class<T> type, Supplier<T> func)
    -DurableFuture<T> stepAsync(String name, Class<T> type, Supplier<T> func, StepConfig config)
    -DurableFuture<T> stepAsync(String name, TypeToken<T> type, Supplier<T> func)
    -DurableFuture<T> stepAsync(String name, TypeToken<T> type, Supplier<T> func, StepConfig config)
    -
    -// Wait
    -void wait(String name, Duration duration)
    -
    -// Asynchronous wait
    -DurableFuture<Void> waitAsync(String name, Duration duration)
    -    
    -// Invoke
    -T invoke(String name, String functionName, U payload, Class<T> resultType)
    -T invoke(String name, String functionName, U payload, TypeToken<T> resultType)
    -T invoke(String name, String functionName, U payload, Class<T> resultType, InvokeConfig config)
    -T invoke(String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config)
    -
    -DurableFuture<T> invokeAsync(String name, String functionName, U payload, Class<T> resultType)
    -DurableFuture<T> invokeAsync(String name, String functionName, U payload, Class<T> resultType, InvokeConfig config)
    -DurableFuture<T> invokeAsync(String name, String functionName, U payload, TypeToken<T> resultType)
    -DurableFuture<T> invokeAsync(String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config)
    -
    -// Map
    -MapResult<O> map(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function)
    -MapResult<O> map(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config)
    -MapResult<O> map(String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function)
    -MapResult<O> map(String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -DurableFuture<MapResult<O>> mapAsync(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function)
    -DurableFuture<MapResult<O>> mapAsync(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config)
    -DurableFuture<MapResult<O>> mapAsync(String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function)
    -DurableFuture<MapResult<O>> mapAsync(String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -// Lambda context access
    -Context getLambdaContext()
    -```
    -
    -### DurableFuture
    -
    -```java
    -T get()  // Blocks until complete, may suspend
    -```
    -
    -### Handler Configuration
    -
    -```java
    -public class MyHandler extends DurableHandler<Input, Output> {
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        return DurableConfig.builder()
    -            .withLambdaClientBuilder(customLambdaClientBuilder)
    -            .withSerDes(new CustomSerDes())
    -            .withExecutorService(Executors.newFixedThreadPool(4))
    -            .build();
    -    }
    -}
    -```
    -
    -| Option                | Default                                                                                                                                                                   |
    -|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    -| `lambdaClientBuilder` | Auto-created `LambdaClient` for current region, primed for performance (see [`DurableConfig.java`](../sdk/src/main/java/com/amazonaws/lambda/durable/DurableConfig.java)) |
    -| `serDes`              | `JacksonSerDes`                                                                                                                                                           |
    -| `executorService`     | `Executors.newCachedThreadPool()` (for user-defined operations only)                                                                                                      |
    -| `loggerConfig`        | `LoggerConfig.defaults()` (suppress replay logs)                                                                                                                          |
    -
    -### Thread Pool Architecture
    -
    -The SDK uses two separate thread pools with distinct responsibilities:
    -
    -**User Executor (`DurableConfig.executorService`):**
    -- Runs user-defined operations (the code passed to `ctx.step()` and `ctx.stepAsync()`)
    -- Configurable via `DurableConfig.builder().withExecutorService()`
    -- Default: cached daemon thread pool
    -
    -**Internal Executor (`InternalExecutor.INSTANCE`):**
    -- Runs SDK coordination tasks: checkpoint batching, polling for wait completion
    -- Dedicated cached thread pool with daemon threads named `durable-sdk-internal-*`
    -- Not configurable by users
    -
    -**Benefits of this separation:**
    -
    -| Benefit | Description |
    -|---------|-------------|
    -| **Isolation** | User operations can't starve SDK internals, and vice versa |
    -| **No shutdown management** | Internal pool uses daemon threads; SDK coordination continues even if the user's executor is shut down |
    -| **Efficient resource usage** | Cached thread pool creates threads on demand and reuses idle threads (60s timeout) |
    -| **Daemon threads** | Internal threads won't prevent JVM shutdown |
    -| **Single configuration point** | Changing `InternalExecutor.INSTANCE` in one place affects all SDK coordination |
    -
    -**Example: Custom thread pool for user operations:**
    -```java
    -@Override
    -protected DurableConfig createConfiguration() {
    -    var executor = new ThreadPoolExecutor(
    -        4, 10,                          // core/max threads
    -        60L, TimeUnit.SECONDS,          // idle timeout
    -        new LinkedBlockingQueue<>(100), // bounded queue
    -        new ThreadFactoryBuilder()
    -            .setNameFormat("order-processor-%d")
    -            .setDaemon(true)
    -            .build());
    -
    -    return DurableConfig.builder()
    -        .withExecutorService(executor)
    -        .build();
    -}
    -```
    -
    -### Step Configuration
    -
    -```java
    -context.step("name", Type.class, supplier,
    -    StepConfig.builder()
    -        .serDes(stepSpecificSerDes)
    -        .retryStrategy(RetryStrategies.exponentialBackoff(3, Duration.ofSeconds(1)))
    -        .semantics(AT_MOST_ONCE_PER_RETRY)
    -        .build());
    -```
    -
    ----
    -
    -## Architecture
    -
    -```
    -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -β”‚                           Lambda Runtime                                β”‚
    -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -                                    β”‚
    -                                    β–Ό
    -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -β”‚  DurableHandler<I,O>                                                    β”‚
    -β”‚  - Entry point (RequestStreamHandler)                                   β”‚
    -β”‚  - Extracts input type via reflection                                   β”‚
    -β”‚  - Delegates to DurableExecutor                                         β”‚
    -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -                                    β”‚
    -                                    β–Ό
    -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -β”‚  DurableExecutor                                                        β”‚
    -β”‚  - Creates ExecutionManager, DurableContext                             β”‚
    -β”‚  - Runs handler in executor                                             β”‚
    -β”‚  - Waits for completion OR suspension                                   β”‚
    -β”‚  - Returns SUCCESS/PENDING/FAILED                                       β”‚
    -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -                                    β”‚
    -                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -                    β–Ό                               β–Ό
    -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -β”‚  DurableContext              β”‚    β”‚  ExecutionManager               β”‚
    -β”‚  - User-facing API           β”‚    β”‚  - State (ops, token)           β”‚
    -β”‚  - step(), stepAsync(), etc  β”‚    β”‚  - Thread coordination          β”‚
    -β”‚  - wait(), waitAsync()       β”‚    β”‚  - Checkpoint batching          β”‚
    -β”‚  - waitForCondition()        β”‚    β”‚  - Checkpoint response handling β”‚
    -β”‚  - Operation ID counter      β”‚    β”‚  - Polling                      β”‚
    -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -            β”‚                                       β”‚
    -            β–Ό                                       β–Ό
    -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -β”‚  Operations                  β”‚    β”‚  CheckpointBatcher           β”‚
    -β”‚  - StepOperation<T>          β”‚    β”‚  - Queues requests           β”‚
    -β”‚  - WaitOperation             β”‚    β”‚  - Batches API calls (750KB) β”‚
    -β”‚  - WaitForConditionOperation β”‚    β”‚                              β”‚
    -β”‚  - ConcurrencyOperation<T>   β”‚    β”‚  - Notifies via callback     β”‚
    -β”‚  - MapOperation<I,O>         β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -β”‚  - ParallelOperation         β”‚
    -β”‚  - ChildContextOperation<T>  β”‚
    -β”‚  - execute() / get()         β”‚
    -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -                                                    β”‚
    -                                                    β–Ό
    -                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    -                                    β”‚  DurableExecutionClient      β”‚
    -                                    β”‚  - checkpoint()              β”‚
    -                                    β”‚  - getExecutionState()       β”‚
    -                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    -```
    -
    -### Package Structure
    -
    -```
    -software.amazon.lambda.durable
    -β”œβ”€β”€ DurableHandler<I,O>      # Entry point
    -β”œβ”€β”€ DurableExecutor          # Lifecycle orchestration
    -β”œβ”€β”€ DurableContext           # User API
    -β”œβ”€β”€ DurableFuture<T>         # Async handle
    -β”œβ”€β”€ StepConfig               # Step configuration
    -β”œβ”€β”€ TypeToken<T>             # Generic type capture
    -β”‚
    -β”œβ”€β”€ execution/
    -β”‚   β”œβ”€β”€ ExecutionManager     # Central coordinator
    -β”‚   β”œβ”€β”€ ExecutionMode        # REPLAY or EXECUTION state
    -β”‚   β”œβ”€β”€ CheckpointBatcher    # Batching (package-private)
    -β”‚   β”œβ”€β”€ CheckpointCallback   # Callback interface
    -β”‚   β”œβ”€β”€ SuspendExecutionException
    -β”‚   └── ThreadType           # CONTEXT, STEP
    -β”‚
    -β”œβ”€β”€ operation/
    -β”‚   β”œβ”€β”€ BaseDurableOperation<T>  # Common operation logic
    -β”‚   β”œβ”€β”€ StepOperation<T>         # Step logic
    -β”‚   β”œβ”€β”€ InvokeOperation<T>       # Invoke logic
    -β”‚   β”œβ”€β”€ CallbackOperation<T>     # Callback logic
    -β”‚   β”œβ”€β”€ WaitOperation            # Wait logic
    -β”‚   β”œβ”€β”€ WaitForConditionOperation<T>  # Polling condition logic
    -β”‚   β”œβ”€β”€ ConcurrencyOperation<T>  # Shared base for map/parallel
    -β”‚   β”œβ”€β”€ MapOperation<I,O>        # Map operation logic
    -β”‚   β”œβ”€β”€ ParallelOperation        # Parallel operation logic
    -β”‚   └── ChildContextOperation<T> # Per-item child context execution
    -β”‚
    -β”œβ”€β”€ logging/
    -β”‚   β”œβ”€β”€ DurableLogger        # Context-aware logger wrapper (MDC-based)
    -β”‚   └── LoggerConfig         # Replay suppression config
    -β”‚
    -β”œβ”€β”€ retry/
    -β”‚   β”œβ”€β”€ RetryStrategy        # Interface
    -β”‚   β”œβ”€β”€ RetryStrategies      # Presets
    -β”‚   β”œβ”€β”€ RetryDecision        # shouldRetry + delay
    -β”‚   β”œβ”€β”€ JitterStrategy       # Jitter options
    -β”‚   β”œβ”€β”€ WaitForConditionWaitStrategy  # Polling delay interface
    -β”‚   └── WaitStrategies       # Polling strategy factory + Presets
    -β”‚
    -β”œβ”€β”€ client/
    -β”‚   β”œβ”€β”€ DurableExecutionClient        # Interface
    -β”‚   └── LambdaDurableFunctionsClient  # AWS SDK impl
    -β”‚
    -β”œβ”€β”€ model/
    -β”‚   β”œβ”€β”€ DurableExecutionInput   # Lambda input
    -β”‚   β”œβ”€β”€ DurableExecutionOutput  # Lambda output
    -β”‚   └── ExecutionStatus         # SUCCEEDED/PENDING/FAILED
    -β”‚
    -β”œβ”€β”€ serde/
    -β”‚   β”œβ”€β”€ SerDes              # Interface
    -β”‚   β”œβ”€β”€ JacksonSerDes       # Jackson impl
    -β”‚   └── AwsSdkV2Module      # SDK type support
    -β”‚
    -└── exception/
    -    β”œβ”€β”€ DurableExecutionException
    -    β”œβ”€β”€ NonDeterministicExecutionException
    -    β”œβ”€β”€ StepFailedException
    -    β”œβ”€β”€ StepInterruptedException
    -    β”œβ”€β”€ WaitForConditionException
    -    └── SerDesException
    -```
    -
    ----
    -
    -## Sequence Diagrams
    -
    -### Normal Step Execution
    -
    -```mermaid
    -sequenceDiagram
    -    participant UC as User Code
    -    participant DC as DurableContext
    -    participant SO as StepOperation
    -    participant EM as ExecutionManager
    -    participant Backend
    -
    -    UC->>DC: step("name", Type.class, func)
    -    DC->>SO: new StepOperation(...)
    -    DC->>SO: execute()
    -    SO->>EM: sendOperationUpdate(START)
    -    EM->>Backend: checkpoint(START)
    -    
    -    SO->>SO: func.get() [execute user code]
    -    
    -    SO->>EM: sendOperationUpdate(SUCCEED)
    -    EM->>Backend: checkpoint(SUCCEED)
    -    
    -    DC->>SO: get()
    -    SO-->>DC: result
    -    DC-->>UC: result
    -```
    -
    -### Replay Scenario
    -
    -```mermaid
    -sequenceDiagram
    -    participant LR as Lambda Runtime
    -    participant DE as DurableExecutor
    -    participant UC as User Code
    -    participant DC as DurableContext
    -    participant SO as StepOperation
    -    participant EM as ExecutionManager
    -
    -    Note over LR: Re-invocation with existing state
    -    
    -    LR->>DE: execute(input with operations)
    -    DE->>EM: new ExecutionManager(existingOps)
    -    
    -    UC->>DC: step("step1", ...)
    -    DC->>SO: execute()
    -    SO->>EM: getOperation("1")
    -    EM-->>SO: existing op (SUCCEEDED)
    -    Note over SO: Skip execution
    -    DC->>SO: get()
    -    SO-->>DC: cached result
    -    DC-->>UC: result
    -```
    -
    -### Wait with Suspension
    -
    -```mermaid
    -sequenceDiagram
    -    participant UC as User Code
    -    participant DC as DurableContext
    -    participant WO as WaitOperation
    -    participant EM as ExecutionManager
    -    participant Backend
    -
    -    UC->>DC: wait(null, Duration.ofMinutes(5))
    -    DC->>WO: execute()
    -    WO->>EM: sendOperationUpdate(WAIT, duration)
    -    EM->>Backend: checkpoint
    -    
    -    DC->>WO: get()
    -    WO->>EM: deregisterActiveThread("Root")
    -    
    -    Note over EM: No active threads!
    -    EM->>EM: executionExceptionFuture.completeExceptionally(SuspendExecutionException)
    -    EM-->>WO: throw SuspendExecutionException
    -    
    -    Note over UC: Execution suspended, returns PENDING
    -```
    -
    ----
    -
    -## Exception Hierarchy
    -
    -```
    -DurableExecutionException (base)
    -β”œβ”€β”€ StepFailedException          # Step failed after all retries
    -β”œβ”€β”€ StepInterruptedException     # Step interrupted (AT_MOST_ONCE)
    -β”œβ”€β”€ WaitForConditionException    # Polling exceeded max attempts
    -β”œβ”€β”€ NonDeterministicExecutionException  # Replay mismatch
    -└── SerDesException              # Serialization error
    -
    -SuspendExecutionException        # Internal: triggers suspension (not user-facing)
    -```
    -
    -| Exception | Trigger | Recovery |
    -|-----------|---------|----------|
    -| `StepFailedException` | Step throws after exhausting retries | Catch in handler or let fail |
    -| `StepInterruptedException` | AT_MOST_ONCE step interrupted mid-execution | Treat as failure |
    -| `WaitForConditionException` | waitForCondition exceeded max polling attempts | Catch in handler or let fail |
    -| `NonDeterministicExecutionException` | Replay finds different operation than expected | Bug in handler (non-deterministic code) |
    -| `SerDesException` | Jackson fails to serialize/deserialize | Fix data model or custom SerDes |
    -
    ----
    -
    -## Logging Internals
    -
    -### Replay Mode Tracking
    -
    -`ExecutionManager` tracks whether we're replaying completed operations or executing new ones via `ExecutionMode`:
    -
    -- **REPLAY**: Starts in this mode if `operations.size() > 1` (has checkpointed operations beyond the initial EXECUTION op)
    -- **EXECUTION**: Transitions when `getOperationAndUpdateReplayState()` encounters:
    -  - An operation ID not in the checkpoint log (new operation)
    -  - An operation that is NOT in a terminal state (needs to continue executing)
    -
    -Terminal states (SUCCEEDED, FAILED, CANCELLED, TIMED_OUT, STOPPED) stay in REPLAY mode since we're just returning cached results.
    -
    -This is a one-way transition (REPLAY β†’ EXECUTION, never back). `DurableLogger` checks `isReplaying()` to suppress duplicate logs during replay.
    -
    -### MDC-Based Context Enrichment
    -
    -`DurableLogger` uses SLF4J's MDC (Mapped Diagnostic Context) to enrich log entries with execution metadata. MDC is thread-local by design, so context is set once per thread rather than per log call for performance.
    -
    -**MDC Keys:**
    -| Key | Set When | Description |
    -|-----|----------|-------------|
    -| `durableExecutionArn` | Logger construction | Execution ARN |
    -| `requestId` | Logger construction | Lambda request ID |
    -| `operationId` | Step start | Current operation ID |
    -| `operationName` | Step start | Step name |
    -| `attempt` | Step start | Retry attempt number |
    -
    -**Context Flow:**
    -1. `DurableLogger` constructor sets execution-level MDC (ARN, requestId) on the handler thread
    -2. `StepOperation.executeStepLogic()` calls `durableLogger.setOperationContext()` before user code runs
    -3. User code logs via `context.getLogger()` - MDC values automatically included
    -4. `clearOperationContext()` called in finally block after step completes
    -
    -**Log Pattern Example (Log4j2):**
    -```xml
    -<PatternLayout pattern="%d %-5level %logger - %msg%notEmpty{ | arn=%X{durableExecutionArn}}%notEmpty{ id=%X{operationId}}%notEmpty{ op=%X{operationName}}%notEmpty{ attempt=%X{attempt}}%n"/>
    -```
    -
    -**Output:**
    -```
    -12:34:56 INFO  c.a.l.d.DurableContext - Processing order | arn=arn:aws:lambda:us-east-1:123:function:test
    -12:34:56 DEBUG c.a.l.d.DurableContext - Validating items | arn=arn:aws:lambda:us-east-1:123:function:test id=1 op=validate attempt=0
    -```
    -
    ----
    -
    -## Backend Integration
    -
    -### Large Response Handling
    -
    -If result > 6MB Lambda limit:
    -1. Checkpoint result to backend
    -2. Return empty response
    -3. Backend stores and returns result
    -
    -### Checkpoint Batching
    -
    -Multiple concurrent operations may checkpoint simultaneously. `CheckpointBatcher` batches these into single API calls to reduce latency and stay within the 750KB request limit.
    -
    -Currently uses micro-batching: batches only what accumulates during the polling thread scheduling overhead. Early tests suggest this window may be too short for effective batchingβ€”an artificial delay might need to be introduced.
    -
    -```
    -StepOperation 1 ──┐
    -                  β”‚
    -StepOperation 2 ──┼──► CheckpointBatcher ──► Backend
    -                  β”‚
    -WaitOperation β”€β”€β”€β”€β”˜
    -```
    -
    -Callback mechanism avoids cyclic dependency between `ExecutionManager` and `CheckpointBatcher`:
    -
    -```java
    -interface CheckpointCallback {
    -    void onComplete(String newToken, List<Operation> operations);
    -}
    -```
    -
    ----
    -
    -## Testing Infrastructure
    -
    -### LocalDurableTestRunner
    -
    -In-memory test runner that simulates the full execution lifecycle without AWS.
    -
    -```java
    -// Default: auto-skip time
    -runner.runUntilComplete(input);  // Instantly completes waits
    -
    -// Manual control
    -runner.withSkipTime(false);
    -runner.run(input);               // Returns PENDING at wait
    -runner.advanceTime();            // Move past wait
    -runner.run(input);               // Continues from wait
    -```
    -
    -### Failure Simulation
    -
    -```java
    -// Simulate checkpoint loss (fire-and-forget START lost)
    -runner.simulateFireAndForgetCheckpointLoss("step-name");
    -
    -// Reset step to STARTED (simulate crash after START checkpoint)
    -runner.resetCheckpointToStarted("step-name");
    -```
    -
    -### CloudDurableTestRunner
    -
    -Tests against deployed Lambda:
    -
    -```java
    -var runner = CloudDurableTestRunner.create(arn, Input.class, Output.class)
    -    .withPollInterval(Duration.ofSeconds(2))
    -    .withTimeout(Duration.ofMinutes(5));
    -
    -TestResult<Output> result = runner.run(input);
    -```
    -
    -### Extension Points for Testing
    -
    -**DurableExecutionClient Interface** - Backend abstraction for testing or alternative implementations:
    -
    -```java
    -public interface DurableExecutionClient {
    -    CheckpointDurableExecutionResponse checkpoint(
    -        String arn, String token, List<OperationUpdate> updates);
    -    
    -    GetDurableExecutionStateResponse getExecutionState(String arn, String marker);
    -}
    -```
    -
    -Implementations:
    -- `LambdaDurableFunctionsClient` - Production (wraps AWS SDK)
    -- `LocalMemoryExecutionClient` - Testing (in-memory)
    -
    -For production customization, use `DurableConfig.builder().withLambdaClientBuilder(lambdaClientBuilder)`.
    -For testing, use `DurableConfig.builder().withDurableExecutionClient(localMemoryClient)`.
    -
    ----
    -
    -## Custom SerDes and TypeToken
    -
    -**Custom SerDes Interface:**
    -```java
    -public interface SerDes {
    -    String serialize(Object value);
    -    <T> T deserialize(String data, Class<T> type);
    -    <T> T deserialize(String data, TypeToken<T> typeToken);
    -}
    -```
    -
    -**TypeToken and Type Erasure:**
    -
    -Java's type erasure removes generic type parameters at runtime (`List<User>` becomes `List`). This is problematic for deserializationβ€”Jackson needs the full type to reconstruct objects correctly.
    -
    -`TypeToken<T>` solves this by capturing generic types at compile time. Creating `new TypeToken<List<User>>() {}` produces an anonymous subclass whose superclass type parameter is preserved in bytecode and accessible via reflection (`getGenericSuperclass()`).
    -
    -The `SerDes` interface provides both `Class<T>` and `TypeToken<T>` overloads:
    -- Use `Class<T>` for simple types: `String.class`, `User.class`
    -- Use `TypeToken<T>` for parameterized types: `new TypeToken<List<User>>() {}`
    -
    ----
    -
    -## Thread Coordination and Suspension Mechanism (Advanced)
    -
    -The SDK uses a threaded execution model where the handler runs on a user-configured executor, racing against an internal suspension future. This enables immediate suspension when no thread can make forward progress (waits, retries, callbacks), without waiting for the handler to complete naturally.
    -
    -### Key Concepts
    -
    -**Thread types.** The SDK distinguishes two thread types via `ThreadType`:
    -
    -| ThreadType | Identifier (threadId)                                                          | Created By | Purpose |
    -|------------|--------------------------------------------------------------------------------|------------|---------|
    -| `CONTEXT` | `null` for root context; the operation ID for child contexts (e.g. `"hash(1)"`) | `DurableExecutor` (root), `ChildContextOperation` (child) | Runs the handler function body or a child context function body. Orchestrates operations. |
    -| `STEP` | The step's operation ID (e.g. `"hash(2)"`)                                     | `StepOperation` | Runs user-provided step code (`Function<StepContext, T>`). |
    -
    -Each thread has a `ThreadContext` record (threadId + threadType) stored in a `ThreadLocal` so operations can identify which context they belong to.
    -
    -**Active thread set.** `ExecutionManager` maintains a `Set<String> activeThreads`. A thread is "active" when it can make forward progress. When the set becomes empty, the execution suspends.
    -
    -**Completion futures.** Each operation holds a `CompletableFuture<Void> completionFuture` used to coordinate between the thread that starts an operation and the thread that waits for its result.
    -
    -### The Suspension Race
    -
    -`DurableExecutor.execute()` runs the handler on the user executor and races it against an internal exception future:
    -
    -```java
    -// DurableExecutor
    -executionManager.registerActiveThread(null);  // register root context thread
    -var handlerFuture = CompletableFuture.supplyAsync(() -> {
    -    try (var context = DurableContext.createRootContext(...)) {
    -        return handler.apply(userInput, context);
    -    }
    -}, config.getExecutorService());
    -
    -executionManager.runUntilCompleteOrSuspend(handlerFuture)
    -    .handle((result, ex) -> { ... })
    -    .join();
    -```
    -
    -`runUntilCompleteOrSuspend` uses `CompletableFuture.anyOf(handlerFuture, executionExceptionFuture)`:
    -- If `handlerFuture` completes first β†’ `SUCCESS` (or `FAILED` if the handler threw).
    -- If `executionExceptionFuture` completes first β†’ `PENDING` (suspension) or unrecoverable error.
    -
    -See [ADR-001: Threaded Handler Execution](adr/001-threaded-handler-execution.md).
    -
    -### Suspension Trigger β€” Thread Counting
    -
    -Suspension is triggered exclusively by `ExecutionManager.deregisterActiveThread()`:
    -
    -```java
    -// ExecutionManager.deregisterActiveThread()
    -public void deregisterActiveThread(String threadId) {
    -    if (executionExceptionFuture.isDone()) return;  // already suspended
    -
    -    activeThreads.remove(threadId);
    -
    -    if (activeThreads.isEmpty()) {
    -        suspendExecution();  // completes executionExceptionFuture with SuspendExecutionException
    -    }
    -}
    -```
    -
    -A thread deregisters when it cannot make forward progress β€” typically when it calls `waitForOperationCompletion()` on an operation that hasn't completed yet. This is a unified mechanism: the SDK doesn't need operation-specific suspension logic.
    -
    -### The `waitForOperationCompletion()` Pattern
    -
    -This method in `BaseDurableOperation` is the core coordination primitive. It is called by every operation's `get()` method (step, wait, invoke, callback, child context):
    -
    -```java
    -// BaseDurableOperation.waitForOperationCompletion()
    -protected Operation waitForOperationCompletion() {
    -    var threadContext = getCurrentThreadContext();
    -
    -    synchronized (completionFuture) {
    -        if (!isOperationCompleted()) {
    -            // Attach a callback: when the operation completes, re-register this thread
    -            completionFuture.thenRun(() -> registerActiveThread(threadContext.threadId()));
    -
    -            // Deregister β€” may trigger suspension if no other threads are active
    -            executionManager.deregisterActiveThread(threadContext.threadId());
    -        }
    -    }
    -
    -    completionFuture.join();  // block until complete (no-op if already done)
    -    return getOperation();
    -}
    -```
    -
    -The `synchronized(completionFuture)` block prevents a race between checking `isOperationCompleted()` and attaching the `thenRun` callback. Without it, the future could complete between the check and the callback attachment, causing the thread to deregister without ever being re-registered.
    -
    -The re-registration callback (`thenRun`) runs synchronously on the thread that completes the future (typically the checkpoint response handler). This guarantees the context thread is re-registered *before* the completing thread (step or child context) deregisters itself, preventing a premature suspension.
    -
    -### `onCheckpointComplete` β€” Waking Up Waiters
    -
    -When `CheckpointManager` receives a checkpoint response, it calls `ExecutionManager.onCheckpointComplete()`, which notifies each registered operation:
    -
    -```java
    -// BaseDurableOperation.onCheckpointComplete()
    -public void onCheckpointComplete(Operation operation) {
    -    if (ExecutionManager.isTerminalStatus(operation.status())) {
    -        synchronized (completionFuture) {
    -            completionFuture.complete(null);  // unblocks waitForOperationCompletion()
    -        }
    -    }
    -}
    -```
    -
    -Completing the future triggers the `thenRun` callback (re-registers the waiting context thread), then unblocks the `join()` call.
    -
    -### Operation-Specific Threading
    -
    -#### StepOperation
    -
    -Steps run user code on a separate thread via the user executor:
    -
    -```java
    -// StepOperation.executeStepLogic()
    -registerActiveThread(getOperationId());  // register BEFORE submitting to executor
    -
    -CompletableFuture.runAsync(() -> {
    -    try (StepContext stepContext = getContext().createStepContext(...)) {
    -        T result = function.apply(stepContext);
    -        handleStepSucceeded(result);      // checkpoint SUCCEED synchronously
    -    } catch (Throwable e) {
    -        handleStepFailure(e, attempt);    // checkpoint RETRY or FAIL
    -    }
    -}, userExecutor);
    -```
    -
    -Key details:
    -- `registerActiveThread` is called on the *parent* thread before `runAsync`, preventing a race where the parent deregisters (triggering suspension) before the step thread starts.
    -- The step thread is implicitly deregistered when it finishes β€” it never calls `deregisterActiveThread` directly. Instead, the step thread's work is done after checkpointing, and the checkpoint response completes the `completionFuture`, which re-registers the waiting context thread.
    -- For retries, the step sends a RETRY checkpoint and then polls for the READY status before re-executing. If no other threads are active during the retry delay, the execution suspends.
    -
    -#### WaitOperation
    -
    -Waits checkpoint a WAIT action with a duration, then poll for completion:
    -
    -```java
    -// WaitOperation.start()
    -sendOperationUpdate(OperationUpdate.builder()
    -    .action(OperationAction.START)
    -    .waitOptions(WaitOptions.builder().waitSeconds((int) duration.toSeconds()).build()));
    -pollForOperationUpdates(remainingWaitTime);
    -```
    -
    -The wait itself doesn't deregister any thread. Suspension happens when the context thread calls `wait()` (synchronous) which calls `get()`, which calls `waitForOperationCompletion()`, which deregisters the context thread. If no other threads are active, the execution suspends and the Lambda returns PENDING. On re-invocation, the wait replays: if the wait period has elapsed, `markAlreadyCompleted()` is called; otherwise, polling resumes with the remaining duration.
    -
    -#### InvokeOperation
    -
    -Invokes checkpoint a START action with the target function name and payload, then poll for the result. The threading model is identical to WaitOperation β€” the invoke itself doesn't create a new thread. The context thread deregisters when it calls `get()` on the invoke future.
    -
    -#### CallbackOperation
    -
    -Callbacks checkpoint a START action to obtain a `callbackId`, then poll for an external system to complete the callback. Like waits and invokes, the context thread deregisters when it calls `get()`. The callback can complete via an external API call (success, failure, or heartbeat timeout).
    -
    -#### ChildContextOperation
    -
    -Child contexts run a user function in a separate thread with its own `DurableContext` and operation counter:
    -
    -```java
    -// ChildContextOperation.executeChildContext()
    -var contextId = getOperationId();
    -
    -// Register on PARENT thread β€” prevents race with parent deregistration
    -registerActiveThread(contextId);
    -
    -CompletableFuture.runAsync(() -> {
    -    try (var childContext = getContext().createChildContext(contextId, getName())) {
    -        T result = function.apply(childContext);
    -        handleChildContextSuccess(result);
    -    } catch (Throwable e) {
    -        handleChildContextFailure(e);
    -    }
    -}, userExecutor);
    -```
    -
    -Key details:
    -- The child context thread runs as `ThreadType.CONTEXT` (not STEP), so it can itself create steps, waits, invokes, callbacks, and nested child contexts.
    -- Operations within the child context use the child's `contextId` as their `parentId`, and operation IDs are prefixed with the context path (e.g. `"hash(1)"` for first-level, `"hash(hash(1)-2)"` for second-level).
    -- On replay, if the child context completed with a large result (> 256KB), the SDK re-executes the child context to reconstruct the result in memory rather than storing it in the checkpoint payload.
    -
    -### In-Process Completion
    -
    -When a wait, retry delay, or invoke would normally suspend execution, but other active threads prevent suspension (because `activeThreads` is not empty), the SDK stays alive and polls the backend for updates. This is the "in-process completion" path β€” the operation polls via `CheckpointManager.pollForUpdate()` on the internal executor until the backend reports the operation is ready. This avoids unnecessary Lambda re-invocations when the execution can simply wait in-process.
    -
    -### Sequence: Synchronous Step Execution
    -
    -When a context thread calls `ctx.step(...)`, the following coordination occurs:
    -
    -| Seq | Context Thread                                                                                                                                                                                                | Step Thread                                                                                                                                | System Thread (CheckpointManager)                                                                                                                                  |
    -|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    -| 1   | Create `StepOperation` + `completionFuture`. Call `execute()`. `execute()` calls `start()` which registers step thread and submits to user executor. Checkpoint START (sync or async depending on semantics). | β€”                                                                                                                                          | (idle)                                                                                                                                                             |
    -| 2   | `step()` calls `get()` β†’ `waitForOperationCompletion()`. Attach `thenRun(re-register)` to `completionFuture`. Deregister context thread. Block on `join()`.                                                   | User code begins executing. Execute `function.apply(stepContext)`.                                                                         | (idle)                                                                                                                                                             |
    -| 3   | (blocked)                                                                                                                                                                                                     | User code completes. Call `handleStepSucceeded(result)` β†’ `sendOperationUpdate(SUCCEED)` (synchronous β€” blocks until checkpoint response). | Process checkpoint API call. On terminal response, call `onCheckpointComplete()` β†’ `completionFuture.complete(null)`. `thenRun` fires: re-register context thread. |
    -| 4   | `join()` returns. Retrieve result from operation.                                                                                                                                                             | Call `deregisterActiveThread` to deregister Step thread. Step thread ends.                                                                 | (idle)                                                                                                                                                             |
    -
    -**Alternative (fast step):** If the step completes and checkpoints before the context thread calls `get()`, the `completionFuture` is already done when `waitForOperationCompletion()` runs. The context thread skips deregistration entirely and returns the result immediately.
    -
    -### Sequence: Wait with Suspension
    -
    -| Seq | Context Thread                                                                                                                                                             | System Thread          |
    -|-----|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|
    -| 1   | Create `WaitOperation` + `completionFuture`. Call `execute()`. `execute()` calls `start()` β†’ checkpoint WAIT with duration β†’ `pollForOperationUpdates(remainingWaitTime)`. | Begin polling backend. |
    -| 2   | `wait()` calls `get()` β†’ `waitForOperationCompletion()`. Attach `thenRun(re-register)`. Deregister context thread.                                                         | (polling)              |
    -| 3   | `activeThreads` is empty β†’ `suspendExecution()` β†’ `executionExceptionFuture.completeExceptionally(SuspendExecutionException)`.                                             | β€”                      |
    -| 4   | `runUntilCompleteOrSuspend` resolves with `SuspendExecutionException` β†’ return `PENDING`.                                                                                  | β€”                      |
    -
    -On re-invocation, the wait replays. If the scheduled end time has passed, `markAlreadyCompleted()` fires and the context thread continues without deregistering.
    -
    -### Sequence: Async Step + Wait (Concurrent)
    -
    -```java
    -var stepFuture = ctx.stepAsync("fetch", String.class, stepCtx -> callApi());
    -ctx.wait("delay", Duration.ofSeconds(30));
    -var result = stepFuture.get();
    -```
    -
    -| Seq | Context Thread                                                     | Step Thread                    | System Thread                                                                                           |
    -|-----|--------------------------------------------------------------------|--------------------------------|---------------------------------------------------------------------------------------------------------|
    -| 1   | Create `StepOperation`, register step thread, submit to executor.  | β€”                              | β€”                                                                                                       |
    -| 2   | Create `WaitOperation`, checkpoint WAIT, start polling.            | User code begins.              | Begin polling for wait.                                                                                 |
    -| 3   | `wait()` calls `get()` β†’ deregister context thread.                | (running)                      | (polling)                                                                                               |
    -| 4   | (blocked β€” but step thread is still active, so no suspension)      | Complete β†’ checkpoint SUCCEED. | Process step checkpoint.                                                                                |
    -| 5   | (blocked)                                                          | β€”                              | Wait poll returns SUCCEEDED β†’ `completionFuture.complete(null)` for wait. Context thread re-registered. |
    -| 6   | `wait()` returns. `stepFuture.get()` β†’ result already available.   | β€”                              | β€”                                                                                                       |
    -
    -If the wait duration hasn't elapsed when the step completes, the execution is suspended. If the step finishes *after* the wait, the step thread keeps the execution alive (prevents suspension) while the wait polls to completion.
    -
    diff --git a/docs/spec/map.md b/docs/spec/map.md
    deleted file mode 100644
    index ee63796f7..000000000
    --- a/docs/spec/map.md
    +++ /dev/null
    @@ -1,1562 +0,0 @@
    -# Design Document: Parallel Map Operation
    -
    -## Overview
    -
    -The `map()` operation is a data-driven concurrent execution primitive for the AWS Lambda Durable Execution Java SDK. It applies a single `MapFunction` across a collection of items concurrently, with each item executing as a `ChildContextOperation` with `OperationSubType.MAP_ITERATION`. Results are collected into a `BatchResult<T>` maintaining input order, with configurable completion criteria and per-item error isolation.
    -
    -Both synchronous (`map`) and asynchronous (`mapAsync`) variants are provided.
    -
    -### Architecture: BaseConcurrentOperation + ChildContextOperation
    -
    -The `map()` operation follows the prototype's architecture:
    -
    -- **`BaseConcurrentOperation<R>`** is an abstract class extending `BaseDurableOperation<R>` that provides the shared concurrent execution framework. It creates a root child context, manages a queue of `ChildContextOperation` instances, tracks success/failure counts, evaluates completion criteria, and handles concurrency limiting via an `activeBranches` counter. Both `MapOperation` and the future `ParallelOperation` extend this class.
    -- Each item runs as a **`ChildContextOperation`** with `OperationSubType.MAP_ITERATION`, created as a child of the root context. `ChildContextOperation` already handles running user code in a separate thread (via `DurableConfig.getExecutorService()`), creating child contexts with their own operation counter, checkpointing (start, succeed, fail), replay (cached results, replayChildren for large results), and suspend/resume (via `ExecutionManager`).
    -- A new **`MapOperation`** class extends `BaseConcurrentOperation` and provides map-specific logic: iterating over items, wrapping each item's `MapFunction` call into a `ChildContextOperation`, and aggregating results into `BatchResult`.
    -- **No separate thread pool** is created. The existing user-configured executor from `DurableConfig.getExecutorService()` is used (same one `ChildContextOperation` already uses).
    -- **Concurrency limiting** uses a queue + `activeBranches` counter (not a semaphore). When a branch completes (`onChildContextComplete` callback), the next queued branch is started β€” but only after the new branch's thread is registered (to prevent premature suspension).
    -- **Suspend/resume** is not our concern β€” `ExecutionManager` already handles this.
    -- **Thread registration ordering** is critical: when starting the next branch after one completes, the new branch's thread must be registered before the completed branch's thread is deregistered. Otherwise `ExecutionManager` might see zero active threads and suspend execution prematurely.
    -
    -### Design Rationale
    -
    -- `BaseConcurrentOperation` extends `BaseDurableOperation` because it integrates naturally into the SDK's operation lifecycle (start/replay/get) and follows the existing pattern of operations in the `operation/` package.
    -- The queue-based concurrency approach (instead of semaphore) is required because `execute()` is non-blocking β€” the calling thread cannot be blocked by a semaphore acquire.
    -- `MapOperation` creates N `ChildContextOperation` instances because `ChildContextOperation` already solves per-item execution, threading, checkpointing, and replay. Reimplementing this would violate DRY.
    -- The public API accepts `Collection<I>` with runtime validation rejecting known unordered types (e.g., `HashSet`) and documentation requiring deterministic iteration order. Internally converts to `List` via `List.copyOf(items)` for index-based access.
    -
    -## Architecture
    -
    -### Component Relationships
    -
    -```
    -DurableContext.map() / mapAsync()
    -  β”‚  (creates operationId, validates inputs, converts Collection to List)
    -  └── MapOperation extends BaseConcurrentOperation (new, in operation/ package)
    -        β”œβ”€β”€ Creates root child context
    -        β”œβ”€β”€ Creates N ChildContextOperation instances (one per item)
    -        β”œβ”€β”€ Queue-based concurrency limiting (activeBranches counter)
    -        β”œβ”€β”€ Completion evaluation (success/failure counts vs CompletionConfig)
    -        β”œβ”€β”€ onChildContextComplete callback: start next queued branch, evaluate completion
    -        β”œβ”€β”€ Aggregates results into BatchResult (map-specific)
    -        └── Handles map-specific checkpoint/replay
    -
    -BaseConcurrentOperation extends BaseDurableOperation (new, shared):
    -  β”œβ”€β”€ Root child context creation
    -  β”œβ”€β”€ Queue + activeBranches counter for concurrency limiting
    -  β”œβ”€β”€ Success/failure tracking (AtomicInteger counters)
    -  β”œβ”€β”€ CompletionConfig evaluation (when to stop)
    -  β”œβ”€β”€ onChildContextComplete callback (thread registration ordering)
    -  └── Abstract: subclasses provide item/branch-specific logic
    -
    -Reused (existing, no modifications):
    -  β”œβ”€β”€ ChildContextOperation β€” per-item execution, threading, checkpointing, replay
    -  β”œβ”€β”€ ExecutionManager β€” thread coordination, suspend/resume
    -  └── DurableConfig.getExecutorService() β€” user's thread pool
    -```
    -
    -## Architecture
    -
    -### Class Hierarchy
    -
    -```
    -BaseDurableOperation<T>                          (existing abstract class)
    -  β”œβ”€β”€ StepOperation<T>                           (existing)
    -  β”œβ”€β”€ WaitOperation                              (existing)
    -  β”œβ”€β”€ InvokeOperation<T>                         (existing)
    -  β”œβ”€β”€ ChildContextOperation<T>                   (existing β€” used per-item)
    -  β”œβ”€β”€ CallbackOperation<T>                       (existing)
    -  └── BaseConcurrentOperation<R>                 (NEW abstract class)
    -        β”œβ”€β”€ MapOperation<I,O>                    (NEW β€” extends BaseConcurrentOperation<BatchResult<O>>)
    -        └── (future) ParallelOperation           (future β€” extends BaseConcurrentOperation<BatchResult<Object>>)
    -```
    -
    -### Call Flow
    -
    -1. User calls `ctx.map("process-orders", orders, OrderResult.class, (ctx, order, i) -> processOrder(ctx, order))`
    -2. `DurableContext.map()` validates inputs:
    -   - `items` not null β†’ `IllegalArgumentException`
    -   - `function` not null β†’ `IllegalArgumentException`
    -   - `name` valid β†’ `ParameterValidator.validateOperationName(name)`
    -   - Rejects collections without stable iteration order (e.g., `HashSet`) β†’ `IllegalArgumentException`
    -3. Internally converts `Collection<I>` to `List<I>` via `List.copyOf(items)` for deterministic ordering
    -4. For empty collection: returns `BatchResult.empty()` immediately (no checkpoint overhead)
    -5. `DurableContext.map()` allocates an operation ID via `nextOperationId()` and creates a `MapOperation`
    -6. `MapOperation.execute()` (inherited from `BaseDurableOperation`) calls `start()` or `replay()`:
    -
    -   **start() flow (first execution):**
    -   - `BaseConcurrentOperation.start()` checkpoints the MAP operation start
    -   - Creates a root child context for the map operation
    -   - `MapOperation` iterates items, calling `branchInternal()` for each:
    -     - `branchInternal()` creates a `ChildContextOperation` named `"map-iteration-{i}"` with `OperationSubType.MAP_ITERATION`
    -     - If `activeBranches < maxConcurrency`: increments `activeBranches`, executes the branch immediately
    -     - Otherwise: enqueues the branch for later execution
    -   - When a branch completes (`onChildContextComplete` callback):
    -     - Decrements `activeBranches`
    -     - Records success (increments `succeeded` AtomicInteger) or failure (increments `failed` AtomicInteger)
    -     - Evaluates `CompletionConfig` criteria
    -     - If criteria are met (failure tolerance exceeded, min successful reached): sets `CompletionReason`, stops starting new items, does NOT wait for still-running items β€” their results are excluded from `BatchResult`
    -     - Otherwise: if queue is non-empty, registers the next branch's thread BEFORE deregistering the completed branch's thread, increments `activeBranches`, starts the next queued branch
    -   - When all branches are done (or early termination), aggregates results into `BatchResult`
    -
    -7. `MapOperation.get()` blocks until the operation completes and returns `BatchResult<O>`
    -
    -### Replay Flow
    -
    -On replay, when execution reaches the `map()` call:
    -
    -1. `BaseDurableOperation.execute()` finds the existing MAP operation in the checkpoint log and calls `replay()`
    -2. If the MAP operation is SUCCEEDED:
    -   - If the `BatchResult` was small (< 256KB) and was checkpointed directly: deserialize and return it immediately (no child context replay needed)
    -   - If the `BatchResult` was large (`replayChildren=true`): reconstruct by replaying each child context:
    -     - For each `map-iteration-{i}`, creates a `ChildContextOperation` and calls `replay()`
    -     - `ChildContextOperation.replay()` returns the cached result from the checkpoint log (no re-execution for normal-sized results)
    -     - For large child results (`replayChildren=true`), `ChildContextOperation` re-executes the child context code to reconstruct the result from its inner checkpointed operations
    -     - For FAILED children, returns the cached error
    -   - Aggregates all child results back into `BatchResult`
    -3. If the MAP operation is FAILED: `markAlreadyCompleted()` β€” the error is returned via `get()`
    -4. If the MAP operation is STARTED (interrupted mid-execution):
    -   - Completed children: replay returns cached results
    -   - Incomplete children: re-execute from their last checkpoint
    -   - Not-yet-started children: execute fresh
    -5. Returns the reconstructed `BatchResult`
    -
    -This follows the same pattern as `ChildContextOperation` β€” checkpoint the result directly when small, use `replayChildren` when large.
    -
    -
    -## Components and Interfaces
    -
    -### New: `CompletionConfig`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/CompletionConfig.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Controls when a concurrent operation (map or parallel) completes.
    - * Provides factory methods for common completion strategies.
    - */
    -public class CompletionConfig {
    -    private final Integer minSuccessful;
    -    private final Integer toleratedFailureCount;
    -    private final Double toleratedFailurePercentage;
    -
    -    private CompletionConfig(Integer minSuccessful, Integer toleratedFailureCount,
    -                             Double toleratedFailurePercentage) {
    -        this.minSuccessful = minSuccessful;
    -        this.toleratedFailureCount = toleratedFailureCount;
    -        this.toleratedFailurePercentage = toleratedFailurePercentage;
    -    }
    -
    -    /** All items must succeed. Zero failures tolerated. */
    -    public static CompletionConfig allSuccessful() {
    -        return new CompletionConfig(null, 0, null);
    -    }
    -
    -    /** All items run regardless of failures. Failures captured per-item. */
    -    public static CompletionConfig allCompleted() {
    -        return new CompletionConfig(null, null, null);
    -    }
    -
    -    /** Complete as soon as the first item succeeds. */
    -    public static CompletionConfig firstSuccessful() {
    -        return new CompletionConfig(1, null, null);
    -    }
    -
    -    public Integer minSuccessful() { return minSuccessful; }
    -    public Integer toleratedFailureCount() { return toleratedFailureCount; }
    -    public Double toleratedFailurePercentage() { return toleratedFailurePercentage; }
    -}
    -```
    -
    -### New: `CompletionReason` Enum
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/model/CompletionReason.java`
    -
    -```java
    -package software.amazon.lambda.durable.model;
    -
    -/** Indicates why a concurrent operation completed. */
    -public enum CompletionReason {
    -    ALL_COMPLETED,
    -    MIN_SUCCESSFUL_REACHED,
    -    FAILURE_TOLERANCE_EXCEEDED
    -}
    -```
    -
    -### New: `MapConfig`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/MapConfig.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Configuration for map operations. Separate from ParallelConfig with
    - * different defaults: lenient completion (all items run) and unlimited concurrency.
    - */
    -public class MapConfig {
    -    private final Integer maxConcurrency;
    -    private final CompletionConfig completionConfig;
    -
    -    private MapConfig(Builder builder) {
    -        this.maxConcurrency = builder.maxConcurrency;
    -        this.completionConfig = builder.completionConfig;
    -    }
    -
    -    /** Max concurrent items. Null means unlimited. */
    -    public Integer maxConcurrency() { return maxConcurrency; }
    -
    -    /** Completion criteria. Defaults to allCompleted(). */
    -    public CompletionConfig completionConfig() {
    -        return completionConfig != null ? completionConfig : CompletionConfig.allCompleted();
    -    }
    -
    -    public static Builder builder() { return new Builder(); }
    -
    -    public static class Builder {
    -        private Integer maxConcurrency;
    -        private CompletionConfig completionConfig;
    -
    -        public Builder maxConcurrency(Integer maxConcurrency) {
    -            this.maxConcurrency = maxConcurrency;
    -            return this;
    -        }
    -
    -        public Builder completionConfig(CompletionConfig completionConfig) {
    -            this.completionConfig = completionConfig;
    -            return this;
    -        }
    -
    -        public MapConfig build() { return new MapConfig(this); }
    -    }
    -}
    -```
    -
    -
    -### New: `MapFunction<I, O>` Functional Interface
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/MapFunction.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Function applied to each item in a map operation.
    - *
    - * @param <I> the input item type
    - * @param <O> the output result type
    - */
    -@FunctionalInterface
    -public interface MapFunction<I, O> {
    -    O apply(DurableContext context, I item, int index) throws Exception;
    -}
    -```
    -
    -### New: `BaseConcurrentOperation<R>`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/operation/BaseConcurrentOperation.java`
    -
    -Abstract class extending `BaseDurableOperation<R>` that provides the shared concurrent execution framework for both map and parallel operations. This follows the prototype's architecture where `BaseConcurrentOperation` is a proper abstract class in the operation hierarchy, not a utility.
    -
    -#### Responsibilities
    -
    -| Responsibility | Implementation |
    -|---|---|
    -| Root child context | Creates a root child context via `getContext().createChildContext(operationId, name)` β€” all branches are children of this root |
    -| Branch creation | `branchInternal(name, typeToken, serDes, function)` creates `ChildContextOperation` instances as children of the root context |
    -| Concurrency limiting | `ConcurrentLinkedQueue` of pending branches + `activeBranches` AtomicInteger counter. Starts new branches only when `activeBranches < maxConcurrency` |
    -| Success/failure tracking | `succeeded` and `failed` AtomicInteger counters, incremented in `onChildContextComplete` |
    -| Completion evaluation | Evaluates `CompletionConfig` criteria (toleratedFailureCount, toleratedFailurePercentage, minSuccessful) after each branch completes |
    -| Early termination | When criteria are met, sets `CompletionReason`, stops starting new branches, does NOT wait for still-running branches |
    -| Thread ordering | In `onChildContextComplete`: registers next branch's thread BEFORE deregistering completed branch's thread (prevents premature suspension) |
    -| Lifecycle | Extends `BaseDurableOperation` for standard execute/start/replay/get lifecycle |
    -| Callback pattern | `onChildContextComplete(ChildContextOperation<?> branch, boolean success)` β€” called by each branch when it finishes |
    -
    -#### Key Internal Methods
    -
    -```java
    -package software.amazon.lambda.durable.operation;
    -
    -import java.nio.charset.StandardCharsets;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.Queue;
    -import java.util.concurrent.ConcurrentLinkedQueue;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import java.util.function.Function;
    -import software.amazon.awssdk.services.lambda.model.ContextOptions;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.CompletionReason;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -public abstract class BaseConcurrentOperation<R> extends BaseDurableOperation<R> {
    -
    -    private static final int LARGE_RESULT_THRESHOLD = 256 * 1024;
    -
    -    private final List<ChildContextOperation<?>> branches = new ArrayList<>();
    -    private final Queue<ChildContextOperation<?>> pendingQueue = new ConcurrentLinkedQueue<>();
    -    private final AtomicInteger activeBranches = new AtomicInteger(0);
    -    private final AtomicInteger succeeded = new AtomicInteger(0);
    -    private final AtomicInteger failed = new AtomicInteger(0);
    -    private final Integer maxConcurrency;
    -    private final CompletionConfig completionConfig;
    -    private final OperationSubType subType;
    -    private volatile CompletionReason completionReason;
    -    private volatile boolean earlyTermination = false;
    -    private DurableContext rootContext;
    -
    -    protected BaseConcurrentOperation(
    -            String operationId,
    -            String name,
    -            OperationSubType subType,
    -            Integer maxConcurrency,
    -            CompletionConfig completionConfig,
    -            TypeToken<R> resultTypeToken,
    -            SerDes resultSerDes,
    -            DurableContext durableContext) {
    -        super(operationId, name, OperationType.CONTEXT, resultTypeToken, resultSerDes, durableContext);
    -        this.subType = subType;
    -        this.maxConcurrency = maxConcurrency;
    -        this.completionConfig = completionConfig;
    -    }
    -
    -    /** Creates a root child context and checkpoints the operation start. */
    -    @Override
    -    protected void start() {
    -        sendOperationUpdateAsync(
    -            OperationUpdate.builder()
    -                .action(OperationAction.START)
    -                .subType(subType.getValue()));
    -        this.rootContext = getContext().createChildContext(getOperationId(), getName());
    -        startBranches();
    -    }
    -
    -    /** Subclasses implement this to call branchInternal() for each branch. */
    -    protected abstract void startBranches();
    -
    -    /** Subclasses implement this to aggregate branch results into R. */
    -    protected abstract R aggregateResults();
    -
    -    /**
    -     * Creates a ChildContextOperation as a child of the root context and
    -     * either starts it immediately or enqueues it.
    -     */
    -    protected <T> ChildContextOperation<T> branchInternal(
    -            String branchName,
    -            TypeToken<T> typeToken,
    -            SerDes serDes,
    -            Function<DurableContext, T> function) {
    -        var branchOpId = rootContext.nextOperationId();
    -        var branch = new ChildContextOperation<>(
    -            branchOpId, branchName, function,
    -            OperationSubType.MAP_ITERATION, typeToken, serDes, rootContext);
    -        branches.add(branch);
    -
    -        if (maxConcurrency == null || activeBranches.get() < maxConcurrency) {
    -            activeBranches.incrementAndGet();
    -            branch.execute();
    -        } else {
    -            pendingQueue.add(branch);
    -        }
    -        return branch;
    -    }
    -
    -    /**
    -     * Called when a child context completes. Handles:
    -     * 1. Updating success/failure counters
    -     * 2. Evaluating CompletionConfig criteria
    -     * 3. Starting next queued branch with correct thread ordering
    -     */
    -    protected void onChildContextComplete(ChildContextOperation<?> branch, boolean success) {
    -        if (success) {
    -            succeeded.incrementAndGet();
    -        } else {
    -            failed.incrementAndGet();
    -        }
    -
    -        // Evaluate completion criteria
    -        if (shouldTerminateEarly()) {
    -            earlyTermination = true;
    -            activeBranches.decrementAndGet();
    -            // Do NOT wait for still-running branches
    -            if (activeBranches.get() == 0) {
    -                finalizeOperation();
    -            }
    -            return;
    -        }
    -
    -        // Start next queued branch with correct thread ordering:
    -        // register new branch thread BEFORE deregistering completed branch thread
    -        var next = pendingQueue.poll();
    -        if (next != null) {
    -            // activeBranches stays the same (one out, one in)
    -            next.execute();  // registers new thread internally
    -        } else {
    -            activeBranches.decrementAndGet();
    -        }
    -        // completed branch thread deregistered by ChildContextOperation
    -
    -        if (activeBranches.get() == 0 && pendingQueue.isEmpty()) {
    -            finalizeOperation();
    -        }
    -    }
    -
    -    private boolean shouldTerminateEarly() {
    -        int totalCompleted = succeeded.get() + failed.get();
    -
    -        // Check minSuccessful
    -        if (completionConfig.minSuccessful() != null
    -                && succeeded.get() >= completionConfig.minSuccessful()) {
    -            completionReason = CompletionReason.MIN_SUCCESSFUL_REACHED;
    -            return true;
    -        }
    -
    -        // Check toleratedFailureCount
    -        if (completionConfig.toleratedFailureCount() != null
    -                && failed.get() > completionConfig.toleratedFailureCount()) {
    -            completionReason = CompletionReason.FAILURE_TOLERANCE_EXCEEDED;
    -            return true;
    -        }
    -
    -        // Check toleratedFailurePercentage
    -        if (completionConfig.toleratedFailurePercentage() != null
    -                && totalCompleted > 0
    -                && ((double) failed.get() / totalCompleted)
    -                    > completionConfig.toleratedFailurePercentage()) {
    -            completionReason = CompletionReason.FAILURE_TOLERANCE_EXCEEDED;
    -            return true;
    -        }
    -
    -        return false;
    -    }
    -
    -    private void finalizeOperation() {
    -        if (completionReason == null) {
    -            completionReason = CompletionReason.ALL_COMPLETED;
    -        }
    -        // Checkpoint and complete β€” subclass aggregateResults() builds the final result
    -        // Checkpointing logic (small vs large) handled here
    -    }
    -
    -    // Accessors for subclasses
    -    protected List<ChildContextOperation<?>> getBranches() { return branches; }
    -    protected CompletionReason getCompletionReason() { return completionReason; }
    -    protected AtomicInteger getSucceeded() { return succeeded; }
    -    protected AtomicInteger getFailed() { return failed; }
    -    protected boolean isEarlyTermination() { return earlyTermination; }
    -    protected DurableContext getRootContext() { return rootContext; }
    -}
    -```
    -
    -#### Checkpoint Strategy (Small vs Large Results)
    -
    -`BaseConcurrentOperation` uses the same threshold as `ChildContextOperation` (256KB):
    -
    -- **Small result (< 256KB):** Serialize the aggregated result (e.g., `BatchResult`) and checkpoint it directly as the operation's payload. On replay, deserialize and return β€” no child replay needed.
    -- **Large result (β‰₯ 256KB):** Checkpoint with empty payload and `replayChildren=true`. On replay, re-create all branches and replay each `ChildContextOperation` to reconstruct the result from child checkpoints.
    -
    -This is identical to how `ChildContextOperation` handles its own large results.
    -
    -
    -### New: `MapOperation<I, O>`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/operation/MapOperation.java`
    -
    -Extends `BaseConcurrentOperation<BatchResult<O>>`. Orchestrates N `ChildContextOperation` instances, one per item. Aggregates results into `BatchResult`.
    -
    -```java
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.List;
    -import java.util.function.Function;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.DurableContext.MapFunction;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.BatchResult;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -
    -public class MapOperation<I, O> extends BaseConcurrentOperation<BatchResult<O>> {
    -    private final List<I> items;
    -    private final MapFunction<I, O> function;
    -    private final TypeToken<O> itemResultTypeToken;
    -
    -    public MapOperation(String operationId, String name, List<I> items,
    -                        MapFunction<I, O> function, MapConfig config,
    -                        TypeToken<O> itemResultTypeToken,
    -                        DurableContext durableContext) {
    -        super(operationId, name, OperationSubType.MAP,
    -              config.maxConcurrency(), config.completionConfig(),
    -              new TypeToken<BatchResult<O>>() {},
    -              durableContext.getDurableConfig().getSerDes(),
    -              durableContext);
    -        this.items = items;
    -        this.function = function;
    -        this.itemResultTypeToken = itemResultTypeToken;
    -    }
    -
    -    @Override
    -    protected void startBranches() {
    -        for (int i = 0; i < items.size(); i++) {
    -            final int index = i;
    -            branchInternal(
    -                "map-iteration-" + i,
    -                itemResultTypeToken,
    -                getContext().getDurableConfig().getSerDes(),
    -                childCtx -> {
    -                    try {
    -                        return function.apply(childCtx, items.get(index), index);
    -                    } catch (RuntimeException e) {
    -                        throw e;
    -                    } catch (Exception e) {
    -                        throw new RuntimeException(e);
    -                    }
    -                }
    -            );
    -        }
    -    }
    -
    -    @Override
    -    protected BatchResult<O> aggregateResults() {
    -        var results = new ArrayList<O>(Collections.nCopies(items.size(), null));
    -        var errors = new ArrayList<Throwable>(Collections.nCopies(items.size(), null));
    -
    -        for (int i = 0; i < getBranches().size(); i++) {
    -            var branch = getBranches().get(i);
    -            try {
    -                @SuppressWarnings("unchecked")
    -                var result = (O) branch.get();
    -                results.set(i, result);
    -            } catch (Exception e) {
    -                errors.set(i, e);
    -            }
    -        }
    -
    -        return new BatchResult<>(results, errors, getCompletionReason());
    -    }
    -
    -    @Override
    -    public BatchResult<O> get() {
    -        var op = waitForOperationCompletion();
    -        // ... handle SUCCEEDED (small vs large), FAILED, STARTED
    -        return aggregateResults();
    -    }
    -}
    -```
    -
    -Key implementation details:
    -- Operation ID is allocated in `DurableContext.map()` via `nextOperationId()` and passed to `MapOperation`
    -- Each item's `MapFunction` is wrapped as `Function<DurableContext, O>` for `ChildContextOperation`: `childCtx -> function.apply(childCtx, items.get(i), i)`
    -- The `MapFunction.apply()` declares `throws Exception` but `ChildContextOperation` expects `Function<DurableContext, T>` which doesn't declare checked exceptions β€” the wrapper catches and re-throws checked exceptions as `RuntimeException`
    -- `ChildContextOperation` is created with `OperationSubType.MAP_ITERATION` via `branchInternal()`
    -- Threading is handled by `ChildContextOperation` which uses `DurableConfig.getExecutorService()`
    -- Suspend/resume is handled by `ExecutionManager` (not our concern)
    -- On early termination (completion criteria met), still-running items are NOT waited for β€” their results are excluded from `BatchResult`
    -- On replay with `replayChildren=true`, `MapOperation` re-creates all branches via `startBranches()` and each `ChildContextOperation.replay()` returns cached results
    -
    -### New: `OperationSubType` Addition
    -
    -The existing `OperationSubType` enum gets one new value:
    -
    -```java
    -MAP_ITERATION("MapIteration");
    -```
    -
    -The existing `MAP("Map")` value is already present and is used for the top-level `BaseConcurrentOperation` checkpoint. `MAP_ITERATION` is used for each per-item `ChildContextOperation`.
    -
    -Note: `PARALLEL_BRANCH` will be added when the parallel operation is implemented.
    -
    -### Call Flow
    -
    -1. User calls `ctx.map("process-orders", orders, OrderResult.class, (ctx, order, i) -> processOrder(ctx, order))`
    -2. `DurableContext.map()` validates inputs (null checks on collection and function, rejects known unordered collections)
    -3. Creates the operation ID via `nextOperationId()`
    -4. Internally converts `Collection<I>` to `List<I>` via `List.copyOf(items)` for deterministic ordering
    -5. For empty collection: returns `BatchResult.empty()` immediately (no checkpoint overhead)
    -6. Creates a `MapOperation` with the operationId, items list, function, and `MapConfig`
    -7. `MapOperation.execute()` (non-blocking):
    -   - Checkpoints the MAP operation start via `BaseConcurrentOperation`
    -   - Creates a root child context for the map operation
    -   - For each item at index `i`:
    -     - Creates a `ChildContextOperation` named `"map-iteration-{i}"` with `OperationSubType.MAP_ITERATION`
    -     - Adds it to the queue
    -     - If `activeBranches < maxConcurrency`, starts execution immediately; otherwise stays queued
    -   - `ChildContextOperation` runs the `MapFunction` in a thread from `DurableConfig.getExecutorService()`
    -   - On completion, `onChildContextComplete` callback:
    -     - Decrements `activeBranches`
    -     - Records success or failure
    -     - Evaluates `CompletionConfig` criteria
    -     - If not done: registers next branch's thread, then starts next queued branch (thread ordering)
    -     - If done: checkpoints the MAP operation as SUCCEEDED with the `BatchResult` payload (if small) or empty payload with `replayChildren=true` (if large)
    -8. `map()` calls `operation.get()` which blocks until the MAP operation completes
    -9. Returns `BatchResult<O>` with results, errors, and `CompletionReason`
    -
    -### Replay Flow
    -
    -On replay, when execution reaches the `map()` call:
    -
    -1. `MapOperation` checks the checkpoint log for the top-level MAP operation
    -2. If the MAP operation is SUCCEEDED with a stored `BatchResult` (small result):
    -   - Returns the deserialized `BatchResult` directly β€” no child context replay needed
    -3. If the MAP operation is SUCCEEDED with `replayChildren=true` (large result):
    -   - Reconstructs the `BatchResult` by replaying each child context:
    -     - For each `map-iteration-{i}`, creates a `ChildContextOperation` and calls `replay()`
    -     - `ChildContextOperation.replay()` returns the cached result from the checkpoint log (no re-execution for normal-sized results)
    -     - For large child results (`replayChildren=true`), `ChildContextOperation` re-executes the child context code to reconstruct the result from its inner checkpointed operations
    -     - For FAILED children, returns the cached error
    -   - Aggregates all child results back into `BatchResult`
    -4. If the MAP operation is STARTED (interrupted mid-execution):
    -   - Completed children: replay returns cached results
    -   - Incomplete children: re-execute from their last checkpoint
    -   - Not-yet-started children: execute fresh
    -5. Returns the reconstructed `BatchResult`
    -
    -### Early Termination
    -
    -When `CompletionConfig` criteria are met (failure tolerance exceeded, min successful reached):
    -- `MapOperation` stops starting new queued items
    -- Already-running items are NOT waited for β€” their results are not included in the `BatchResult`
    -- The `BatchResult` includes results from completed items only, with appropriate `CompletionReason`
    -
    -
    -## Components and Interfaces
    -
    -### New: `CompletionConfig`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/CompletionConfig.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Controls when a concurrent operation (map or parallel) completes.
    - * Provides factory methods for common completion strategies.
    - */
    -public class CompletionConfig {
    -    private final Integer minSuccessful;
    -    private final Integer toleratedFailureCount;
    -    private final Double toleratedFailurePercentage;
    -
    -    private CompletionConfig(Integer minSuccessful, Integer toleratedFailureCount,
    -                             Double toleratedFailurePercentage) {
    -        this.minSuccessful = minSuccessful;
    -        this.toleratedFailureCount = toleratedFailureCount;
    -        this.toleratedFailurePercentage = toleratedFailurePercentage;
    -    }
    -
    -    /** All items must succeed. Zero failures tolerated. */
    -    public static CompletionConfig allSuccessful() {
    -        return new CompletionConfig(null, 0, null);
    -    }
    -
    -    /** All items run regardless of failures. Failures captured per-item. */
    -    public static CompletionConfig allCompleted() {
    -        return new CompletionConfig(null, null, null);
    -    }
    -
    -    /** Complete as soon as the first item succeeds. */
    -    public static CompletionConfig firstSuccessful() {
    -        return new CompletionConfig(1, null, null);
    -    }
    -
    -    public Integer minSuccessful() { return minSuccessful; }
    -    public Integer toleratedFailureCount() { return toleratedFailureCount; }
    -    public Double toleratedFailurePercentage() { return toleratedFailurePercentage; }
    -}
    -```
    -
    -### New: `CompletionReason` Enum
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/model/CompletionReason.java`
    -
    -```java
    -package software.amazon.lambda.durable.model;
    -
    -/** Indicates why a concurrent operation completed. */
    -public enum CompletionReason {
    -    ALL_COMPLETED,
    -    MIN_SUCCESSFUL_REACHED,
    -    FAILURE_TOLERANCE_EXCEEDED
    -}
    -```
    -
    -### New: `MapConfig`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/MapConfig.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Configuration for map operations. Separate from ParallelConfig with
    - * different defaults: lenient completion (all items run) and unlimited concurrency.
    - */
    -public class MapConfig {
    -    private final Integer maxConcurrency;
    -    private final CompletionConfig completionConfig;
    -
    -    private MapConfig(Builder builder) {
    -        this.maxConcurrency = builder.maxConcurrency;
    -        this.completionConfig = builder.completionConfig;
    -    }
    -
    -    /** Max concurrent items. Null means unlimited. */
    -    public Integer maxConcurrency() { return maxConcurrency; }
    -
    -    /** Completion criteria. Defaults to allCompleted(). */
    -    public CompletionConfig completionConfig() {
    -        return completionConfig != null ? completionConfig : CompletionConfig.allCompleted();
    -    }
    -
    -    public static Builder builder() { return new Builder(); }
    -
    -    public static class Builder {
    -        private Integer maxConcurrency;
    -        private CompletionConfig completionConfig;
    -
    -        public Builder maxConcurrency(Integer maxConcurrency) {
    -            this.maxConcurrency = maxConcurrency;
    -            return this;
    -        }
    -
    -        public Builder completionConfig(CompletionConfig completionConfig) {
    -            this.completionConfig = completionConfig;
    -            return this;
    -        }
    -
    -        public MapConfig build() { return new MapConfig(this); }
    -    }
    -}
    -```
    -
    -### New: `MapFunction<I, O>` Functional Interface
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/MapFunction.java`
    -
    -```java
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Function applied to each item in a map operation.
    - *
    - * @param <I> the input item type
    - * @param <O> the output result type
    - */
    -@FunctionalInterface
    -public interface MapFunction<I, O> {
    -    O apply(DurableContext context, I item, int index) throws Exception;
    -}
    -```
    -
    -
    -### Modified: `DurableContext` β€” New `map` and `mapAsync` Methods
    -
    -New methods added to `DurableContext`. The public API accepts `Collection<I>` and converts internally to `List<I>` via `List.copyOf(items)`. Collections without stable iteration order (e.g., `HashSet`, `HashMap.values()`) are rejected at runtime with an `IllegalArgumentException`.
    -
    -**API warning (Javadoc):** The `items` parameter must be a collection with a stable, deterministic iteration order (e.g., `List`, `LinkedHashSet`). Collections without stable ordering (e.g., `HashSet`) will throw `IllegalArgumentException` at runtime because checkpoint-and-replay correctness requires items to be processed in the same order across invocations.
    -
    -```java
    -// ========== map methods (4 overloads, name always required) ==========
    -
    -// Full signature with name, result type (Class), and config
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config)
    -
    -// Without config (uses MapConfig defaults: unlimited concurrency, allCompleted)
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function)
    -
    -// TypeToken variants for generic result types
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, TypeToken<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, TypeToken<O> resultType,
    -                                  MapFunction<I, O> function)
    -
    -// ========== mapAsync methods (4 overloads, name always required) ==========
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    Class<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    Class<O> resultType, MapFunction<I, O> function)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    TypeToken<O> resultType, MapFunction<I, O> function)
    -```
    -
    -Note: Consistent with all other `DurableContext` operations (`step`, `wait`, `invoke`, `createCallback`, `runInChildContext`), `name` is always required as the first parameter. There are no overloads that omit the name.
    -
    -Core implementation sketch:
    -
    -```java
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config) {
    -    return mapAsync(name, items, TypeToken.get(resultType), function, config).get();
    -}
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -        TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config) {
    -    Objects.requireNonNull(items, "items cannot be null");
    -    Objects.requireNonNull(function, "function cannot be null");
    -    Objects.requireNonNull(resultType, "resultType cannot be null");
    -    ParameterValidator.validateOperationName(name);
    -    validateStableIterationOrder(items);
    -
    -    var itemList = List.copyOf(items);  // defensive copy + deterministic ordering
    -    if (itemList.isEmpty()) {
    -        return completedFuture(BatchResult.empty());
    -    }
    -
    -    var effectiveConfig = config != null ? config : MapConfig.builder().build();
    -    var operationId = nextOperationId();
    -    var operation = new MapOperation<>(operationId, name, itemList, function,
    -        effectiveConfig, resultType, this);
    -    operation.execute();
    -    return operation;
    -}
    -
    -/**
    - * Validates that the collection has a stable iteration order.
    - * Rejects HashSet, HashMap.values(), etc.
    - */
    -private static <I> void validateStableIterationOrder(Collection<I> items) {
    -    if (items instanceof java.util.HashSet
    -            || items instanceof java.util.HashMap.values().getClass()) {
    -        throw new IllegalArgumentException(
    -            "items must have a stable iteration order (e.g., List, LinkedHashSet). "
    -            + "HashSet and similar unordered collections are not supported because "
    -            + "checkpoint-and-replay requires deterministic item ordering.");
    -    }
    -}
    -```
    -
    -The `validateStableIterationOrder` method uses `instanceof` checks against known unordered collection types. This is a best-effort runtime check β€” it cannot catch all possible unordered collections (e.g., custom implementations), but it catches the most common mistakes. The Javadoc warning serves as the primary defense.
    -
    -### New: `BaseConcurrentOperation<R>`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/operation/BaseConcurrentOperation.java`
    -
    -Abstract class extending `BaseDurableOperation<R>` that provides the shared concurrent execution framework for map and parallel operations.
    -
    -```java
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.ArrayList;
    -import java.util.Queue;
    -import java.util.concurrent.ConcurrentLinkedQueue;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import software.amazon.lambda.durable.ConcurrencyConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -
    -public abstract class BaseConcurrentOperation<R> extends BaseDurableOperation<R> {
    -
    -    private final ArrayList<ChildContextOperation<?>> branches;
    -    private final Queue<ChildContextOperation<?>> queue;
    -    private final DurableContext rootContext;
    -    private final AtomicInteger succeeded;
    -    private final AtomicInteger failed;
    -    private final OperationSubType subType;
    -    private final ConcurrencyConfig config;
    -    private final AtomicInteger activeBranches;
    -
    -    // Creates root child context, initializes queue and counters
    -    // branchInternal() β€” creates a ChildContextOperation, adds to queue, starts if concurrency allows
    -    // executeNewBranchIfConcurrencyAllows() β€” starts next queued branch if under maxConcurrency
    -    // onChildContextComplete() β€” decrements activeBranches, records success/failure,
    -    //   evaluates completion, starts next branch (with correct thread registration ordering)
    -    // isDone() β€” checks if minSuccessful reached or toleratedFailureCount exceeded
    -}
    -```
    -
    -Key behaviors:
    -- `branchInternal()` creates a `ChildContextOperation` as a child of `rootContext` and queues it
    -- `executeNewBranchIfConcurrencyAllows()` checks `activeBranches < maxConcurrency` before starting
    -- `onChildContextComplete()` is called by `ChildContextOperation` when done β€” it must register the next branch's thread before the current branch's thread is deregistered
    -- When `isDone()` returns true, checkpoints the operation as SUCCEEDED
    -
    -### New: `MapOperation<I, O>`
    -
    -Location: `sdk/src/main/java/software/amazon/lambda/durable/operation/MapOperation.java`
    -
    -Extends `BaseConcurrentOperation` with map-specific logic.
    -
    -```java
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.DurableContext.MapFunction;
    -import software.amazon.lambda.durable.model.BatchResult;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -
    -public class MapOperation<I, O> extends BaseConcurrentOperation<BatchResult<O>> {
    -    private final List<I> items;
    -    private final MapFunction<I, O> function;
    -
    -    // Constructor receives operationId (created by DurableContext.map()),
    -    // name, items (already List.copyOf'd), function, config, durableContext
    -
    -    // start(): for each item at index i, calls branchInternal() with:
    -    //   - name: "map-iteration-{i}"
    -    //   - OperationSubType.MAP_ITERATION
    -    //   - function wrapper: childCtx -> function.apply(childCtx, items.get(i), i)
    -
    -    // get(): aggregates all branch results into BatchResult<O>
    -    //   maintaining input order, with CompletionReason from isDone()
    -}
    -```
    -
    -### New: `OperationSubType` Addition
    -
    -The existing `OperationSubType` enum gets one new value:
    -
    -```java
    -MAP_ITERATION("MapIteration");
    -```
    -
    -Note: `PARALLEL_BRANCH` will be added when the parallel operation is implemented.
    -
    -### Modified: `DurableContext` β€” New `map` and `mapAsync` Methods
    -
    -New methods added to `DurableContext`. The public API accepts `Collection<I>` with runtime validation.
    -
    -```java
    -// ========== map methods ==========
    -
    -// Full signature with name, result type (Class), and config
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config)
    -
    -// Without config (uses MapConfig defaults: unlimited concurrency, allCompleted)
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function)
    -
    -// TypeToken variants for generic result types
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, TypeToken<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, TypeToken<O> resultType,
    -                                  MapFunction<I, O> function)
    -
    -// ========== mapAsync methods ==========
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    Class<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    Class<O> resultType, MapFunction<I, O> function)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config)
    -
    -public <I, O> DurableFuture<BatchResult<O>> mapAsync(String name, Collection<I> items,
    -    TypeToken<O> resultType, MapFunction<I, O> function)
    -```
    -
    -Note: Consistent with all other `DurableContext` operations (`step`, `wait`, `invoke`, `createCallback`, `runInChildContext`), `name` is always required as the first parameter.
    -
    -Core implementation sketch:
    -
    -```java
    -public <I, O> BatchResult<O> map(String name, Collection<I> items, Class<O> resultType,
    -                                  MapFunction<I, O> function, MapConfig config) {
    -    Objects.requireNonNull(items, "items cannot be null");
    -    Objects.requireNonNull(function, "function cannot be null");
    -    ParameterValidator.validateOperationName(name);
    -    ParameterValidator.validateOrderedCollection(items);  // rejects HashSet etc.
    -    var itemList = List.copyOf(items);  // defensive copy + deterministic ordering
    -    if (itemList.isEmpty()) {
    -        return BatchResult.empty();
    -    }
    -    var operationId = nextOperationId();
    -    var operation = new MapOperation<>(operationId, name, itemList, function,
    -        config != null ? config : MapConfig.builder().build(), this);
    -    operation.execute();
    -    return operation.get();
    -}
    -```
    -
    -### Modified: `BatchResult<T>` Enhancements
    -
    -The existing `BatchResult` class gains new fields and methods:
    -
    -```java
    -// New field
    -private final CompletionReason completionReason;
    -
    -// New accessor methods
    -public CompletionReason completionReason() { return completionReason; }
    -public ExecutionStatus status() {
    -    return failureCount() == 0 ? ExecutionStatus.SUCCEEDED : ExecutionStatus.FAILED;
    -}
    -public int successCount() { /* count non-null results with null errors */ }
    -public int failureCount() { /* count non-null errors */ }
    -public int startedCount() { /* count items that were started */ }
    -public int totalCount() { /* total items including not-started */ }
    -public List<T> succeeded() { /* filter to successful results */ }
    -public List<Throwable> failed() { /* filter to failed errors */ }
    -
    -// New static factory
    -public static <T> BatchResult<T> empty() {
    -    return new BatchResult<>(List.of(), List.of(), CompletionReason.ALL_COMPLETED);
    -}
    -```
    -
    -### Reused Types (No Modifications)
    -
    -| Type | Package | Role |
    -|------|---------|------|
    -| `DurableFuture<T>` | `software.amazon.lambda.durable` | Async handle for `mapAsync` |
    -| `TypeToken<T>` | `software.amazon.lambda.durable` | Generic result type for deserialization |
    -| `ChildContextOperation<T>` | `software.amazon.lambda.durable.operation` | Per-item child context execution, threading, checkpointing, replay, suspend/resume |
    -| `ExecutionManager` | `software.amazon.lambda.durable.execution` | Thread coordination, suspend/resume |
    -| `DurableConfig.getExecutorService()` | `software.amazon.lambda.durable` | User's thread pool for running child context code |
    -
    -
    -### Modified: `BatchResult<T>` Enhancements
    -
    -The existing `BatchResult` class (or new class if it doesn't exist yet) gains new fields and methods:
    -
    -```java
    -package software.amazon.lambda.durable.model;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.List;
    -
    -/**
    - * Result container for concurrent operations (map, parallel).
    - * Maintains input order: getResult(i) corresponds to the i-th input item.
    - */
    -public class BatchResult<T> {
    -    private final List<T> results;
    -    private final List<Throwable> errors;
    -    private final CompletionReason completionReason;
    -
    -    public BatchResult(List<T> results, List<Throwable> errors, CompletionReason completionReason) {
    -        this.results = Collections.unmodifiableList(new ArrayList<>(results));
    -        this.errors = Collections.unmodifiableList(new ArrayList<>(errors));
    -        this.completionReason = completionReason;
    -    }
    -
    -    /** Result at index i, or null if that item failed or was not started. */
    -    public T getResult(int i) { return results.get(i); }
    -
    -    /** Error at index i, or null if that item succeeded or was not started. */
    -    public Throwable getError(int i) { return errors.get(i); }
    -
    -    /** Why the operation completed. */
    -    public CompletionReason completionReason() { return completionReason; }
    -
    -    /** SUCCEEDED if no failures, FAILED otherwise. */
    -    public ExecutionStatus status() {
    -        return failureCount() == 0 ? ExecutionStatus.SUCCEEDED : ExecutionStatus.FAILED;
    -    }
    -
    -    /** True iff all started items succeeded (no errors). */
    -    public boolean allSucceeded() { return failureCount() == 0; }
    -
    -    /** Count of items that succeeded. */
    -    public int successCount() {
    -        return (int) results.stream().filter(r -> r != null).count()
    -             - (int) errors.stream().filter(e -> e != null).count()
    -             + /* adjust for null-returning successes */ 0;
    -        // Simplified: count indices where error is null and the item was started
    -    }
    -
    -    /** Count of items that failed. */
    -    public int failureCount() {
    -        return (int) errors.stream().filter(e -> e != null).count();
    -    }
    -
    -    /** Count of items that were started (succeeded + failed). */
    -    public int startedCount() {
    -        int started = 0;
    -        for (int i = 0; i < results.size(); i++) {
    -            if (results.get(i) != null || errors.get(i) != null) {
    -                started++;
    -            }
    -        }
    -        return started;
    -    }
    -
    -    /** Total items including not-started ones. */
    -    public int totalCount() { return results.size(); }
    -
    -    /** Filter to successful results (preserving order, skipping nulls/failures). */
    -    public List<T> succeeded() {
    -        var list = new ArrayList<T>();
    -        for (int i = 0; i < results.size(); i++) {
    -            if (errors.get(i) == null && results.get(i) != null) {
    -                list.add(results.get(i));
    -            }
    -        }
    -        return Collections.unmodifiableList(list);
    -    }
    -
    -    /** Filter to failed errors (preserving order, skipping successes). */
    -    public List<Throwable> failed() {
    -        var list = new ArrayList<Throwable>();
    -        for (var e : errors) {
    -            if (e != null) {
    -                list.add(e);
    -            }
    -        }
    -        return Collections.unmodifiableList(list);
    -    }
    -
    -    /** Empty result β€” zero items, all succeeded, ALL_COMPLETED. */
    -    public static <T> BatchResult<T> empty() {
    -        return new BatchResult<>(List.of(), List.of(), CompletionReason.ALL_COMPLETED);
    -    }
    -}
    -```
    -
    -### Reused Types (No Modifications)
    -
    -| Type | Package | Role |
    -|------|---------|------|
    -| `DurableFuture<T>` | `software.amazon.lambda.durable` | Async handle for `mapAsync` |
    -| `TypeToken<T>` | `software.amazon.lambda.durable` | Generic result type for deserialization |
    -| `ChildContextOperation<T>` | `software.amazon.lambda.durable.operation` | Per-item child context execution, threading, checkpointing, replay, suspend/resume |
    -| `ExecutionManager` | `software.amazon.lambda.durable.execution` | Thread coordination, suspend/resume |
    -| `DurableConfig.getExecutorService()` | `software.amazon.lambda.durable` | User's thread pool for running child context code |
    -| `BaseDurableOperation<T>` | `software.amazon.lambda.durable.operation` | Base class providing execute/start/replay/get lifecycle |
    -
    -
    -## Data Models
    -
    -### New Types
    -
    -| Type | Kind | Location | Notes |
    -|------|------|----------|-------|
    -| `MapFunction<I, O>` | `@FunctionalInterface` | `software.amazon.lambda.durable` | `O apply(DurableContext ctx, I item, int index) throws Exception` |
    -| `CompletionConfig` | Class | `software.amazon.lambda.durable` | Factory methods: `allSuccessful()`, `allCompleted()`, `firstSuccessful()` |
    -| `CompletionReason` | Enum | `software.amazon.lambda.durable.model` | `ALL_COMPLETED`, `MIN_SUCCESSFUL_REACHED`, `FAILURE_TOLERANCE_EXCEEDED` |
    -| `MapConfig` | Class (Builder) | `software.amazon.lambda.durable` | `maxConcurrency` (Integer, nullable), `completionConfig` (defaults to `allCompleted()`) |
    -| `BaseConcurrentOperation<R>` | Abstract class | `software.amazon.lambda.durable.operation` | Extends `BaseDurableOperation<R>`, shared concurrent execution framework |
    -| `MapOperation<I, O>` | Class | `software.amazon.lambda.durable.operation` | Extends `BaseConcurrentOperation<BatchResult<O>>`, aggregates into BatchResult |
    -| `BatchResult<T>` | Class | `software.amazon.lambda.durable.model` | Result container with ordered results, errors, completionReason, status, filtered accessors |
    -
    -### Modified Types
    -
    -| Type | Change |
    -|------|--------|
    -| `OperationSubType` | Add `MAP_ITERATION("MapIteration")` |
    -| `DurableContext` | Add 4 `map` + 4 `mapAsync` methods, add `validateStableIterationOrder()` |
    -
    -### Branch Naming Convention
    -
    -Each item at index `i` produces a child context named `"map-iteration-{i}"` (e.g., `"map-iteration-0"`, `"map-iteration-1"`). This naming:
    -- Provides meaningful names in checkpoint data and logs
    -- Is deterministic across replays (critical for checkpoint-and-replay correctness)
    -- Avoids collisions since indices are unique within a single `map()` call
    -- Uses the `"map-iteration-"` prefix to distinguish from parallel's future `"parallel-branch-"` prefix
    -
    -### Serialization
    -
    -No new serialization logic is needed. The `ChildContextOperation` infrastructure already handles serializing/deserializing child context results via `SerDes`. The `Class<O>` or `TypeToken<O>` parameter flows through to the child context operation for deserialization.
    -
    -### Checkpoint Structure
    -
    -The map operation produces the following checkpoint hierarchy:
    -
    -```
    -CONTEXT (MAP) β€” operationId from DurableContext.nextOperationId()
    -  β”œβ”€β”€ CONTEXT (MAP_ITERATION) β€” "map-iteration-0" β€” child of root context
    -  β”‚     └── (inner operations from MapFunction: steps, waits, etc.)
    -  β”œβ”€β”€ CONTEXT (MAP_ITERATION) β€” "map-iteration-1" β€” child of root context
    -  β”‚     └── (inner operations from MapFunction)
    -  └── ... N iterations
    -```
    -
    -The top-level MAP context is checkpointed by `BaseConcurrentOperation`. Each MAP_ITERATION is checkpointed by `ChildContextOperation`. Inner operations within each iteration are checkpointed by their respective operation classes.
    -
    -
    -## Data Models
    -
    -### New Types
    -
    -| Type | Kind | Location | Notes |
    -|------|------|----------|-------|
    -| `MapFunction<I, O>` | `@FunctionalInterface` | `software.amazon.lambda.durable` | `O apply(DurableContext ctx, I item, int index) throws Exception` |
    -| `CompletionConfig` | Class | `software.amazon.lambda.durable` | Factory methods: `allSuccessful()`, `allCompleted()`, `firstSuccessful()` |
    -| `CompletionReason` | Enum | `software.amazon.lambda.durable.model` | `ALL_COMPLETED`, `MIN_SUCCESSFUL_REACHED`, `FAILURE_TOLERANCE_EXCEEDED` |
    -| `MapConfig` | Class (Builder) | `software.amazon.lambda.durable` | `maxConcurrency` (Integer, nullable), `completionConfig` (defaults to `allCompleted()`) |
    -| `BaseConcurrentOperation<R>` | Abstract class | `software.amazon.lambda.durable.operation` | Shared base for map and parallel: root context, queue, concurrency, completion |
    -| `MapOperation<I, O>` | Class | `software.amazon.lambda.durable.operation` | Extends `BaseConcurrentOperation`, map-specific logic, aggregates into `BatchResult` |
    -
    -### Modified Types
    -
    -| Type | Change |
    -|------|--------|
    -| `BatchResult<T>` | Add `completionReason` field, `status()`, `successCount()`, `failureCount()`, `succeeded()`, `failed()`, `empty()` |
    -| `OperationSubType` | Add `MAP_ITERATION("MapIteration")` |
    -
    -### Branch Naming Convention
    -
    -Each item at index `i` produces a child context named `"map-iteration-{i}"` (e.g., `"map-iteration-0"`, `"map-iteration-1"`). This naming:
    -- Provides meaningful names in checkpoint data and logs
    -- Is deterministic across replays (critical for checkpoint-and-replay correctness)
    -- Avoids collisions since indices are unique within a single `map()` call
    -- Uses the `"map-iteration-"` prefix to distinguish from parallel's future `"parallel-branch-"` prefix
    -
    -### Serialization
    -
    -No new serialization logic is needed. The `ChildContextOperation` infrastructure already handles serializing/deserializing child context results via `SerDes`. The `Class<O>` or `TypeToken<O>` parameter flows through to the child context operation for deserialization.
    -
    -### Collection Ordering Validation
    -
    -The public API accepts `Collection<I>` but requires deterministic iteration order for replay correctness. At runtime, `ParameterValidator.validateOrderedCollection()` rejects known unordered types:
    -- `HashSet` (and subclasses)
    -- `HashMap.values()`, `HashMap.keySet()`, `HashMap.entrySet()`
    -
    -Accepted ordered collection types include: `List`, `LinkedHashSet`, `TreeSet`, `ArrayDeque`, `LinkedHashMap.values()`.
    -
    -The Javadoc for `map()` and `mapAsync()` clearly documents: "The collection must have deterministic iteration order. Unordered collections like HashSet will be rejected. Use List, LinkedHashSet, or TreeSet."
    -
    -
    -## Correctness Properties
    -
    -### Property 1: Items-to-function bijection
    -
    -*For any* non-empty collection of N items and any `MapFunction`, calling `map()` shall create exactly N `ChildContextOperation` instances and pass each item to the function exactly once, such that the set of (item, index) pairs received by the function equals the set of (items[i], i) pairs from the input.
    -
    -**Validates: Requirements 3.1, 3.2**
    -
    -### Property 2: Result ordering preservation
    -
    -*For any* collection of items and a deterministic `MapFunction` that may succeed or fail per item, the returned `BatchResult` shall satisfy: for all `0 <= i < N`, `getResult(i)` equals the function's return value for item `i` when it succeeds, and `getError(i)` is non-null with the thrown exception when item `i` fails.
    -
    -**Validates: Requirements 5.1, 5.2, 6.2**
    -
    -### Property 3: allSucceeded consistency
    -
    -*For any* `BatchResult` returned by `map()`, `allSucceeded()` shall return `true` if and only if `getError(i)` is `null` for every index `i`. Equivalently, `failureCount() == 0` iff `allSucceeded()`.
    -
    -**Validates: Requirements 5.3, 5.4**
    -
    -### Property 4: Error isolation completeness
    -
    -*For any* collection of items where a random subset of items throw exceptions, all non-failing items shall still produce their expected results in the `BatchResult`, and `successCount() + failureCount()` shall equal the input collection size.
    -
    -**Validates: Requirements 6.1, 6.3**
    -
    -### Property 5: Concurrency limiting
    -
    -*For any* collection of items and any `MapConfig` with `maxConcurrency` set to a positive integer M, the number of concurrently executing `MapFunction` invocations shall never exceed M at any point during execution.
    -
    -**Validates: Requirements 4.2, 4.3**
    -
    -### Property 6: Replay round-trip
    -
    -*For any* valid input collection and deterministic `MapFunction`, executing `map()` and then replaying the execution from checkpointed state shall produce a `BatchResult` equivalent to the original β€” same results at the same indices, with no re-execution of previously completed items.
    -
    -**Validates: Requirements 3.4, 8.1, 8.2, 8.3**
    -
    -### Property 7: Failure tolerance completion
    -
    -*For any* collection of items and a `CompletionConfig` with `toleratedFailureCount` set to F, if more than F items fail, the `BatchResult` shall have `completionReason` equal to `FAILURE_TOLERANCE_EXCEEDED`.
    -
    -**Validates: Requirements 11.4**
    -
    -### Property 8: Min successful completion
    -
    -*For any* collection of items and a `CompletionConfig` with `minSuccessful` set to S, if at least S items succeed, the `BatchResult` shall have `completionReason` equal to `MIN_SUCCESSFUL_REACHED` and `successCount()` shall be greater than or equal to S.
    -
    -**Validates: Requirements 11.5**
    -
    -
    -## Error Handling
    -
    -### Input Validation Errors
    -
    -| Condition | Exception | When |
    -|-----------|-----------|------|
    -| `items` is `null` | `IllegalArgumentException("items cannot be null")` | Before any operation ID is allocated |
    -| `function` is `null` | `IllegalArgumentException("function cannot be null")` | Before any operation ID is allocated |
    -| `items` is unordered (e.g., `HashSet`) | `IllegalArgumentException("items must have deterministic iteration order")` | Before any operation ID is allocated |
    -| `name` is invalid (empty, too long, non-ASCII) | `IllegalArgumentException` | Via existing `ParameterValidator.validateOperationName()` |
    -
    -These validations happen eagerly in the `DurableContext.map()`/`mapAsync()` methods, before creating the operation ID or `MapOperation`. This ensures no operation IDs are consumed and no checkpoints are created for invalid calls.
    -
    -### Per-Item Errors
    -
    -Per-item error handling is managed by `MapOperation` via `ChildContextOperation`:
    -
    -- If a `MapFunction` throws any exception (checked or unchecked), `ChildContextOperation` catches it and checkpoints the failure. `MapOperation` records it in the `BatchResult` at the corresponding index.
    -- Other items continue executing (unless `CompletionConfig` criteria are exceeded).
    -- The `BatchResult` provides `allSucceeded()`, `failureCount()`, and `failed()` for inspecting errors.
    -
    -### Early Termination
    -
    -When `CompletionConfig` criteria are exceeded:
    -- `toleratedFailureCount` exceeded: `MapOperation` stops starting new items, sets `CompletionReason.FAILURE_TOLERANCE_EXCEEDED`
    -- `toleratedFailurePercentage` exceeded: same behavior
    -- `minSuccessful` reached: `MapOperation` stops starting new items, sets `CompletionReason.MIN_SUCCESSFUL_REACHED`
    -- Already-running items are NOT waited for β€” their results are not included in the `BatchResult`
    -
    -### Empty Collection Handling
    -
    -An empty input collection is not an error. `map()` returns `BatchResult.empty()` immediately β€” a `BatchResult` with zero results, zero errors, `allSucceeded() == true`, and `CompletionReason.ALL_COMPLETED`. This avoids unnecessary checkpoint overhead.
    -
    -### Null Items Within the Collection
    -
    -Individual null items within the collection are not validated by `map()` itself. If a user passes a collection containing null elements, the `MapFunction` will receive `null` as the item. It is the user's responsibility to handle null items in their function, or the function will throw a `NullPointerException` which will be captured in the `BatchResult` at that index.
    -
    -
    -## Testing Strategy
    -
    -### Property-Based Testing
    -
    -Property-based tests use **jqwik** (https://jqwik.net/) as the PBT library for Java. jqwik integrates natively with JUnit 5 and provides powerful generators and shrinking.
    -
    -Each correctness property from the design maps to a single property-based test. Tests should run a minimum of 100 iterations.
    -
    -Each test must be tagged with a comment referencing the design property:
    -```java
    -// Feature: parallel-map-operation, Property 1: Items-to-function bijection
    -```
    -
    -**Property tests to implement:**
    -
    -1. **Items-to-function bijection** β€” Generate random lists of 1-100 items. Use a recording `MapFunction` that stores each received (item, index) pair. Verify the recorded pairs match the input list exactly.
    -
    -2. **Result ordering preservation** β€” Generate random lists and a function that deterministically transforms each item (e.g., `String::toUpperCase`). Optionally fail at random indices. Verify `getResult(i)` and `getError(i)` correspond to the correct items.
    -
    -3. **allSucceeded consistency** β€” Generate random `BatchResult` instances with varying success/failure patterns. Verify `allSucceeded()` is true iff `failureCount() == 0`.
    -
    -4. **Error isolation completeness** β€” Generate random lists of 2-50 items. Pick a random subset to fail. Verify all non-failing items have correct results, failing items have errors, and `successCount() + failureCount() == items.size()`.
    -
    -5. **Concurrency limiting** β€” Generate random lists and random `maxConcurrency` values (1-10). Use an `AtomicInteger` to track concurrent execution count. Verify the peak never exceeds `maxConcurrency`.
    -
    -6. **Replay round-trip** β€” Generate random lists with deterministic functions. Run via `LocalDurableTestRunner`, then replay. Verify the replayed `BatchResult` equals the original and no items were re-executed.
    -
    -7. **Failure tolerance completion** β€” Generate random lists (10-50 items) and random `toleratedFailureCount` values. Make a subset of items fail exceeding the tolerance. Verify `completionReason` is `FAILURE_TOLERANCE_EXCEEDED`.
    -
    -8. **Min successful completion** β€” Generate random lists (10-50 items) and random `minSuccessful` values. Verify that once enough items succeed, `completionReason` is `MIN_SUCCESSFUL_REACHED` and `successCount() >= minSuccessful`.
    -
    -### Unit Tests
    -
    -- **Empty collection**: `map()` with empty collection returns `BatchResult.empty()`
    -- **Null collection**: `map()` with null collection throws `IllegalArgumentException`
    -- **Null function**: `map()` with null function throws `IllegalArgumentException`
    -- **Unordered collection**: `map()` with `HashSet` throws `IllegalArgumentException`
    -- **Single item**: `map()` with one item returns correct result
    -- **MapFunction interface**: Verify `@FunctionalInterface` annotation, lambda compatibility
    -- **TypeToken variant**: `map()` with `TypeToken` for generic result types deserializes correctly
    -- **mapAsync returns immediately**: `mapAsync()` returns a `DurableFuture` without blocking
    -- **mapAsync get() blocks**: Calling `get()` on the future returns the `BatchResult`
    -- **CompletionConfig factory methods**: Verify `allSuccessful()`, `allCompleted()`, `firstSuccessful()` produce correct field values
    -- **MapConfig defaults**: Verify default `maxConcurrency` is null and default `completionConfig` is `allCompleted()`
    -- **BatchResult.empty()**: Verify zero results, zero errors, `allSucceeded() == true`, `CompletionReason.ALL_COMPLETED`
    -- **BatchResult status**: Verify `status()` returns `SUCCEEDED` when no failures, `FAILED` otherwise
    -- **BatchResult filtered lists**: Verify `succeeded()`, `failed()` return correct subsets
    -
    -### Integration Tests
    -
    -Integration tests use `LocalDurableTestRunner` to verify end-to-end behavior:
    -
    -- **Multi-item map with durable steps**: Each item's function calls `ctx.step()` β€” verify all steps checkpoint correctly
    -- **Map with partial failure**: Some items succeed, some fail β€” verify `BatchResult` contains correct mix
    -- **Map with concurrency limit**: 20 items with `maxConcurrency=3` β€” verify correct results
    -- **Map replay after interruption**: Run a map, simulate interruption, replay β€” verify no re-execution of completed items
    -- **Map with CompletionConfig.allSuccessful()**: One item fails β€” verify behavior matches strict completion
    -- **Map with CompletionConfig.firstSuccessful()**: Verify early termination after first success
    -- **Nested map**: A map function that itself calls `map()` β€” verify correct behavior with nested child contexts
    -
    -### Test File Locations
    -
    -| Test Type | Location |
    -|-----------|----------|
    -| Unit tests | `sdk/src/test/java/software/amazon/lambda/durable/DurableContextMapTest.java` |
    -| Property tests | `sdk/src/test/java/software/amazon/lambda/durable/MapOperationPropertyTest.java` |
    -| Integration tests | `sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapIntegrationTest.java` |
    -
    -
    -## Correctness Properties
    -
    -*A property is a characteristic or behavior that should hold true across all valid executions of a system β€” essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.*
    -
    -### Property 1: Items-to-function bijection
    -
    -*For any* non-empty collection of N items and any `MapFunction`, calling `map()` shall create exactly N `ChildContextOperation` instances and pass each item to the function exactly once, such that the set of (item, index) pairs received by the function equals the set of (items[i], i) pairs from the input.
    -
    -**Validates: Requirements 3.1, 3.2**
    -
    -### Property 2: Result ordering preservation
    -
    -*For any* collection of items and a deterministic `MapFunction` that may succeed or fail per item, the returned `BatchResult` shall satisfy: for all `0 <= i < N`, `getResult(i)` equals the function's return value for item `i` when it succeeds, and `getError(i)` is non-null with the thrown exception when item `i` fails.
    -
    -**Validates: Requirements 5.1, 5.2, 6.2**
    -
    -### Property 3: allSucceeded consistency
    -
    -*For any* `BatchResult` returned by `map()`, `allSucceeded()` shall return `true` if and only if `getError(i)` is `null` for every index `i`. Equivalently, `failureCount() == 0` iff `allSucceeded()`.
    -
    -**Validates: Requirements 5.3, 5.4**
    -
    -### Property 4: Error isolation completeness
    -
    -*For any* collection of items where a random subset of items throw exceptions, all non-failing items shall still produce their expected results in the `BatchResult`, and `successCount() + failureCount()` shall equal `startedCount()`.
    -
    -**Validates: Requirements 6.1, 6.3**
    -
    -### Property 5: Concurrency limiting
    -
    -*For any* collection of items and any `MapConfig` with `maxConcurrency` set to a positive integer M, the number of concurrently executing `MapFunction` invocations shall never exceed M at any point during execution.
    -
    -**Validates: Requirements 4.2, 4.3**
    -
    -### Property 6: Replay round-trip
    -
    -*For any* valid input collection and deterministic `MapFunction`, executing `map()` and then replaying the execution from checkpointed state shall produce a `BatchResult` equivalent to the original β€” same results at the same indices, with no re-execution of previously completed items.
    -
    -**Validates: Requirements 3.4, 8.1, 8.2, 8.3**
    -
    -### Property 7: Failure tolerance completion
    -
    -*For any* collection of items and a `CompletionConfig` with `toleratedFailureCount` set to F, if more than F items fail, the `BatchResult` shall have `completionReason` equal to `FAILURE_TOLERANCE_EXCEEDED` and `startedCount()` shall be less than or equal to `totalCount()` (early termination β€” not all items were started).
    -
    -**Validates: Requirements 11.4**
    -
    -### Property 8: Min successful completion
    -
    -*For any* collection of items and a `CompletionConfig` with `minSuccessful` set to S, if at least S items succeed, the `BatchResult` shall have `completionReason` equal to `MIN_SUCCESSFUL_REACHED` and `successCount()` shall be greater than or equal to S.
    -
    -**Validates: Requirements 11.5**
    -
    -
    -## Error Handling
    -
    -### Input Validation Errors
    -
    -| Condition | Exception | When |
    -|-----------|-----------|------|
    -| `items` is `null` | `IllegalArgumentException("items cannot be null")` | Before any operation ID is allocated |
    -| `function` is `null` | `IllegalArgumentException("function cannot be null")` | Before any operation ID is allocated |
    -| `resultType` is `null` | `IllegalArgumentException("resultType cannot be null")` | Before any operation ID is allocated |
    -| `name` is invalid (empty, too long, non-ASCII) | `IllegalArgumentException` | Via existing `ParameterValidator.validateOperationName()` |
    -| `items` has unstable iteration order (e.g., `HashSet`) | `IllegalArgumentException` | Runtime check before operation ID allocation |
    -
    -These validations happen eagerly in the `map()`/`mapAsync()` methods, before creating the `MapOperation`. This ensures no operation IDs are consumed and no checkpoints are created for invalid calls.
    -
    -### Per-Item Errors
    -
    -Per-item error handling is managed by `ChildContextOperation` and aggregated by `MapOperation`:
    -
    -- If a `MapFunction` throws any exception (checked or unchecked), `ChildContextOperation` catches it via its existing failure handling path (`handleChildContextFailure`), checkpoints the failure, and the `onChildContextComplete` callback is invoked with `success=false`.
    -- `MapOperation.aggregateResults()` collects the error into the `BatchResult` at the corresponding index.
    -- Other items continue executing (unless `CompletionConfig` criteria are exceeded).
    -- The `BatchResult` provides `allSucceeded()`, `failureCount()`, and `failed()` for inspecting errors.
    -
    -### Completion Criteria Errors
    -
    -When `CompletionConfig` criteria are exceeded (evaluated by `BaseConcurrentOperation.shouldTerminateEarly()`):
    -- `toleratedFailureCount` exceeded: sets `CompletionReason.FAILURE_TOLERANCE_EXCEEDED`, stops starting new items from the queue
    -- `toleratedFailurePercentage` exceeded: same behavior
    -- `minSuccessful` reached: sets `CompletionReason.MIN_SUCCESSFUL_REACHED`, stops starting new items from the queue
    -- Still-running items are NOT waited for β€” their results are excluded from `BatchResult`. The `BatchResult.startedCount()` will be less than `totalCount()` if items were never started, and results from still-running items at the time of early termination are not included.
    -
    -### Empty Collection Handling
    -
    -An empty input collection is not an error. `map()` returns `BatchResult.empty()` immediately β€” a `BatchResult` with zero results, zero errors, `allSucceeded() == true`, and `CompletionReason.ALL_COMPLETED`. This avoids unnecessary checkpoint overhead. No operation ID is allocated.
    -
    -### Null Items Within the Collection
    -
    -Individual null items within the collection are not validated by `map()` itself. `List.copyOf(items)` will throw `NullPointerException` if any element is null (this is standard Java behavior for `List.copyOf`). If users need to pass nullable items, they should use a wrapper type or `Optional`.
    -
    -### Unordered Collection Handling
    -
    -Collections without stable iteration order (e.g., `HashSet`, `HashMap.values()`) are rejected at runtime with `IllegalArgumentException`. This is a best-effort check using `instanceof` against known unordered JDK collection types. Custom unordered collections may not be caught β€” the Javadoc warning serves as the primary defense. The rationale is that checkpoint-and-replay correctness requires items to be processed in the same order across invocations; an unordered collection would produce different orderings on replay, causing result mismatches.
    -
    -
    -## Testing Strategy
    -
    -### Property-Based Testing
    -
    -Property-based tests use **jqwik** (https://jqwik.net/) as the PBT library for Java. jqwik integrates natively with JUnit 5 and provides powerful generators and shrinking.
    -
    -Each correctness property from the design maps to a single property-based test. Tests should run a minimum of 100 iterations.
    -
    -Each test must be tagged with a comment referencing the design property:
    -```java
    -// Feature: parallel-map-operation, Property 1: Items-to-function bijection
    -```
    -
    -**Property tests to implement:**
    -
    -1. **Items-to-function bijection** β€” Generate random lists of 1-100 items. Use a recording `MapFunction` that stores each received (item, index) pair in a `ConcurrentHashMap`. Verify the recorded pairs match the input list exactly: same size, same (item, index) mappings, no duplicates, no missing items.
    -
    -2. **Result ordering preservation** β€” Generate random lists of strings and a deterministic function (e.g., `String::toUpperCase`). Optionally fail at random indices by throwing `RuntimeException`. Verify `getResult(i)` equals the expected transformed value for successful items, and `getError(i)` is non-null for failed items.
    -
    -3. **allSucceeded consistency** β€” Generate random `BatchResult` instances with varying success/failure patterns (random mix of null and non-null errors). Verify `allSucceeded()` returns true if and only if `failureCount() == 0`.
    -
    -4. **Error isolation completeness** β€” Generate random lists of 2-50 items. Pick a random subset of indices to fail. Use a `MapFunction` that throws for the chosen indices and returns a deterministic value for others. Verify all non-failing items have correct results, failing items have non-null errors, and `successCount() + failureCount() == startedCount()`.
    -
    -5. **Concurrency limiting** β€” Generate random lists of 5-30 items and random `maxConcurrency` values (1-10). Use an `AtomicInteger` to track concurrent execution count (increment on entry, decrement on exit with a small sleep to create overlap). Record the peak concurrent count. Verify the peak never exceeds `maxConcurrency`.
    -
    -6. **Replay round-trip** β€” Generate random lists of 1-20 items with deterministic functions. Run via `LocalDurableTestRunner`, then replay the execution. Verify the replayed `BatchResult` equals the original (same results at same indices) and use a counter to verify no items were re-executed during replay.
    -
    -7. **Failure tolerance completion** β€” Generate random lists of 10-50 items and random `toleratedFailureCount` values (0 to N/2). Configure a `MapFunction` that fails for a subset exceeding the tolerance. Verify `completionReason` is `FAILURE_TOLERANCE_EXCEEDED` and `startedCount() <= totalCount()`.
    -
    -8. **Min successful completion** β€” Generate random lists of 10-50 items and random `minSuccessful` values (1 to N/2). Configure a `MapFunction` where enough items succeed. Verify `completionReason` is `MIN_SUCCESSFUL_REACHED` and `successCount() >= minSuccessful`.
    -
    -### Unit Tests
    -
    -Unit tests cover specific examples, edge cases, and error conditions:
    -
    -- **Empty collection**: `map()` with empty list returns `BatchResult.empty()` β€” zero results, zero errors, `allSucceeded() == true`, `CompletionReason.ALL_COMPLETED`
    -- **Null collection**: `map()` with null collection throws `IllegalArgumentException` with message "items cannot be null"
    -- **Null function**: `map()` with null function throws `IllegalArgumentException` with message "function cannot be null"
    -- **Unordered collection**: `map()` with `HashSet` throws `IllegalArgumentException` with message about stable iteration order
    -- **Single item**: `map()` with one item returns `BatchResult` with one result at index 0
    -- **MapFunction interface**: Verify `@FunctionalInterface` annotation, lambda compatibility, checked exception support
    -- **TypeToken variant**: `map()` with `TypeToken<List<String>>` for generic result types deserializes correctly
    -- **mapAsync returns immediately**: `mapAsync()` returns a `DurableFuture` without blocking the calling thread
    -- **mapAsync get() blocks**: Calling `get()` on the returned `DurableFuture` blocks until complete and returns the `BatchResult`
    -- **CompletionConfig factory methods**: Verify `allSuccessful()` returns `toleratedFailureCount=0`, `allCompleted()` returns all nulls, `firstSuccessful()` returns `minSuccessful=1`
    -- **MapConfig defaults**: Verify default `maxConcurrency` is null (unlimited) and default `completionConfig` is `allCompleted()`
    -- **MapConfig builder**: Verify builder sets `maxConcurrency` and `completionConfig` correctly
    -- **BatchResult.empty()**: Verify zero results, zero errors, `allSucceeded() == true`, `CompletionReason.ALL_COMPLETED`, `totalCount() == 0`
    -- **BatchResult status**: Verify `status()` returns `SUCCEEDED` when no failures, `FAILED` when any failure exists
    -- **BatchResult filtered lists**: Verify `succeeded()` returns only successful results, `failed()` returns only errors, both in order
    -- **BatchResult counts**: Verify `successCount()`, `failureCount()`, `startedCount()`, `totalCount()` are consistent
    -
    -### Integration Tests
    -
    -Integration tests use `LocalDurableTestRunner` to verify end-to-end behavior:
    -
    -- **Multi-item map with durable steps**: Each item's function calls `ctx.step()` β€” verify all steps checkpoint correctly and results are aggregated into `BatchResult`
    -- **Map with partial failure**: Some items succeed, some fail β€” verify `BatchResult` contains correct mix of results and errors at correct indices
    -- **Map with concurrency limit**: 20 items with `maxConcurrency=3` β€” verify correct results and that no more than 3 items execute concurrently
    -- **Map replay after interruption**: Run a map, simulate interruption mid-execution, replay β€” verify completed items return cached results without re-execution and incomplete items resume
    -- **Map with CompletionConfig.allSuccessful()**: One item fails β€” verify `CompletionReason.FAILURE_TOLERANCE_EXCEEDED` and early termination
    -- **Map with CompletionConfig.firstSuccessful()**: Multiple items, first one succeeds β€” verify `CompletionReason.MIN_SUCCESSFUL_REACHED` and `successCount() >= 1`
    -- **Map with large results (replayChildren)**: Items return results totaling > 256KB β€” verify checkpoint uses `replayChildren=true` and replay reconstructs correctly
    -- **Nested map**: A `MapFunction` that itself calls `ctx.map()` β€” verify correct behavior with nested child contexts and independent checkpointing
    -- **Map with empty collection**: Verify no checkpoints are created and `BatchResult.empty()` is returned
    -
    -### Test File Locations
    -
    -| Test Type | Location |
    -|-----------|----------|
    -| Unit tests | `sdk/src/test/java/software/amazon/lambda/durable/DurableContextMapTest.java` |
    -| Property tests | `sdk/src/test/java/software/amazon/lambda/durable/MapOperationPropertyTest.java` |
    -| Integration tests | `sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapIntegrationTest.java` |
    diff --git a/docs/spec/waitForCondition.md b/docs/spec/waitForCondition.md
    deleted file mode 100644
    index 30d71df2d..000000000
    --- a/docs/spec/waitForCondition.md
    +++ /dev/null
    @@ -1,230 +0,0 @@
    -# Design: waitForCondition for Durable Execution Java SDK
    -
    -## Overview
    -
    -`waitForCondition` is a durable operation that repeatedly polls a user-supplied check function until it signals done. Between polls, the Lambda suspends without consuming compute. State is checkpointed after each check, so progress survives interruptions. It follows the same checkpoint-and-replay model as existing operations (`step`, `wait`, `invoke`) and mirrors the JavaScript SDK's `waitForCondition` implementation.
    -
    -## Architecture
    -
    -### How it works
    -
    -1. User calls `ctx.waitForCondition(name, resultType, checkFunc)` (or with optional config)
    -2. A `WaitForConditionOperation` is created with a unique operation ID
    -3. On first execution:
    -   - Checkpoint START with subtype `WAIT_FOR_CONDITION`
    -   - Execute the check function with `initialState` and a `StepContext`
    -   - If check function returns `WaitForConditionResult.stopPolling(value)`: checkpoint SUCCEED, return value
    -   - If check function returns `WaitForConditionResult.continuePolling(value)`: call wait strategy to compute delay, checkpoint RETRY with state and delay, poll for READY, then loop
    -   - If check function throws: checkpoint FAIL, propagate the error
    -4. On replay:
    -   - SUCCEEDED: return cached result (skip re-execution)
    -   - FAILED: re-throw cached error
    -   - PENDING: wait for READY transition, then resume polling
    -   - STARTED/READY: resume execution from current attempt and state
    -
    -### File Structure
    -
    -```
    -sdk/src/main/java/software/amazon/lambda/durable/
    -β”œβ”€β”€ WaitForConditionResult.java          # Check function return type (value + isDone)
    -β”œβ”€β”€ WaitForConditionConfig.java          # Optional config (wait strategy, custom SerDes)
    -β”œβ”€β”€ retry/
    -β”‚   β”œβ”€β”€ WaitForConditionWaitStrategy.java  # Functional interface: (T state, int attempt) β†’ Duration
    -β”‚   └── WaitStrategies.java               # Factory methods + Presets.DEFAULT
    -β”œβ”€β”€ operation/
    -β”‚   └── WaitForConditionOperation.java    # Operation implementation
    -β”œβ”€β”€ exception/
    -β”‚   └── WaitForConditionException.java    # Thrown when max attempts exceeded
    -└── model/
    -    └── OperationSubType.java             # WAIT_FOR_CONDITION enum value
    -```
    -
    -### Class Diagram
    -
    -```
    -DurableContext (interface)
    -  β”œβ”€β”€ waitForCondition(name, Class<T>, checkFunc) β†’ T
    -  β”œβ”€β”€ waitForCondition(name, Class<T>, checkFunc, config) β†’ T
    -  β”œβ”€β”€ waitForCondition(name, TypeToken<T>, checkFunc) β†’ T
    -  β”œβ”€β”€ waitForCondition(name, TypeToken<T>, checkFunc, config) β†’ T
    -  β”œβ”€β”€ waitForConditionAsync(name, Class<T>, checkFunc) β†’ DurableFuture<T>
    -  β”œβ”€β”€ waitForConditionAsync(name, Class<T>, checkFunc, config) β†’ DurableFuture<T>
    -  β”œβ”€β”€ waitForConditionAsync(name, TypeToken<T>, checkFunc) β†’ DurableFuture<T>
    -  └── waitForConditionAsync(name, TypeToken<T>, checkFunc, config) β†’ DurableFuture<T>
    -         β”‚
    -         β–Ό
    -WaitForConditionOperation<T> extends BaseDurableOperation<T>
    -  β”œβ”€β”€ start()           β†’ checkpoint START, execute check loop
    -  β”œβ”€β”€ replay(existing)  β†’ handle SUCCEEDED/FAILED/PENDING/STARTED/READY
    -  β”œβ”€β”€ get()             β†’ block, deserialize result or throw
    -  └── executeCheckLogic(currentState, attempt)
    -         β”‚
    -         β”œβ”€β”€ calls checkFunc(state, stepContext) β†’ WaitForConditionResult<T>
    -         β”‚     β”œβ”€β”€ stopPolling(value)      β†’ checkpoint SUCCEED
    -         β”‚     └── continuePolling(value)  β†’ call waitStrategy, checkpoint RETRY, poll, loop
    -         └── on error β†’ checkpoint FAIL
    -```
    -
    -## Detailed Design
    -
    -### WaitForConditionResult\<T\> (Record)
    -
    -```java
    -public record WaitForConditionResult<T>(T value, boolean isDone) {
    -    public static <T> WaitForConditionResult<T> stopPolling(T value);
    -    public static <T> WaitForConditionResult<T> continuePolling(T value);
    -}
    -```
    -
    -Returned by the check function to signal whether the condition is met:
    -- `stopPolling(value)`: condition met, return `value` as the final result
    -- `continuePolling(value)`: keep polling, pass `value` to the next check and to the wait strategy
    -
    -### WaitForConditionWaitStrategy\<T\> (Functional Interface)
    -
    -```java
    -@FunctionalInterface
    -public interface WaitForConditionWaitStrategy<T> {
    -    Duration evaluate(T state, int attempt);
    -}
    -```
    -
    -Computes the delay before the next poll. Only called when the check function returns `continuePolling`. Throws `WaitForConditionException` when max attempts exceeded.
    -
    -- `state`: the current state from the check function
    -- `attempt`: 0-based attempt number
    -- Returns: `Duration` delay before next poll
    -
    -Built-in strategies (from `WaitStrategies`) ignore the state parameter and compute delays based solely on the attempt number.
    -
    -### WaitStrategies (Factory)
    -
    -```java
    -public final class WaitStrategies {
    -
    -    public static class Presets {
    -        public static final WaitForConditionWaitStrategy<?> DEFAULT = ...;
    -    }
    -
    -    public static <T> WaitForConditionWaitStrategy<T> defaultStrategy();
    -
    -    public static <T> WaitForConditionWaitStrategy<T> exponentialBackoff(
    -            int maxAttempts, Duration initialDelay, Duration maxDelay,
    -            double backoffRate, JitterStrategy jitter);
    -
    -    public static <T> WaitForConditionWaitStrategy<T> fixedDelay(
    -            int maxAttempts, Duration fixedDelay);
    -}
    -```
    -
    -Mirrors `RetryStrategies` with static factory methods and a `Presets` class.
    -
    -Default parameters (matching JS SDK): maxAttempts=60, initialDelay=5s, maxDelay=300s, backoffRate=1.5, jitter=FULL.
    -
    -Delay formula: `max(1, round(jitter(min(initialDelay Γ— backoffRate^attempt, maxDelay))))`
    -
    -Validation: maxAttempts > 0, initialDelay >= 1s, maxDelay >= 1s, backoffRate >= 1.0, jitter not null.
    -
    -### WaitForConditionConfig\<T\>
    -
    -```java
    -public class WaitForConditionConfig<T> {
    -    public static <T> Builder<T> builder();
    -
    -    public WaitForConditionWaitStrategy<T> waitStrategy();   // defaults to WaitStrategies.defaultStrategy()
    -    public SerDes serDes();                                  // defaults to null (uses handler default)
    -    public T initialState();                                 // defaults to null
    -    public Builder<T> toBuilder();                           // for internal SerDes injection
    -
    -    public static class Builder<T> {
    -        public Builder<T> waitStrategy(WaitForConditionWaitStrategy<T> waitStrategy);
    -        public Builder<T> serDes(SerDes serDes);
    -        public Builder<T> initialState(T state);
    -        public WaitForConditionConfig<T> build();
    -    }
    -}
    -```
    -
    -Holds only optional parameters. The required parameter `checkFunc` is direct method argument on `DurableContext.waitForCondition()`.
    -
    -### DurableContext API (8 signatures)
    -
    -Delegation chain (same pattern as `step()`):
    -- All sync methods β†’ corresponding async method β†’ `.get()`
    -- All Class-based methods β†’ TypeToken-based via `TypeToken.get(resultType)`
    -- All no-config methods β†’ config method with `WaitForConditionConfig.builder().build()`
    -- Core method: `waitForConditionAsync(name, TypeToken<T>, checkFunc, config)`
    -
    -The core method validates: `name` (via `ParameterValidator`), `typeToken` not null, `checkFunc` not null, `config` not null.
    -
    -### WaitForConditionOperation\<T\>
    -
    -Extends `BaseDurableOperation<T>`. Key behaviors:
    -
    -- **start()**: Begins the check loop from `initialState` at attempt 0
    -- **replay(existing)**: Handles all operation statuses
    -- **resumeCheckLoop(existing)**: Deserializes checkpointed state (falls back to `initialState` if null, throws `SerDesException` if corrupt)
    -- **executeCheckLogic(state, attempt)**: Runs check function on user executor, handles `WaitForConditionResult`, checkpoints accordingly
    -- **get()**: Blocks on completion, deserializes result or reconstructs and throws the original exception
    -
    -All checkpoint updates use `OperationType.STEP` and `OperationSubType.WAIT_FOR_CONDITION`.
    -
    -### Error Handling
    -
    -| Scenario | Behavior |
    -|----------|----------|
    -| Check function throws | Checkpoint FAIL, propagate via `get()` |
    -| Strategy throws `WaitForConditionException` | Checkpoint FAIL, propagate via `get()` |
    -| Checkpoint data fails to deserialize on replay | Throws `SerDesException` (propagates to handler) |
    -| `SuspendExecutionException` during check | Re-thrown (Lambda suspension) |
    -| `UnrecoverableDurableExecutionException` during check | Terminates execution |
    -
    -## Usage Examples
    -
    -### Minimal (default config)
    -
    -```java
    -var result = ctx.waitForCondition(
    -    "wait-for-shipment",
    -    String.class,
    -    (status, stepCtx) -> {
    -        var currentStatus = getOrderStatus(orderId);
    -        return "SHIPPED".equals(currentStatus)
    -            ? WaitForConditionResult.stopPolling(currentStatus)
    -            : WaitForConditionResult.continuePolling(currentStatus);
    -    },
    -    "PENDING");
    -```
    -
    -### Custom strategy
    -
    -```java
    -var config = WaitForConditionConfig.<String>builder()
    -    .waitStrategy(WaitStrategies.fixedDelay(10, Duration.ofSeconds(30)))
    -    .build();
    -
    -var result = ctx.waitForCondition(
    -    "wait-for-approval",
    -    String.class,
    -    (status, stepCtx) -> {
    -        var current = checkApprovalStatus(requestId);
    -        return "APPROVED".equals(current)
    -            ? WaitForConditionResult.stopPolling(current)
    -            : WaitForConditionResult.continuePolling(current);
    -    },
    -    "PENDING_REVIEW",
    -    config);
    -```
    -
    -## Testing
    -
    -### Unit Tests
    -- `WaitForConditionOperationTest`: replay (SUCCEEDED, FAILED, STARTED, READY, PENDING, unexpected status), null checkpoint data, corrupt checkpoint data
    -- `WaitStrategiesTest`: exponential backoff formula, max delay cap, max attempts enforcement, jitter bounds, validation, factory methods, presets
    -- `WaitForConditionConfigTest`: default strategy, custom strategy, SerDes, toBuilder
    -
    -### Integration Tests
    -- `WaitForConditionIntegrationTest`: basic polling, custom strategy, max attempts exceeded, check function error (with error type verification), replay across invocations, property tests for state/attempt correctness
    -
    -### Example
    -- `WaitForConditionExample`: simulates polling order shipment status (PENDING β†’ PROCESSING β†’ SHIPPED)
    diff --git a/examples/README.md b/examples/README.md
    deleted file mode 100644
    index 3eb183e0a..000000000
    --- a/examples/README.md
    +++ /dev/null
    @@ -1,98 +0,0 @@
    -# AWS Lambda Durable Execution SDK Examples
    -
    -Example applications demonstrating the AWS Lambda Durable Execution SDK for Java.
    -
    -## Prerequisites
    -
    -- Java 17+
    -- Maven 3.8+
    -- AWS SAM CLI (for deployment)
    -- AWS credentials configured
    -
    -## Local Testing
    -
    -Run examples locally without deploying to AWS using `LocalDurableTestRunner`:
    -
    -```bash
    -# Build and install the SDK to local Maven repo (required since SDK is not yet published)
    -mvn clean install -DskipTests   # from project root
    -
    -cd examples
    -
    -# Run all tests
    -mvn test
    -
    -# Run specific test
    -mvn test -Dtest=SimpleStepExampleTest
    -```
    -
    -The local runner executes in-memory and skips wait durationsβ€”ideal for fast iteration and CI/CD.
    -
    -## Deploy to AWS
    -
    -```bash
    -cd examples
    -mvn clean package
    -sam build
    -sam deploy --guided
    -```
    -
    -On first deploy, SAM will prompt for stack name and region. Subsequent deploys use saved config:
    -
    -```bash
    -sam deploy
    -```
    -
    -The SAM template configures:
    -- `DurableConfig` with `ExecutionTimeout` and `RetentionPeriodInDays`
    -- IAM permissions for `lambda:CheckpointDurableExecutions` and `lambda:GetDurableExecutionState`
    -
    -## Invoke Deployed Functions
    -
    -```bash
    -sam remote invoke SimpleStepExampleFunction \
    -  --event '{"name":"World"}' \
    -  --stack-name durable-sdk-examples
    -```
    -
    -## Cloud Integration Tests
    -
    -Run tests against deployed functions using `CloudDurableTestRunner`:
    -
    -```bash
    -cd examples
    -mvn test -Dtest=CloudBasedIntegrationTest -Dtest.cloud.enabled=true
    -```
    -
    -The tests auto-detect your AWS account and region from credentials. Override if needed:
    -
    -```bash
    -mvn test -Dtest=CloudBasedIntegrationTest \
    -  -Dtest.cloud.enabled=true \
    -  -Dtest.aws.account=123456789012 \
    -  -Dtest.aws.region=us-east-1
    -```
    -
    -## Examples
    -
    -| Example | Description |
    -|---------|-------------|
    -| [SimpleStepExample](src/main/java/com/amazonaws/lambda/durable/examples/SimpleStepExample.java) | Basic sequential steps |
    -| [WaitExample](src/main/java/com/amazonaws/lambda/durable/examples/WaitExample.java) | Suspend execution with `wait()` |
    -| [RetryExample](src/main/java/com/amazonaws/lambda/durable/examples/RetryExample.java) | Configuring retry strategies |
    -| [ErrorHandlingExample](src/main/java/com/amazonaws/lambda/durable/examples/ErrorHandlingExample.java) | Handling `StepFailedException` and `StepInterruptedException` |
    -| [GenericTypesExample](src/main/java/com/amazonaws/lambda/durable/examples/GenericTypesExample.java) | Working with `List<T>` and `Map<K,V>` |
    -| [CustomConfigExample](src/main/java/com/amazonaws/lambda/durable/examples/CustomConfigExample.java) | Custom Lambda client and SerDes |
    -| [WaitAtLeastExample](src/main/java/com/amazonaws/lambda/durable/examples/WaitAtLeastExample.java) | Concurrent `stepAsync()` with `wait()` |
    -| [WaitAsyncExample](src/main/java/com/amazonaws/lambda/durable/examples/WaitAsyncExample.java) | Non-blocking `waitAsync()` with concurrent step |
    -| [RetryInProcessExample](src/main/java/com/amazonaws/lambda/durable/examples/RetryInProcessExample.java) | In-process retry with concurrent operations |
    -| [WaitAtLeastInProcessExample](src/main/java/com/amazonaws/lambda/durable/examples/WaitAtLeastInProcessExample.java) | Wait completes before async step (no suspension) |
    -| [ManyAsyncStepsExample](src/main/java/com/amazonaws/lambda/durable/examples/ManyAsyncStepsExample.java) | Performance test with 500 concurrent async steps |
    -| [SimpleMapExample](src/main/java/com/amazonaws/lambda/durable/examples/SimpleMapExample.java) | Concurrent map over a collection with durable steps |
    -| [WaitForConditionExample](src/main/java/software/amazon/lambda/durable/examples/WaitForConditionExample.java) | Poll a condition until met with `waitForCondition()` |
    -
    -## Cleanup
    -
    -```bash
    -sam delete
    -```
    diff --git a/examples/build-and-run.sh b/examples/build-and-run.sh
    deleted file mode 100755
    index 8d8274150..000000000
    --- a/examples/build-and-run.sh
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -#!/bin/bash
    -set -e
    -
    -# Install SDK
    -cd ..
    -mvn install -DskipTests
    -
    -# Package example
    -cd examples
    -mvn clean package -DskipTests
    -
    -# Run SAM local invoke
    -sam local invoke SimpleStepExampleFunction --event event.json --skip-pull-image
    diff --git a/examples/event.json b/examples/event.json
    deleted file mode 100644
    index 4ba335402..000000000
    --- a/examples/event.json
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -{
    -  "name": "Alice"
    -}
    diff --git a/examples/pom.xml b/examples/pom.xml
    deleted file mode 100644
    index 9a5b0f9b6..000000000
    --- a/examples/pom.xml
    +++ /dev/null
    @@ -1,143 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<project xmlns="http://maven.apache.org/POM/4.0.0"
    -         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -    <modelVersion>4.0.0</modelVersion>
    -
    -    <parent>
    -        <groupId>software.amazon.lambda.durable</groupId>
    -        <artifactId>aws-durable-execution-sdk-java-parent</artifactId>
    -        <version>1.0.1-SNAPSHOT</version>
    -    </parent>
    -
    -    <artifactId>aws-durable-execution-sdk-java-examples</artifactId>
    -    <packaging>jar</packaging>
    -
    -    <name>AWS Lambda Durable Execution SDK Examples</name>
    -    <description>Example applications using the AWS Lambda Durable Execution SDK</description>
    -    <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -
    -    <scm>
    -        <connection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</connection>
    -        <developerConnection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</developerConnection>
    -        <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -    </scm>
    -
    -    <dependencies>
    -        <!-- Local SDK dependency -->
    -        <dependency>
    -            <groupId>software.amazon.lambda.durable</groupId>
    -            <artifactId>aws-durable-execution-sdk-java</artifactId>
    -            <version>${project.version}</version>
    -        </dependency>
    -
    -        <!-- AWS Lambda Java Core -->
    -        <dependency>
    -            <groupId>com.amazonaws</groupId>
    -            <artifactId>aws-lambda-java-core</artifactId>
    -        </dependency>
    -        
    -        <!-- AWS SDK Apache HTTP Client -->
    -        <dependency>
    -            <groupId>software.amazon.awssdk</groupId>
    -            <artifactId>apache-client</artifactId>
    -        </dependency>
    -        
    -        <!-- Log4j2 for logging with MDC support -->
    -        <dependency>
    -            <groupId>org.apache.logging.log4j</groupId>
    -            <artifactId>log4j-slf4j2-impl</artifactId>
    -            <version>2.25.4</version>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.apache.logging.log4j</groupId>
    -            <artifactId>log4j-core</artifactId>
    -            <version>2.25.4</version>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.apache.logging.log4j</groupId>
    -            <artifactId>log4j-layout-template-json</artifactId>
    -            <version>2.25.4</version>
    -        </dependency>
    -        
    -        <!-- Testing -->
    -        <dependency>
    -            <groupId>software.amazon.lambda.durable</groupId>
    -            <artifactId>aws-durable-execution-sdk-java-testing</artifactId>
    -            <version>${project.version}</version>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>software.amazon.awssdk</groupId>
    -            <artifactId>sts</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.junit.jupiter</groupId>
    -            <artifactId>junit-jupiter</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -    </dependencies>
    -
    -    <build>
    -        <plugins>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-shade-plugin</artifactId>
    -                <version>3.6.2</version>
    -                <configuration>
    -                    <createDependencyReducedPom>false</createDependencyReducedPom>
    -                </configuration>
    -                <dependencies>
    -                    <dependency>
    -                        <groupId>org.apache.logging.log4j</groupId>
    -                        <artifactId>log4j-transform-maven-shade-plugin-extensions</artifactId>
    -                        <version>0.2.0</version>
    -                    </dependency>
    -                </dependencies>
    -                <executions>
    -                    <execution>
    -                        <phase>package</phase>
    -                        <goals>
    -                            <goal>shade</goal>
    -                        </goals>
    -                        <configuration>
    -                            <transformers>
    -                                <transformer
    -                                        implementation="org.apache.logging.log4j.maven.plugins.shade.transformer.Log4j2PluginCacheFileTransformer" />
    -                                <transformer
    -                                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
    -                                <transformer
    -                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
    -                            </transformers>
    -                        </configuration>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-source-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-sources</id>
    -                        <goals>
    -                            <goal>jar-no-fork</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-javadoc-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-javadocs</id>
    -                        <goals>
    -                            <goal>jar</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -        </plugins>
    -    </build>
    -</project>
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/callback/CallbackExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/callback/CallbackExample.java
    deleted file mode 100644
    index 286bd2cd4..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/callback/CallbackExample.java
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.callback;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.examples.types.ApprovalRequest;
    -
    -/**
    - * Example demonstrating callback operations for external system integration.
    - *
    - * <p>This handler demonstrates a human approval workflow:
    - *
    - * <ol>
    - *   <li>Prepare the request for approval
    - *   <li>Create a callback and send the callback ID to an external approval system
    - *   <li>Suspend execution until the external system responds
    - *   <li>Process the approval result
    - * </ol>
    - *
    - * <p>External systems respond using AWS Lambda APIs:
    - *
    - * <ul>
    - *   <li>{@code SendDurableExecutionCallbackSuccess} - approve with result
    - *   <li>{@code SendDurableExecutionCallbackFailure} - reject with error
    - *   <li>{@code SendDurableExecutionCallbackHeartbeat} - keep callback alive
    - * </ul>
    - */
    -public class CallbackExample extends DurableHandler<ApprovalRequest, String> {
    -
    -    @Override
    -    public String handleRequest(ApprovalRequest input, DurableContext context) {
    -        // Step 1: Prepare the approval request
    -        var prepared = context.step(
    -                "prepare",
    -                String.class,
    -                stepCtx -> "Approval request for: " + input.description() + " ($" + input.amount() + ")");
    -
    -        // Step 2: Create callback for external approval
    -        // Use timeout from input if provided, otherwise default to 5 minutes
    -        var timeout =
    -                input.timeoutSeconds() != null ? Duration.ofSeconds(input.timeoutSeconds()) : Duration.ofMinutes(5);
    -
    -        var config = CallbackConfig.builder().timeout(timeout).build();
    -
    -        var preapprovalCallback = context.waitForCallbackAsync("preapproval", String.class, (callbackId, ctx) -> {
    -            ctx.getLogger().info("Sending callback {} to preapproval system", callbackId);
    -        });
    -
    -        var callback = context.createCallback("approval", String.class, config);
    -
    -        // Step 2.5: Log AWS CLI command to complete the callback
    -        context.step("log-callback-command", Void.class, ctx -> {
    -            var callbackId = callback.callbackId();
    -            // The result must be base64-encoded JSON
    -            var command = String.format(
    -                    "aws lambda send-durable-execution-callback-success --callback-id %s --result $(echo -n '\"approved\"' | base64)",
    -                    callbackId);
    -            ctx.getLogger().info("To complete this callback, run: {}", command);
    -            return null;
    -        });
    -
    -        var preapprovalResult = preapprovalCallback.get();
    -
    -        // Step 3: Wait for external approval (suspends execution)
    -        var approvalResult = callback.get();
    -
    -        // Step 4: Process the approval
    -        return context.step(
    -                "process-approval",
    -                String.class,
    -                stepCtx -> prepared + " - " + preapprovalResult + " - " + approvalResult);
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.java
    deleted file mode 100644
    index ce6d909a2..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.java
    +++ /dev/null
    @@ -1,55 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.callback;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.WaitForCallbackConfig;
    -import software.amazon.lambda.durable.examples.types.ApprovalRequest;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -public class WaitForCallbackFailedExample extends DurableHandler<ApprovalRequest, String> {
    -
    -    @Override
    -    public String handleRequest(ApprovalRequest input, DurableContext context) {
    -
    -        String approvalResult;
    -
    -        try {
    -            approvalResult = context.waitForCallback(
    -                    "preapproval",
    -                    String.class,
    -                    (callbackId, ctx) -> {
    -                        ctx.getLogger().info("Sending callback {} to preapproval system", callbackId);
    -                        throw new RuntimeException("Submitter failed with an exception");
    -                    },
    -                    WaitForCallbackConfig.builder()
    -                            .stepConfig(StepConfig.builder()
    -                                    .serDes(new FailedSerDes())
    -                                    .build())
    -                            .build());
    -        } catch (SuspendExecutionException e) {
    -            // not to swallow the SuspendExecutionException
    -            throw e;
    -        } catch (Exception ex) {
    -            return ex.getClass().getSimpleName() + ":" + ex.getMessage();
    -        }
    -
    -        return approvalResult;
    -    }
    -
    -    private static class FailedSerDes extends JacksonSerDes {
    -        @Override
    -        public <T> T deserialize(String json, TypeToken<T> typeToken) {
    -            T result = super.deserialize(json, typeToken);
    -            if (result instanceof RuntimeException ex) {
    -                throw new SerDesException("Deserialization failed", ex);
    -            }
    -            return result;
    -        }
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/child/ChildContextExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/child/ChildContextExample.java
    deleted file mode 100644
    index 0bd5dc279..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/child/ChildContextExample.java
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.child;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Example demonstrating child context workflows with the Durable Execution SDK.
    - *
    - * <p>This handler runs three concurrent child contexts using {@code runInChildContextAsync}:
    - *
    - * <ol>
    - *   <li><b>Order validation</b> β€” performs a step then suspends via {@code wait()} before completing
    - *   <li><b>Inventory check</b> β€” performs a step then suspends via {@code wait()} before completing
    - *   <li><b>Shipping estimate</b> β€” nests another child context inside it to demonstrate hierarchical contexts
    - * </ol>
    - *
    - * <p>All three child contexts run concurrently. Results are collected with {@link DurableFuture#allOf} and combined
    - * into a summary string.
    - */
    -public class ChildContextExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        var name = input.getName();
    -        context.getLogger().info("Starting child context workflow for {}", name);
    -
    -        // Child context 1: Order validation β€” step + wait + step
    -        var orderFuture = context.runInChildContextAsync("order-validation", String.class, child -> {
    -            var prepared = child.step("prepare-order", String.class, stepCtx -> "Order for " + name);
    -            child.getLogger().info("Order prepared, waiting for validation");
    -
    -            child.wait("validation-delay", Duration.ofSeconds(5));
    -
    -            return child.step("validate-order", String.class, stepCtx -> prepared + " [validated]");
    -        });
    -
    -        // Child context 2: Inventory check β€” step + wait + step
    -        var inventoryFuture = context.runInChildContextAsync("inventory-check", String.class, child -> {
    -            var stock = child.step("check-stock", String.class, stepCtx -> "Stock available for " + name);
    -            child.getLogger().info("Stock checked, waiting for confirmation");
    -
    -            child.wait("confirmation-delay", Duration.ofSeconds(3));
    -
    -            return child.step("confirm-inventory", String.class, stepCtx -> stock + " [confirmed]");
    -        });
    -
    -        // Child context 3: Shipping estimate β€” nests a child context inside it
    -        var shippingFuture = context.runInChildContextAsync("shipping-estimate", String.class, child -> {
    -            var baseRate = child.step("calculate-base-rate", String.class, stepCtx -> "Base rate for " + name);
    -
    -            // Nested child context: calculate regional adjustment
    -            var adjustment = child.runInChildContext(
    -                    "regional-adjustment",
    -                    String.class,
    -                    nested ->
    -                            nested.step("lookup-region", String.class, stepCtx -> baseRate + " + regional adjustment"));
    -
    -            return child.step("finalize-shipping", String.class, stepCtx -> adjustment + " [shipping ready]");
    -        });
    -
    -        // Collect all results using allOf
    -        context.getLogger().info("Waiting for all child contexts to complete");
    -        var results = DurableFuture.allOf(orderFuture, inventoryFuture, shippingFuture);
    -
    -        // Combine into summary
    -        var summary = String.join(" | ", results);
    -        context.getLogger().info("All child contexts complete: {}", summary);
    -
    -        return summary;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.java
    deleted file mode 100644
    index 797d5ce4d..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.java
    +++ /dev/null
    @@ -1,79 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.child;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.concurrent.TimeUnit;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -
    -/**
    - * Performance test example demonstrating concurrent async child contexts.
    - *
    - * <p>This example tests the SDK's ability to handle many concurrent operations:
    - *
    - * <ul>
    - *   <li>Creates async child context in a loop
    - *   <li>Each child context performs a simple computation in a step
    - *   <li>All results are collected using {@link DurableFuture#allOf}
    - * </ul>
    - */
    -public class ManyAsyncChildContextExample
    -        extends DurableHandler<ManyAsyncChildContextExample.Input, ManyAsyncChildContextExample.Output> {
    -
    -    public record Input(int multiplier, int steps) {}
    -
    -    public record Output(long result, long executionTimeMs, long replayTimeMs) {}
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        var startTime = System.nanoTime();
    -        var multiplier = input.multiplier();
    -        var steps = input.steps();
    -        var logger = context.getLogger();
    -
    -        logger.info("Starting {} async child context with multiplier {}", steps, multiplier);
    -
    -        // Create async steps
    -        var futures = new ArrayList<DurableFuture<Integer>>(steps);
    -        for (var i = 0; i < steps; i++) {
    -            var index = i;
    -            var future = context.runInChildContextAsync("child-" + i, Integer.class, childCtx -> {
    -                // create a step inside the child context, which doubles the number of threads
    -                return childCtx.step("compute-" + index, Integer.class, stepCtx -> index * multiplier);
    -            });
    -            futures.add(future);
    -        }
    -
    -        logger.info("All {} async child context created, collecting results", steps);
    -
    -        // Collect all results using allOf
    -        var results = DurableFuture.allOf(futures);
    -        var totalSum = results.stream().mapToInt(Integer::intValue).sum();
    -
    -        // checkpoint the executionTime so that we can have the same value when replay
    -        var executionTimeMs = context.step(
    -                "execution-time", Long.class, stepCtx -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime));
    -        logger.info(
    -                "Completed {} child context, total sum: {}, execution time: {}ms", steps, totalSum, executionTimeMs);
    -
    -        // Wait 2 seconds to test replay
    -        context.wait("post-compute-wait", Duration.ofSeconds(2));
    -
    -        var replayTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
    -
    -        return new Output(totalSum, executionTimeMs, replayTimeMs);
    -    }
    -
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        // Add a small checkpoint delay to help batch the checkpoint requests and reduce the overall latencies
    -        // when the function has many concurrent operations
    -        return DurableConfig.builder()
    -                .withCheckpointDelay(Duration.ofMillis(10))
    -                .build();
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomConfigExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomConfigExample.java
    deleted file mode 100644
    index 28d248395..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomConfigExample.java
    +++ /dev/null
    @@ -1,135 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import com.fasterxml.jackson.core.JsonProcessingException;
    -import com.fasterxml.jackson.databind.ObjectMapper;
    -import com.fasterxml.jackson.databind.PropertyNamingStrategies;
    -import java.io.IOException;
    -import java.time.Duration;
    -import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
    -import software.amazon.awssdk.core.SdkSystemSetting;
    -import software.amazon.awssdk.http.apache.ApacheHttpClient;
    -import software.amazon.awssdk.regions.Region;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Example demonstrating custom configuration with both custom HTTP client and custom SerDes. Shows how to configure a
    - * custom Apache HTTP client for the Lambda client while maintaining automatic credentials detection and region
    - * fallback, plus a custom SerDes with snake_case naming.
    - *
    - * <p>This example demonstrates:
    - *
    - * <ul>
    - *   <li>Custom Apache HTTP client configuration for improved performance
    - *   <li>Automatic region detection with fallback to us-east-1 for testing environments
    - *   <li>Environment variable credentials provider
    - *   <li>Custom SerDes with snake_case property naming
    - * </ul>
    - */
    -public class CustomConfigExample extends DurableHandler<String, String> {
    -
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        // Configure custom Apache HTTP client for better performance
    -        var httpClient = ApacheHttpClient.builder()
    -                .maxConnections(50)
    -                .connectionTimeout(Duration.ofSeconds(30))
    -                .socketTimeout(Duration.ofSeconds(60))
    -                .build();
    -
    -        // Get region with fallback to us-east-1 if AWS_REGION not set
    -        // This prevents initialization failures in testing environments
    -        var region = System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable());
    -        if (region == null || region.isEmpty()) {
    -            region = "us-east-1";
    -        }
    -
    -        // Create Lambda client with custom HTTP client
    -        // Uses automatic credentials detection and region fallback
    -        var lambdaClient = LambdaClient.builder()
    -                .httpClient(httpClient)
    -                .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    -                .region(Region.of(region))
    -                .build();
    -
    -        // Wrap the Lambda client with LambdaDurableFunctionsClient
    -        var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    -
    -        // Create custom SerDes with snake_case naming
    -        var customSerDes = new SnakeCaseSerDes();
    -
    -        return DurableConfig.builder()
    -                .withDurableExecutionClient(durableClient)
    -                .withSerDes(customSerDes)
    -                .build();
    -    }
    -
    -    @Override
    -    public String handleRequest(String input, DurableContext context) {
    -        // Step 1: Create a custom object with camelCase fields to demonstrate snake_case serialization
    -        var customObject = context.step(
    -                "create-custom-object",
    -                CustomData.class,
    -                stepCtx -> new CustomData("user123", "John Doe", 25, "john.doe@example.com"));
    -
    -        return "Created custom object: " + customObject.userId + ", " + customObject.fullName + ", "
    -                + customObject.userAge + ", " + customObject.emailAddress;
    -    }
    -
    -    /**
    -     * Custom data class with camelCase field names to demonstrate snake_case serialization. The SerDes will convert
    -     * these field names to snake_case in the JSON output.
    -     */
    -    public static class CustomData {
    -        public String userId;
    -        public String fullName;
    -        public int userAge;
    -        public String emailAddress;
    -
    -        public CustomData() {}
    -
    -        public CustomData(String userId, String fullName, int userAge, String emailAddress) {
    -            this.userId = userId;
    -            this.fullName = fullName;
    -            this.userAge = userAge;
    -            this.emailAddress = emailAddress;
    -        }
    -    }
    -
    -    /**
    -     * Custom SerDes implementation using snake_case property naming. Demonstrates how to provide custom serialization
    -     * behavior.
    -     */
    -    private static class SnakeCaseSerDes implements SerDes {
    -        private final ObjectMapper objectMapper;
    -
    -        public SnakeCaseSerDes() {
    -            this.objectMapper = new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
    -        }
    -
    -        @Override
    -        public String serialize(Object obj) {
    -            try {
    -                return objectMapper.writeValueAsString(obj);
    -            } catch (JsonProcessingException e) {
    -                throw new RuntimeException("Serialization failed", e);
    -            }
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String json, TypeToken<T> typeToken) {
    -            try {
    -                return objectMapper.readValue(json, objectMapper.constructType(typeToken.getType()));
    -            } catch (IOException e) {
    -                throw new RuntimeException("Deserialization failed", e);
    -            }
    -        }
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomPollingExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomPollingExample.java
    deleted file mode 100644
    index 65470d49b..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/CustomPollingExample.java
    +++ /dev/null
    @@ -1,64 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.PollingStrategies;
    -
    -/**
    - * Example demonstrating custom polling strategy configuration.
    - *
    - * <p>The polling strategy controls how the SDK polls for async operation results. By default, the SDK uses exponential
    - * backoff (1s base, 2x rate, full jitter). This example shows how to customize the polling behavior.
    - *
    - * <p>This example configures:
    - *
    - * <ul>
    - *   <li>Exponential backoff with 500ms base interval
    - *   <li>1.5x backoff rate for gentler growth
    - *   <li>Half jitter to balance between consistency and thundering herd avoidance
    - * </ul>
    - */
    -public class CustomPollingExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        return DurableConfig.builder()
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(500), 1.5, JitterStrategy.HALF, Duration.ofSeconds(5)))
    -                .build();
    -    }
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        context.getLogger().info("Starting workflow with input: {}", input);
    -
    -        // Step 1: low case the input
    -        var lowered = context.stepAsync("validate", String.class, stepCtx -> {
    -            try {
    -                // prevent the execution from suspension
    -                Thread.sleep(5000);
    -            } catch (InterruptedException e) {
    -                e.printStackTrace();
    -            }
    -            return input.getName().toLowerCase();
    -        });
    -
    -        // Step 2: Invoke async
    -        var future = context.invokeAsync(
    -                "call-greeting",
    -                "simple-step-example" + input.getName() + ":$LATEST",
    -                input,
    -                String.class,
    -                InvokeConfig.builder().build());
    -        // because we are sleeping 5 seconds in the first async step, the function will not be suspened. The invoke
    -        // function will have to poll for completion.
    -        return future.get() + lowered.get();
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.java
    deleted file mode 100644
    index 4c0656122..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.java
    +++ /dev/null
    @@ -1,99 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.StepSemantics;
    -import software.amazon.lambda.durable.exception.StepFailedException;
    -import software.amazon.lambda.durable.exception.StepInterruptedException;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating error handling patterns with the Durable Execution SDK.
    - *
    - * <p>This example shows how to handle:
    - *
    - * <ul>
    - *   <li>{@link StepFailedException} - when a step exhausts all retry attempts
    - *   <li>{@link StepInterruptedException} - when an AT_MOST_ONCE step is interrupted
    - *   <li>Custom exceptions - original exception types are preserved and can be caught directly
    - * </ul>
    - *
    - * <p>Note: {@code NonDeterministicExecutionException} is thrown by the SDK when code changes between executions (e.g.,
    - * step order/names changed). It should be fixed in code, not caught.
    - */
    -public class ErrorHandlingExample extends DurableHandler<Object, String> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(ErrorHandlingExample.class);
    -
    -    /** Custom exception to demonstrate that original exception types are preserved across checkpoints. */
    -    public static class ServiceUnavailableException extends RuntimeException {
    -        private String serviceName;
    -
    -        /** Default constructor required for Jackson deserialization. */
    -        public ServiceUnavailableException() {
    -            super();
    -        }
    -
    -        public ServiceUnavailableException(String serviceName, String message) {
    -            super(message);
    -            this.serviceName = serviceName;
    -        }
    -
    -        public String getServiceName() {
    -            return serviceName;
    -        }
    -    }
    -
    -    @Override
    -    public String handleRequest(Object input, DurableContext context) {
    -        // Example 1: Catching a custom exception type with fallback logic
    -        // The SDK preserves the original exception type, so you can catch specific exceptions directly.
    -        // NOTE: Exception type needs to be serializable by your SerDes implementation.
    -        String primaryResult;
    -        try {
    -            primaryResult = context.step(
    -                    "call-primary-service",
    -                    String.class,
    -                    stepCtx -> {
    -                        throw new ServiceUnavailableException("primary-api", "Primary service unavailable");
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                            .build());
    -        } catch (ServiceUnavailableException e) {
    -            // Catch the specific custom exception type - the SDK reconstructs the original exception
    -            logger.warn("Service '{}' unavailable, using fallback: {}", e.getServiceName(), e.getMessage());
    -            primaryResult = context.step("call-fallback-service", String.class, stepCtx -> "fallback-result");
    -        }
    -
    -        // Example 2: Handling StepInterruptedException for AT_MOST_ONCE operations
    -        // StepInterruptedException is thrown when an AT_MOST_ONCE step was started
    -        // but the function was interrupted before the step completed.
    -        // In normal execution, this step succeeds. The catch block handles the
    -        // interruption scenario that occurs during replay after an unexpected termination.
    -        String paymentResult;
    -        try {
    -            paymentResult = context.step(
    -                    "charge-payment",
    -                    String.class,
    -                    stepCtx -> "payment-" + input,
    -                    StepConfig.builder()
    -                            .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                            .build());
    -        } catch (StepInterruptedException e) {
    -            logger.warn(
    -                    "Payment step interrupted, checking external status: {}",
    -                    e.getOperation().id());
    -            // In real code: check payment provider for transaction status
    -            // If payment went through, return success; otherwise, handle appropriately
    -            paymentResult = context.step("verify-payment-status", String.class, stepCtx -> "verified-payment");
    -        }
    -
    -        return "Completed: " + primaryResult + ", " + paymentResult;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.java
    deleted file mode 100644
    index f1f4e5407..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.java
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating a durable Lambda function that uses generic types in input and output.
    - *
    - * <p>This example shows how to use TypeToken to work with generic types like {@code List<String>}, {@code Map<String,
    - * List<String>>}, and nested generics that cannot be represented by simple Class objects.
    - */
    -public class GenericInputOutputExample
    -        extends DurableHandler<Map<String, String>, Map<String, Map<String, List<String>>>> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(GenericInputOutputExample.class);
    -
    -    @Override
    -    public Map<String, Map<String, List<String>>> handleRequest(Map<String, String> input, DurableContext context) {
    -        logger.info("Starting generic types example for user: {}", input.get("userId"));
    -
    -        // Fetch nested generic type with retry (Map<String, List<String>>)
    -        Map<String, List<String>> categories = context.step(
    -                "fetch-categories",
    -                new TypeToken<Map<String, List<String>>>() {},
    -                stepCtx -> {
    -                    logger.info("Fetching category details");
    -                    var result = new HashMap<String, List<String>>();
    -                    result.put("electronics", List.of("laptop", "phone"));
    -                    result.put("books", List.of("fiction"));
    -                    result.put("clothing", List.of("shirt"));
    -                    return result;
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -        logger.info("Fetched {} category details", categories.size());
    -        logger.info("Generic types example completed successfully");
    -
    -        // return a result of Map<String, Map<String, List<String>>>
    -        return new HashMap<>(Map.of("categories", categories));
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericTypesExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericTypesExample.java
    deleted file mode 100644
    index b53c74c36..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/GenericTypesExample.java
    +++ /dev/null
    @@ -1,93 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating TypeToken support for complex generic types.
    - *
    - * <p>This example shows how to use TypeToken to work with generic types like {@code List<String>}, {@code Map<String,
    - * Object>}, and nested generics that cannot be represented by simple Class objects.
    - */
    -public class GenericTypesExample extends DurableHandler<GenericTypesExample.Input, GenericTypesExample.Output> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(GenericTypesExample.class);
    -
    -    public static class Input {
    -        public String userId;
    -
    -        public Input() {}
    -
    -        public Input(String userId) {
    -            this.userId = userId;
    -        }
    -    }
    -
    -    public static class Output {
    -        public List<String> items;
    -        public Map<String, Integer> counts;
    -        public Map<String, List<String>> categories;
    -
    -        public Output() {}
    -
    -        public Output(List<String> items, Map<String, Integer> counts, Map<String, List<String>> categories) {
    -            this.items = items;
    -            this.counts = counts;
    -            this.categories = categories;
    -        }
    -    }
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        logger.info("Starting generic types example for user: {}", input.userId);
    -
    -        // Step 1: Fetch a list of items (List<String>)
    -        List<String> items = context.step("fetch-items", new TypeToken<List<String>>() {}, stepCtx -> {
    -            logger.info("Fetching items for user: {}", input.userId);
    -            return List.of("item1", "item2", "item3", "item4");
    -        });
    -        logger.info("Fetched {} items", items.size());
    -
    -        // Step 2: Count items by category (Map<String, Integer>)
    -        Map<String, Integer> counts =
    -                context.step("count-by-category", new TypeToken<Map<String, Integer>>() {}, stepCtx -> {
    -                    logger.info("Counting items by category");
    -                    var result = new HashMap<String, Integer>();
    -                    result.put("electronics", 2);
    -                    result.put("books", 1);
    -                    result.put("clothing", 1);
    -                    return result;
    -                });
    -        logger.info("Counted {} categories", counts.size());
    -
    -        // Step 3: Fetch nested generic type with retry (Map<String, List<String>>)
    -        Map<String, List<String>> categories = context.step(
    -                "fetch-categories",
    -                new TypeToken<Map<String, List<String>>>() {},
    -                stepCtx -> {
    -                    logger.info("Fetching category details");
    -                    var result = new HashMap<String, List<String>>();
    -                    result.put("electronics", List.of("laptop", "phone"));
    -                    result.put("books", List.of("fiction"));
    -                    result.put("clothing", List.of("shirt"));
    -                    return result;
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -        logger.info("Fetched {} category details", categories.size());
    -
    -        logger.info("Generic types example completed successfully");
    -        return new Output(items, counts, categories);
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/LoggingExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/LoggingExample.java
    deleted file mode 100644
    index de7db9163..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/LoggingExample.java
    +++ /dev/null
    @@ -1,37 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Example demonstrating DurableLogger usage for structured logging with execution context.
    - *
    - * <p>The logger automatically includes execution metadata (durableExecutionArn, requestId, operationId, operationName)
    - * in log entries via MDC. By default, logs are suppressed during replay to avoid duplicates.
    - */
    -public class LoggingExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        // Log at execution level (outside any step)
    -        context.getLogger().info("Processing greeting for: {}", input.getName());
    -
    -        // Step 1: Create greeting - logs inside step include operation context
    -        var greeting = context.step("create-greeting", String.class, ctx -> {
    -            ctx.getLogger().info("Creating greeting message");
    -            return "Hello, " + input.getName();
    -        });
    -
    -        // Step 2: Transform
    -        var result = context.step("transform", String.class, ctx -> {
    -            ctx.getLogger().info("Transforming greeting to uppercase");
    -            return greeting.toUpperCase() + "!";
    -        });
    -
    -        context.getLogger().info("Completed processing, result: {}", result);
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/NoopExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/NoopExample.java
    deleted file mode 100644
    index 262834f36..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/NoopExample.java
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Simple example demonstrating a durable function doesn't have any durable operation
    - *
    - * <p>This handler processes a greeting request and returns a greeting message
    - */
    -public class NoopExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        return "HELLO, " + input.getName() + "!";
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.java
    deleted file mode 100644
    index 3c4dd351e..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.java
    +++ /dev/null
    @@ -1,34 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.invoke;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Simple example demonstrating basic invoke execution with the Durable Execution SDK.
    - *
    - * <p>This handler invokes another durable lambda function simple-step-example
    - */
    -public class SimpleInvokeExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        // invoke `simple-step-example` function
    -        var future = context.invokeAsync(
    -                "call-greeting1",
    -                "simple-step-example" + input.getName() + ":$LATEST",
    -                input,
    -                String.class,
    -                InvokeConfig.builder().build());
    -        var result2 = context.invoke(
    -                "call-greeting2",
    -                "simple-step-example" + input.getName() + ":$LATEST",
    -                input,
    -                String.class,
    -                InvokeConfig.builder().build());
    -        return future.get() + result2;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/map/ComplexMapExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/map/ComplexMapExample.java
    deleted file mode 100644
    index 197ac9b5a..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/map/ComplexMapExample.java
    +++ /dev/null
    @@ -1,63 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import java.time.Duration;
    -import java.util.List;
    -import java.util.stream.Collectors;
    -import java.util.stream.IntStream;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.MapConfig;
    -
    -/**
    - * Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.
    - *
    - * <ol>
    - *   <li>Concurrent map with step + wait + step inside each branch β€” simulates multi-stage order processing with a
    - *       cooldown between stages
    - *   <li>Early termination with {@code minSuccessful(2)} β€” finds 2 healthy servers then stops
    - * </ol>
    - */
    -public class ComplexMapExample extends DurableHandler<Integer, String> {
    -
    -    @Override
    -    public String handleRequest(Integer input, DurableContext context) {
    -        context.getLogger().info("Starting complex map example with {} items", input);
    -
    -        // Part 1: Concurrent map with step + wait inside each branch
    -        var orderIds = IntStream.range(1, input + 1).mapToObj(x -> "order-" + x).collect(Collectors.toList());
    -
    -        var orderResult = context.map("process-orders", orderIds, String.class, (orderId, index, ctx) -> {
    -            // Step 1: validate the order
    -            var validated = ctx.step("validate-" + index, String.class, stepCtx -> "validated:" + orderId);
    -
    -            // Wait between stages (simulates a cooldown or external dependency)
    -            ctx.wait("cooldown-" + index, Duration.ofSeconds(1));
    -
    -            // Step 2: finalize the order
    -            return ctx.step("finalize-" + index, String.class, stepCtx -> "done:" + validated);
    -        });
    -
    -        var orderSummary = String.join(", ", orderResult.results());
    -
    -        // Part 2: Early termination β€” find 2 healthy servers then stop
    -        var servers = List.of("server-1", "server-2", "server-3", "server-4", "server-5");
    -        var earlyTermConfig = MapConfig.builder()
    -                .completionConfig(CompletionConfig.minSuccessful(2))
    -                .build();
    -
    -        var serverResult = context.map(
    -                "find-healthy-servers",
    -                servers,
    -                String.class,
    -                (server, index, ctx) -> ctx.step("health-check-" + index, String.class, stepCtx -> server + ":healthy"),
    -                earlyTermConfig);
    -
    -        var healthyServers = serverResult.succeeded().stream().collect(Collectors.joining(", "));
    -
    -        return String.format(
    -                "orders=[%s] | servers=[%s] reason=%s", orderSummary, healthyServers, serverResult.completionReason());
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.java
    deleted file mode 100644
    index b8a867264..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.java
    +++ /dev/null
    @@ -1,66 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import java.time.Duration;
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -/**
    - * Example demonstrating the map operation with the Durable Execution SDK.
    - *
    - * <p>This handler processes a list of names concurrently using {@code map()}, where each item runs in its own child
    - * context with full checkpoint-and-replay support.
    - *
    - * <ol>
    - *   <li>Create a list of names from the input
    - *   <li>Map over each name concurrently, applying a greeting transformation via a durable step
    - *   <li>Collect and join the results
    - * </ol>
    - */
    -public class DeserializationFailedMapExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        var name = input.getName();
    -        context.getLogger().info("Starting map example for {}", name);
    -
    -        var names = List.of(name, name.toUpperCase(), name.toLowerCase());
    -
    -        // Map over each name concurrently β€” each iteration runs in its own child context
    -        var result = context.map(
    -                "greet-all",
    -                names,
    -                String.class,
    -                (item, index, ctx) -> {
    -                    return ctx.step("greet-" + index, String.class, stepCtx -> {
    -                        throw new RuntimeException("Failure from " + item + "!");
    -                    });
    -                },
    -                MapConfig.builder().serDes(new FailedSerDes()).build());
    -
    -        context.getLogger().info("Map completed: allSucceeded={}, size={}", result.allSucceeded(), result.size());
    -
    -        context.wait("suspend and replay", Duration.ofSeconds(1));
    -
    -        return result.getError(0).errorMessage();
    -    }
    -
    -    private static class FailedSerDes extends JacksonSerDes {
    -
    -        @Override
    -        public <T> T deserialize(String json, TypeToken<T> typeToken) {
    -            T result = super.deserialize(json, typeToken);
    -            if (result instanceof RuntimeException ex) {
    -                throw new SerDesException("Deserialization failed", ex);
    -            }
    -            return result;
    -        }
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/map/SimpleMapExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/map/SimpleMapExample.java
    deleted file mode 100644
    index 3c6b014d3..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/map/SimpleMapExample.java
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Example demonstrating the map operation with the Durable Execution SDK.
    - *
    - * <p>This handler processes a list of names concurrently using {@code map()}, where each item runs in its own child
    - * context with full checkpoint-and-replay support.
    - *
    - * <ol>
    - *   <li>Create a list of names from the input
    - *   <li>Map over each name concurrently, applying a greeting transformation via a durable step
    - *   <li>Collect and join the results
    - * </ol>
    - */
    -public class SimpleMapExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        var name = input.getName();
    -        context.getLogger().info("Starting map example for {}", name);
    -
    -        var names = List.of(name, name.toUpperCase(), name.toLowerCase());
    -
    -        // Map over each name concurrently β€” each iteration runs in its own child context
    -        var result = context.map("greet-all", names, String.class, (item, index, ctx) -> {
    -            return ctx.step("greet-" + index, String.class, stepCtx -> "Hello, " + item + "!");
    -        });
    -
    -        context.getLogger().info("Map completed: allSucceeded={}, size={}", result.allSucceeded(), result.size());
    -
    -        return String.join(" | ", result.results());
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.java
    deleted file mode 100644
    index a54aedfab..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.java
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.ParallelDurableFuture;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.ParallelBranchConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -/**
    - * Example demonstrating parallel branch execution with the Durable Execution SDK.
    - *
    - * <p>This handler processes a list of items concurrently using {@code context.parallel()}:
    - *
    - * <ol>
    - *   <li>Each item is processed in its own branch (child context)
    - *   <li>All branches run concurrently and their results are collected
    - *   <li>A final step combines the results into a summary
    - * </ol>
    - *
    - * <p>The {@link ParallelDurableFuture} implements {@link AutoCloseable}, so try-with-resources guarantees
    - * {@code join()} is called even if an exception occurs.
    - */
    -public class DeserializationFailedParallelExample
    -        extends DurableHandler<DeserializationFailedParallelExample.Input, String> {
    -
    -    public record Input(List<String> items) {}
    -
    -    @Override
    -    public String handleRequest(Input input, DurableContext context) {
    -        var logger = context.getLogger();
    -        var items = input.items();
    -        logger.info("Starting parallel processing of {} items", items.size());
    -
    -        var config = ParallelConfig.builder().build();
    -
    -        var parallel = context.parallel("process-items", config);
    -
    -        try (parallel) {
    -            var future = parallel.branch(
    -                    "process",
    -                    String.class,
    -                    branchCtx -> {
    -                        return branchCtx.step("transform", String.class, stepCtx -> {
    -                            throw new RuntimeException("Intentional failure for transform");
    -                        });
    -                    },
    -                    ParallelBranchConfig.builder().serDes(new FailedSerDes()).build());
    -
    -            parallel.get();
    -            try {
    -                return future.get();
    -            } catch (SuspendExecutionException e) {
    -                throw e;
    -            } catch (Exception e) {
    -                return e.getMessage();
    -            }
    -        }
    -    }
    -
    -    private static class FailedSerDes extends JacksonSerDes {
    -
    -        @Override
    -        public <T> T deserialize(String json, TypeToken<T> typeToken) {
    -            T result = super.deserialize(json, typeToken);
    -            if (result instanceof RuntimeException ex) {
    -                throw new SerDesException("Deserialization failed", ex);
    -            }
    -            return result;
    -        }
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelExample.java
    deleted file mode 100644
    index 35c91f37c..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelExample.java
    +++ /dev/null
    @@ -1,66 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import java.util.ArrayList;
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.ParallelDurableFuture;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.model.ParallelResult;
    -
    -/**
    - * Example demonstrating parallel branch execution with the Durable Execution SDK.
    - *
    - * <p>This handler processes a list of items concurrently using {@code context.parallel()}:
    - *
    - * <ol>
    - *   <li>Each item is processed in its own branch (child context)
    - *   <li>All branches run concurrently and their results are collected
    - *   <li>A final step combines the results into a summary
    - * </ol>
    - *
    - * <p>The {@link ParallelDurableFuture} implements {@link AutoCloseable}, so try-with-resources guarantees
    - * {@code join()} is called even if an exception occurs.
    - */
    -public class ParallelExample extends DurableHandler<ParallelExample.Input, ParallelExample.Output> {
    -
    -    public record Input(List<String> items) {}
    -
    -    public record Output(List<String> results, int totalProcessed) {}
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        var logger = context.getLogger();
    -        var items = input.items();
    -        logger.info("Starting parallel processing of {} items", items.size());
    -
    -        var config = ParallelConfig.builder().build();
    -
    -        var futures = new ArrayList<DurableFuture<String>>(items.size());
    -        var parallel = context.parallel("process-items", config);
    -
    -        try (parallel) {
    -            for (var item : items) {
    -                var future = parallel.branch("process-" + item, String.class, branchCtx -> {
    -                    branchCtx.getLogger().info("Processing item: {}", item);
    -                    return branchCtx.step("transform-" + item, String.class, stepCtx -> item.toUpperCase());
    -                });
    -                futures.add(future);
    -            }
    -        } // join() called here via AutoCloseable
    -
    -        ParallelResult parallelResult = parallel.get();
    -        logger.info(
    -                "Parallel complete: total={}, succeeded={}, failed={}",
    -                parallelResult.size(),
    -                parallelResult.succeeded(),
    -                parallelResult.failed());
    -
    -        var results = futures.stream().map(DurableFuture::get).toList();
    -
    -        return new Output(results, results.size());
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.java
    deleted file mode 100644
    index 8b7c97bba..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.java
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import java.util.ArrayList;
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.model.ParallelResult;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating parallel execution with failure tolerance.
    - *
    - * <p>When {@code toleratedFailureCount} is set, the parallel operation completes successfully even if some branches
    - * fail β€” as long as the number of failures does not exceed the threshold. Failed branches produce {@code null} results
    - * that callers can filter out.
    - *
    - * <p>Use this pattern when partial success is acceptable, for example: sending notifications to multiple channels where
    - * some channels may be unavailable.
    - */
    -public class ParallelFailureToleranceExample
    -        extends DurableHandler<ParallelFailureToleranceExample.Input, ParallelFailureToleranceExample.Output> {
    -
    -    public record Input(List<String> services, Integer toleratedFailures, Integer minSuccessful) {}
    -
    -    public record Output(int succeeded, int failed) {}
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        var logger = context.getLogger();
    -        logger.info("Starting parallel execution with toleratedFailureCount={}", input.toleratedFailures());
    -
    -        var config = ParallelConfig.builder()
    -                .completionConfig(new CompletionConfig(input.minSuccessful, input.toleratedFailures, null))
    -                .build();
    -
    -        var futures = new ArrayList<DurableFuture<String>>(input.services().size());
    -        var parallel = context.parallel("call-services", config);
    -
    -        try (parallel) {
    -            for (var service : input.services()) {
    -                var future = parallel.branch("call-" + service, String.class, branchCtx -> {
    -                    return branchCtx.step(
    -                            "invoke-" + service,
    -                            String.class,
    -                            stepCtx -> {
    -                                if (service.startsWith("bad-")) {
    -                                    throw new RuntimeException("Service unavailable: " + service);
    -                                }
    -                                return "ok:" + service;
    -                            },
    -                            StepConfig.builder()
    -                                    .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                                    .build());
    -                });
    -                futures.add(future);
    -            }
    -        }
    -
    -        ParallelResult parallelResult = parallel.get();
    -        logger.info(
    -                "Parallel complete: succeeded={}, failed={}, status={}",
    -                parallelResult.succeeded(),
    -                parallelResult.failed(),
    -                parallelResult.completionStatus().isSucceeded() ? "succeeded" : "failed");
    -
    -        var succeeded = parallelResult.succeeded();
    -        var failed = parallelResult.failed();
    -
    -        logger.info("Completed: {} succeeded, {} failed", succeeded, failed);
    -        return new Output(succeeded, failed);
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.java
    deleted file mode 100644
    index a7c0e3ac2..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.java
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.model.ParallelResult;
    -
    -/**
    - * Example demonstrating parallel branches where some branches include wait operations.
    - *
    - * <p>This models a notification fan-out pattern where different channels have different delivery delays:
    - *
    - * <ul>
    - *   <li>Email β€” sent immediately
    - *   <li>SMS β€” waits for a rate-limit window before sending
    - *   <li>Push notification β€” waits for a quiet-hours window before sending
    - * </ul>
    - *
    - * <p>All three branches run concurrently. Branches with waits suspend without consuming compute resources and resume
    - * automatically once the wait elapses. The parallel operation completes once all branches finish.
    - */
    -public class ParallelWithWaitExample
    -        extends DurableHandler<ParallelWithWaitExample.Input, ParallelWithWaitExample.Output> {
    -
    -    public record Input(String userId, String message) {}
    -
    -    public record Output(List<String> deliveries, int success, int faiure) {}
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        var logger = context.getLogger();
    -        logger.info("Sending notifications to user {}", input.userId());
    -
    -        var config = ParallelConfig.builder().build();
    -        var futures = new ArrayList<DurableFuture<String>>(3);
    -        var parallel = context.parallel("notify", config);
    -
    -        try (parallel) {
    -
    -            // Branch 1: email β€” no wait, deliver immediately
    -            futures.add(parallel.branch("email", String.class, ctx -> {
    -                ctx.wait("email-rate-limit-delay", Duration.ofSeconds(10));
    -                return ctx.step("send-email", String.class, stepCtx -> "email:" + input.message());
    -            }));
    -
    -            // Branch 2: SMS β€” wait for rate-limit window, then send
    -            futures.add(parallel.branch("sms", String.class, ctx -> {
    -                ctx.wait("sms-rate-limit-delay", Duration.ofSeconds(10));
    -                return ctx.step("send-sms", String.class, stepCtx -> "sms:" + input.message());
    -            }));
    -
    -            // Branch 3: push notification β€” wait for quiet-hours window, then send
    -            futures.add(parallel.branch("push", String.class, ctx -> {
    -                ctx.wait("push-quiet-delay", Duration.ofSeconds(10));
    -                return ctx.step("send-push", String.class, stepCtx -> "push:" + input.message());
    -            }));
    -        }
    -
    -        ParallelResult result = parallel.get();
    -
    -        var deliveries = futures.stream().map(DurableFuture::get).toList();
    -        logger.info("All {} notifications delivered", deliveries.size());
    -        // Test replay
    -        context.wait("wait for finalization", Duration.ofSeconds(5));
    -        return new Output(deliveries, result.succeeded(), result.failed());
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.java
    deleted file mode 100644
    index e990acf22..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.java
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -public class DeserializationFailureExample extends DurableHandler<String, String> {
    -
    -    @Override
    -    public String handleRequest(String input, DurableContext context) {
    -        try {
    -            context.step(
    -                    "fail-step",
    -                    String.class,
    -                    stepCtx -> {
    -                        throw new RuntimeException("this is a test");
    -                    },
    -                    StepConfig.builder().serDes(new FailedSerDes()).build());
    -        } catch (SuspendExecutionException e) {
    -            throw e;
    -        } catch (Exception e) {
    -            context.wait("suspend and replay", Duration.ofSeconds(1));
    -            return e.getClass().getSimpleName() + ":" + e.getMessage();
    -        }
    -
    -        throw new IllegalStateException("should not reach here");
    -    }
    -
    -    private static class FailedSerDes extends JacksonSerDes {
    -
    -        @Override
    -        public <T> T deserialize(String json, TypeToken<T> typeToken) {
    -            T result = super.deserialize(json, typeToken);
    -            if (result instanceof RuntimeException ex) {
    -                throw new SerDesException("Deserialization failed", ex);
    -            }
    -            return result;
    -        }
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.java
    deleted file mode 100644
    index bad4fde75..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.java
    +++ /dev/null
    @@ -1,74 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.concurrent.TimeUnit;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -
    -/**
    - * Performance test example demonstrating concurrent async steps.
    - *
    - * <p>This example tests the SDK's ability to handle many concurrent operations:
    - *
    - * <ul>
    - *   <li>Creates async steps in a loop
    - *   <li>Each step performs a simple computation
    - *   <li>All results are collected using {@link DurableFuture#allOf}
    - * </ul>
    - */
    -public class ManyAsyncStepsExample extends DurableHandler<ManyAsyncStepsExample.Input, ManyAsyncStepsExample.Output> {
    -
    -    public record Input(int multiplier, int steps) {}
    -
    -    public record Output(long result, long executionTimeMs, long replayTimeMs) {}
    -
    -    @Override
    -    public Output handleRequest(Input input, DurableContext context) {
    -        var startTime = System.nanoTime();
    -        var multiplier = input.multiplier();
    -        var steps = input.steps();
    -        var logger = context.getLogger();
    -
    -        logger.info("Starting {} async steps with multiplier {}", steps, multiplier);
    -
    -        // Create async steps
    -        var futures = new ArrayList<DurableFuture<Integer>>(steps);
    -        for (var i = 0; i < steps; i++) {
    -            var index = i;
    -            var future = context.stepAsync("compute-" + i, Integer.class, stepCtx -> index * multiplier);
    -            futures.add(future);
    -        }
    -
    -        logger.info("All {} async steps created, collecting results", steps);
    -
    -        // Collect all results using allOf
    -        var results = DurableFuture.allOf(futures);
    -        var totalSum = results.stream().mapToInt(Integer::intValue).sum();
    -
    -        // checkpoint the executionTime so that we can have the same value when replay
    -        var executionTimeMs = context.step(
    -                "execution-time", Long.class, stepCtx -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime));
    -        logger.info("Completed {} steps, total sum: {}, execution time: {}ms", steps, totalSum, executionTimeMs);
    -
    -        // Wait 2 seconds to test replay
    -        context.wait("post-compute-wait", Duration.ofSeconds(2));
    -
    -        var replayTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
    -
    -        return new Output(totalSum, executionTimeMs, replayTimeMs);
    -    }
    -
    -    @Override
    -    protected DurableConfig createConfiguration() {
    -        // Add a small checkpoint delay to help batch the checkpoint requests and reduce the overall latencies
    -        // when the function has many concurrent operations
    -        return DurableConfig.builder()
    -                .withCheckpointDelay(Duration.ofMillis(10))
    -                .build();
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryExample.java
    deleted file mode 100644
    index 350413a9f..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryExample.java
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Simple example demonstrating retry strategies with a flaky API.
    - *
    - * <p>This example shows:
    - *
    - * <ul>
    - *   <li>A step that never retries (fails immediately)
    - *   <li>A step that retries with default exponential backoff
    - *   <li>Time-based failure simulation for realistic retry behavior
    - * </ul>
    - */
    -public class RetryExample extends DurableHandler<Object, String> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(RetryExample.class);
    -
    -    private Instant startTime;
    -
    -    @Override
    -    public String handleRequest(Object input, DurableContext context) {
    -        // Step 1: Record start time
    -        startTime = context.step("record-start-time", Instant.class, stepCtx -> Instant.now());
    -        logger.info("Recorded start time: {}", startTime);
    -
    -        // Step 2: Call that never retries (fails immediately)
    -        try {
    -            context.step(
    -                    "no-retry-call",
    -                    Void.class,
    -                    stepCtx -> {
    -                        throw new RuntimeException("This operation never retries");
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                            .build());
    -        } catch (Exception e) {
    -            logger.info("No-retry step failed as expected: {}", e.getMessage());
    -        }
    -
    -        // Step 3: Flaky API call that succeeds after retries
    -        var result = context.step(
    -                "flaky-api-call",
    -                String.class,
    -                stepCtx -> {
    -                    // Fail for first 8 seconds, then succeed
    -                    var failForMillis = 8000;
    -                    var elapsed = Duration.between(startTime, Instant.now());
    -
    -                    if (elapsed.toMillis() < failForMillis) {
    -                        var message = String.format(
    -                                "Flaky API failing - elapsed time (%.1fs) < %.1fs",
    -                                elapsed.toMillis() / 1000.0, failForMillis / 1000.0);
    -                        logger.warn(message);
    -                        throw new RuntimeException(message);
    -                    } else {
    -                        var message = String.format(
    -                                "Flaky API succeeded - elapsed time (%.1fs) >= %.1fs",
    -                                elapsed.toMillis() / 1000.0, failForMillis / 1000.0);
    -                        logger.info(message);
    -                        return message;
    -                    }
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -
    -        logger.info("Flaky API result: {}", result);
    -
    -        // Step 4: Wait a bit before finishing
    -        context.wait(null, Duration.ofSeconds(2));
    -
    -        logger.info("Retry example completed successfully");
    -        return "Retry example completed: " + result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryInProcessExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryInProcessExample.java
    deleted file mode 100644
    index 4687a9faa..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/step/RetryInProcessExample.java
    +++ /dev/null
    @@ -1,90 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import java.time.Duration;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating in-process retry behavior with concurrent operations.
    - *
    - * <p>This example shows:
    - *
    - * <ul>
    - *   <li>An async step that fails and retries while other work continues
    - *   <li>A long-running synchronous step that keeps the process busy
    - *   <li>Retry happens in-process without suspension because main thread is active
    - * </ul>
    - */
    -public class RetryInProcessExample extends DurableHandler<Object, String> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(RetryInProcessExample.class);
    -
    -    private final AtomicInteger attemptCount = new AtomicInteger(0);
    -
    -    @Override
    -    public String handleRequest(Object input, DurableContext context) {
    -        logger.info("Starting retry in-process example");
    -
    -        // Start async step that will fail and retry
    -        DurableFuture<String> asyncStep = context.stepAsync(
    -                "flaky-async-operation",
    -                String.class,
    -                stepCtx -> {
    -                    int attempt = attemptCount.incrementAndGet();
    -                    logger.info(
    -                            "Async operation attempt #{} in thread: {}",
    -                            attempt,
    -                            Thread.currentThread().getName());
    -
    -                    // Fail first 2 attempts, succeed on 3rd
    -                    if (attempt < 3) {
    -                        var message = "Async operation failing on attempt " + attempt;
    -                        logger.warn(message);
    -                        throw new RuntimeException(message);
    -                    } else {
    -                        var message = "Async operation succeeded on attempt " + attempt;
    -                        logger.info(message);
    -                        return message;
    -                    }
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.exponentialBackoff(
    -                                5, Duration.ofSeconds(1), Duration.ofSeconds(10), 2.0, JitterStrategy.NONE))
    -                        .build());
    -
    -        // Long-running synchronous step that keeps process busy
    -        // This prevents suspension during async step retries
    -        String syncResult = context.step("long-running-operation", String.class, stepCtx -> {
    -            logger.info(
    -                    "Starting long-running operation (10 seconds) in thread: {}",
    -                    Thread.currentThread().getName());
    -            try {
    -                Thread.sleep(10000); // 10 seconds
    -                logger.info("Long-running operation completed");
    -                return "Long operation completed";
    -            } catch (InterruptedException e) {
    -                Thread.currentThread().interrupt();
    -                throw new RuntimeException("Long operation interrupted", e);
    -            }
    -        });
    -
    -        // Get async step result (should be ready by now due to retries during sync
    -        // step)
    -        logger.info("Getting async step result");
    -        String asyncResult = asyncStep.get();
    -
    -        logger.info("Sync result: {}", syncResult);
    -        logger.info("Async result: {}", asyncResult);
    -
    -        return "Retry in-process completed - Sync: " + syncResult + ", Async: " + asyncResult;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/step/SimpleStepExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/step/SimpleStepExample.java
    deleted file mode 100644
    index 64ab55601..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/step/SimpleStepExample.java
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Simple example demonstrating basic step execution with the Durable Execution SDK.
    - *
    - * <p>This handler processes a greeting request through three sequential steps:
    - *
    - * <ol>
    - *   <li>Create greeting message
    - *   <li>Transform to uppercase
    - *   <li>Add punctuation
    - * </ol>
    - */
    -public class SimpleStepExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        // Step 1: Create greeting
    -        var greeting = context.step("create-greeting", String.class, stepCtx -> "Hello, " + input.getName());
    -
    -        // Step 2: Transform to uppercase
    -        var uppercase = context.step("to-uppercase", String.class, stepCtx -> greeting.toUpperCase());
    -
    -        // Step 3: Add punctuation
    -        var result = context.step("add-punctuation", String.class, stepCtx -> uppercase + "!");
    -
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/types/ApprovalRequest.java b/examples/src/main/java/software/amazon/lambda/durable/examples/types/ApprovalRequest.java
    deleted file mode 100644
    index af872b75a..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/types/ApprovalRequest.java
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.types;
    -
    -/** Input for the approval workflow. */
    -public record ApprovalRequest(String description, double amount, Integer timeoutSeconds) {
    -    // Convenience constructor for default timeout
    -    public ApprovalRequest(String description, double amount) {
    -        this(description, amount, null);
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/types/GreetingRequest.java b/examples/src/main/java/software/amazon/lambda/durable/examples/types/GreetingRequest.java
    deleted file mode 100644
    index 0df7ecf64..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/types/GreetingRequest.java
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.types;
    -
    -public class GreetingRequest {
    -    private String name;
    -
    -    public GreetingRequest() {}
    -
    -    public GreetingRequest(String name) {
    -        this.name = name;
    -    }
    -
    -    public String getName() {
    -        return name != null ? name : "World";
    -    }
    -
    -    public void setName(String name) {
    -        this.name = name;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.java
    deleted file mode 100644
    index 815ee2475..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.java
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import java.util.stream.IntStream;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -
    -/**
    - * Example demonstrating concurrent waitForCondition operations using map.
    - *
    - * <p>Runs many (totalOperations) waitForCondition operations concurrently (maxConcurrency). Each operation:
    - *
    - * <ol>
    - *   <li>Uses attempt count as state (replay-safe).
    - *   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
    - * </ol>
    - */
    -public class ConcurrentWaitForConditionExample extends DurableHandler<ConcurrentWaitForConditionExample.Input, String> {
    -
    -    public record Input(int threshold, int totalOperations, int maxConcurrency) {}
    -
    -    @Override
    -    public String handleRequest(Input input, DurableContext context) {
    -        var items = IntStream.range(0, input.totalOperations()).boxed().toList();
    -
    -        var config = MapConfig.builder().maxConcurrency(input.maxConcurrency()).build();
    -
    -        var result = context.map(
    -                "concurrent-wait-for-conditions",
    -                items,
    -                String.class,
    -                (item, index, ctx) -> {
    -                    var conditionConfig = WaitForConditionConfig.<Integer>builder()
    -                            .initialState(1)
    -                            .build();
    -                    // Poll until the counter reaches the input threshold
    -                    var count = ctx.waitForCondition(
    -                            "condition-" + index,
    -                            Integer.class,
    -                            (callCount, stepCtx) -> {
    -                                if (callCount >= input.threshold()) {
    -                                    return WaitForConditionResult.stopPolling(callCount);
    -                                }
    -                                return WaitForConditionResult.continuePolling(callCount + 1);
    -                            },
    -                            conditionConfig);
    -                    return String.valueOf(count);
    -                },
    -                config);
    -
    -        return String.join(" | ", result.results());
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.java
    deleted file mode 100644
    index f0a242ad6..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.java
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Example demonstrating non-blocking wait with waitAsync().
    - *
    - * <p>This handler starts a wait and a step concurrently, then collects both results. The wait acts as a minimum
    - * duration guarantee β€” the step runs in parallel, and the handler only proceeds once both the step completes and the
    - * wait elapses.
    - *
    - * <ol>
    - *   <li>Start a 5-second async wait (non-blocking)
    - *   <li>Start an async step concurrently
    - *   <li>Collect both results β€” ensures at least 5 seconds have passed
    - * </ol>
    - */
    -public class WaitAsyncExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        context.getLogger().info("Starting waitAsync example for {}", input.getName());
    -
    -        // Start a non-blocking wait β€” returns immediately
    -        DurableFuture<Void> waitFuture = context.waitAsync("min-delay", Duration.ofSeconds(5));
    -
    -        // Run a step concurrently while the wait timer is ticking
    -        DurableFuture<String> stepFuture =
    -                context.stepAsync("process", String.class, stepCtx -> "Processed: " + input.getName());
    -
    -        // Block until both complete β€” guarantees at least 5 seconds elapsed
    -        waitFuture.get();
    -        var result = stepFuture.get();
    -
    -        context.getLogger().info("Both wait and step complete: {}", result);
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.java
    deleted file mode 100644
    index 829b35de1..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.java
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import java.time.Duration;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating concurrent stepAsync() with wait() operations.
    - *
    - * <p>This example shows suspension behavior with pending async steps:
    - *
    - * <ul>
    - *   <li>stepAsync() starts a background operation (takes 2 seconds)
    - *   <li>wait() is called immediately (3 second duration)
    - *   <li>The step completes successfully before suspension
    - *   <li>Execution suspends for the wait time
    - * </ul>
    - */
    -public class WaitAtLeastExample extends DurableHandler<GreetingRequest, String> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(WaitAtLeastExample.class);
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        logger.info("Starting concurrent step + wait example for: {}", input.getName());
    -
    -        // Start an async step that takes 2 seconds
    -        DurableFuture<String> asyncStep = context.stepAsync(
    -                "async-operation",
    -                String.class,
    -                stepCtx -> {
    -                    logger.info(
    -                            "Async operation starting in thread: {}",
    -                            Thread.currentThread().getName());
    -                    try {
    -                        Thread.sleep(2000); // 2 seconds
    -                        logger.info("Async operation completed successfully");
    -                        return "Processed: " + input.getName();
    -                    } catch (InterruptedException e) {
    -                        Thread.currentThread().interrupt();
    -                        throw new RuntimeException("Operation interrupted", e);
    -                    }
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -
    -        // Immediately wait for 3 seconds
    -        // The async step will complete during this wait
    -        logger.info("Waiting 3 seconds (async step will complete in 2s)");
    -        context.wait("wait-3-seconds", Duration.ofSeconds(3));
    -
    -        // After wait, get the async step result
    -        logger.info("Resumed after wait");
    -        String result = asyncStep.get();
    -        logger.info("Final result: {}", result);
    -
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.java
    deleted file mode 100644
    index d30aa4234..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.java
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import java.time.Duration;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -/**
    - * Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.
    - *
    - * <p>This example shows in-process wait behavior:
    - *
    - * <ul>
    - *   <li>stepAsync() starts a background operation (takes 10 seconds)
    - *   <li>wait() is called immediately (3 second duration)
    - *   <li>The async step takes longer than the wait duration
    - *   <li>No suspension occurs because we've already waited long enough
    - * </ul>
    - */
    -public class WaitAtLeastInProcessExample extends DurableHandler<GreetingRequest, String> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(WaitAtLeastInProcessExample.class);
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        logger.info("Starting concurrent step + wait example for: {}", input.getName());
    -
    -        // Start an async step that takes 10 seconds
    -        DurableFuture<String> asyncStep = context.stepAsync(
    -                "async-operation",
    -                String.class,
    -                stepCtx -> {
    -                    logger.info(
    -                            "Async operation starting in thread: {}",
    -                            Thread.currentThread().getName());
    -                    try {
    -                        Thread.sleep(10000); // 10 seconds
    -                        logger.info("Async operation completed successfully");
    -                        return "Processed: " + input.getName();
    -                    } catch (InterruptedException e) {
    -                        Thread.currentThread().interrupt();
    -                        throw new RuntimeException("Operation interrupted", e);
    -                    }
    -                },
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -
    -        // Immediately wait for 3 seconds
    -        // The async step will still be running and will complete after the wait
    -        logger.info("Waiting 3 seconds (async step will complete in 10s - no suspension expected)");
    -        context.wait("wait-3-seconds", Duration.ofSeconds(3));
    -
    -        // After wait, get the async step result
    -        logger.info("Wait completed, getting async result");
    -        String result = asyncStep.get();
    -        logger.info("Final result: {}", result);
    -
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitExample.java
    deleted file mode 100644
    index 1ba6fe2bb..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitExample.java
    +++ /dev/null
    @@ -1,59 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -
    -/**
    - * Example demonstrating step execution with wait operations.
    - *
    - * <p>This handler processes a request through steps with delays:
    - *
    - * <ol>
    - *   <li>Start processing
    - *   <li>Wait 10 seconds
    - *   <li>Continue processing
    - *   <li>Wait 5 seconds
    - *   <li>Complete
    - * </ol>
    - */
    -public class WaitExample extends DurableHandler<GreetingRequest, String> {
    -
    -    @Override
    -    public String handleRequest(GreetingRequest input, DurableContext context) {
    -        // Step 1: Start processing
    -        var started =
    -                context.step("start-processing", String.class, stepCtx -> "Started processing for " + input.getName());
    -
    -        // Wait 10 seconds
    -        context.wait(null, Duration.ofSeconds(10));
    -
    -        // Step 2: Continue processing
    -        var continued = context.stepAsync("continue-processing", String.class, stepCtx -> {
    -            try {
    -                Thread.sleep(10000);
    -            } catch (InterruptedException e) {
    -                throw new RuntimeException(e);
    -            }
    -            return started + " - continued after 10s";
    -        });
    -
    -        // Wait at most seconds
    -        var wait5seconds = context.runInChildContextAsync("wait-5-seconds", String.class, ctx -> {
    -            ctx.wait("wait-5-seconds", Duration.ofSeconds(5));
    -
    -            return started + " - waited 5 seconds";
    -        });
    -
    -        var step2 = DurableFuture.anyOf(continued, wait5seconds);
    -
    -        // Step 3: Complete
    -        var result = context.step("complete-processing", String.class, stepCtx -> step2 + " - completed after 5s more");
    -
    -        return result;
    -    }
    -}
    diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.java
    deleted file mode 100644
    index c6ec0492e..000000000
    --- a/examples/src/main/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.java
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -
    -/**
    - * Example demonstrating the waitForCondition operation.
    - *
    - * <p>This handler polls a condition function until it signals completion:
    - *
    - * <ol>
    - *   <li>The attempt count is used as a state (replay safe)
    - *   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
    - * </ol>
    - */
    -public class WaitForConditionExample extends DurableHandler<Integer, Integer> {
    -
    -    @Override
    -    public Integer handleRequest(Integer threshold, DurableContext context) {
    -        // Poll until the counter reaches the input threshold
    -        return context.waitForCondition(
    -                "wait-for-condition",
    -                Integer.class,
    -                (callCount, stepCtx) -> {
    -                    if (callCount >= threshold) {
    -                        // Condition met, stop polling
    -                        return WaitForConditionResult.stopPolling(callCount);
    -                    }
    -                    // Condition not met, keep polling
    -                    return WaitForConditionResult.continuePolling(callCount + 1);
    -                },
    -                WaitForConditionConfig.<Integer>builder().initialState(1).build());
    -    }
    -}
    diff --git a/examples/src/main/resources/log4j2.xml b/examples/src/main/resources/log4j2.xml
    deleted file mode 100644
    index 827132a4c..000000000
    --- a/examples/src/main/resources/log4j2.xml
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Configuration status="WARN">
    -    <Appenders>
    -        <Console name="Console" target="SYSTEM_OUT">
    -            <JsonTemplateLayout eventTemplateUri="classpath:EcsLayout.json" />
    -        </Console>
    -    </Appenders>
    -
    -    <Loggers>
    -        <Logger name="software.amazon.lambda.durable" level="INFO"/>
    -
    -        <!-- AWS SDK logs at WARN -->
    -        <Logger name="software.amazon.awssdk" level="WARN" />
    -
    -        <!-- Everything else at INFO -->
    -        <Root level="INFO">
    -            <AppenderRef ref="Console" />
    -        </Root>
    -    </Loggers>
    -</Configuration>
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java
    deleted file mode 100644
    index 6f809513e..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/CloudBasedIntegrationTest.java
    +++ /dev/null
    @@ -1,677 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static software.amazon.lambda.durable.TypeToken.get;
    -
    -import java.time.Duration;
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.BeforeAll;
    -import org.junit.jupiter.api.Test;
    -import org.junit.jupiter.api.condition.EnabledIf;
    -import org.junit.jupiter.params.ParameterizedTest;
    -import org.junit.jupiter.params.provider.CsvSource;
    -import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
    -import software.amazon.awssdk.regions.Region;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.sts.StsClient;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample;
    -import software.amazon.lambda.durable.examples.general.GenericTypesExample;
    -import software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample;
    -import software.amazon.lambda.durable.examples.types.ApprovalRequest;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.CloudDurableTestRunner;
    -
    -@EnabledIf("isEnabled")
    -class CloudBasedIntegrationTest {
    -    private static final int PERFORMANCE_TEST_REPEAT = 3;
    -
    -    private static String account;
    -    private static String region;
    -    private static String functionNameSuffix;
    -    private static LambdaClient lambdaClient;
    -
    -    static boolean isEnabled() {
    -        var enabled = "true".equals(System.getProperty("test.cloud.enabled"));
    -        if (!enabled) {
    -            System.out.println("⚠️ Cloud integration tests disabled. Enable with -Dtest.cloud.enabled=true");
    -        }
    -        return enabled;
    -    }
    -
    -    @BeforeAll
    -    static void setup() {
    -        try {
    -            DefaultCredentialsProvider.builder().build().resolveCredentials();
    -        } catch (Exception e) {
    -            throw new IllegalStateException("AWS credentials not available");
    -        }
    -
    -        account = System.getProperty("test.aws.account");
    -        region = System.getProperty("test.aws.region");
    -        functionNameSuffix = System.getProperty("test.function.name.suffix", "-java17-runtime");
    -
    -        if (account == null || region == null) {
    -            try (var sts = StsClient.create()) {
    -                if (account == null) account = sts.getCallerIdentity().account();
    -                if (region == null)
    -                    region = sts.serviceClientConfiguration().region().id();
    -            }
    -        }
    -
    -        lambdaClient = LambdaClient.builder()
    -                .credentialsProvider(DefaultCredentialsProvider.builder().build())
    -                .region(Region.of(region))
    -                .build();
    -
    -        System.out.println("☁️ Running cloud integration tests against account " + account + " in " + region);
    -    }
    -
    -    private static String arn(String functionName) {
    -        return "arn:aws:lambda:" + region + ":" + account + ":function:" + functionName + functionNameSuffix
    -                + ":$LATEST";
    -    }
    -
    -    /** Custom SerDes that tracks serialization calls. */
    -    static class TrackingSerDes implements SerDes {
    -        private final JacksonSerDes delegate = new JacksonSerDes();
    -        private final AtomicInteger serializeCount = new AtomicInteger(0);
    -        private final AtomicInteger deserializeCount = new AtomicInteger(0);
    -
    -        @Override
    -        public String serialize(Object value) {
    -            serializeCount.incrementAndGet();
    -            return delegate.serialize(value);
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            deserializeCount.incrementAndGet();
    -            return delegate.deserialize(data, typeToken);
    -        }
    -
    -        public int getSerializeCount() {
    -            return serializeCount.get();
    -        }
    -
    -        public int getDeserializeCount() {
    -            return deserializeCount.get();
    -        }
    -    }
    -
    -    @Test
    -    void testSimpleStepExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("simple-step-example"), new TypeToken<Map<String, String>>() {}, get(String.class), lambdaClient);
    -        var result = runner.run(Map.of("message", "test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertNotNull(result.getResult());
    -
    -        var createGreetingOp = runner.getOperation("create-greeting");
    -        assertNotNull(createGreetingOp);
    -        assertEquals("create-greeting", createGreetingOp.getName());
    -    }
    -
    -    @Test
    -    void testNoopExampleWithLargeInput() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("noop-example"), new TypeToken<Map<String, String>>() {}, get(String.class), lambdaClient);
    -        // 6MB large input
    -        var largeInput = "A".repeat(1024 * 1024 * 6 - 12);
    -        var result = runner.run(Map.of("name", largeInput));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO, " + largeInput + "!", result.getResult());
    -    }
    -
    -    @Test
    -    void testSimpleInvokeExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("simple-invoke-example"), new TypeToken<Map<String, String>>() {}, get(String.class), lambdaClient);
    -        var result = runner.run(Map.of("name", functionNameSuffix));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertNotNull(result.getResult());
    -
    -        var createGreetingOp = runner.getOperation("call-greeting1");
    -        assertNotNull(createGreetingOp);
    -        assertEquals("call-greeting1", createGreetingOp.getName());
    -
    -        var createGreetingOp2 = runner.getOperation("call-greeting2");
    -        assertNotNull(createGreetingOp);
    -        assertEquals("call-greeting2", createGreetingOp2.getName());
    -    }
    -
    -    @Test
    -    void testRetryExample() {
    -        var runner = CloudDurableTestRunner.create(arn("retry-example"), String.class, String.class, lambdaClient);
    -        var result = runner.run("{}");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Retry example completed"));
    -        assertTrue(finalResult.contains("Flaky API succeeded"));
    -
    -        var recordStartOp = runner.getOperation("record-start-time");
    -        assertNotNull(recordStartOp);
    -
    -        var flakyApiOp = runner.getOperation("flaky-api-call");
    -        assertNotNull(flakyApiOp);
    -        assertTrue(flakyApiOp.getStepResult(String.class).contains("Flaky API succeeded"));
    -    }
    -
    -    @Test
    -    void testRetryInProcessExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("retry-in-process-example"), String.class, String.class, lambdaClient);
    -        var result = runner.run("{}");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Retry in-process completed"));
    -        assertTrue(finalResult.contains("Long operation completed"));
    -        assertTrue(finalResult.contains("Async operation succeeded"));
    -
    -        var asyncOp = runner.getOperation("flaky-async-operation");
    -        assertNotNull(asyncOp);
    -        assertTrue(asyncOp.getStepResult(String.class).contains("Async operation succeeded"));
    -
    -        var longOp = runner.getOperation("long-running-operation");
    -        assertNotNull(longOp);
    -        assertEquals("Long operation completed", longOp.getStepResult(String.class));
    -    }
    -
    -    @Test
    -    void testWaitExample() {
    -        var runner =
    -                CloudDurableTestRunner.create(arn("wait-example"), GreetingRequest.class, String.class, lambdaClient);
    -        var result = runner.run(new GreetingRequest("TestUser"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Started processing for TestUser"));
    -        assertFalse(finalResult.contains("continued after 10s"));
    -        assertTrue(finalResult.contains("waited 5 seconds"));
    -        assertTrue(finalResult.contains("completed after 5s more"));
    -
    -        assertNotNull(runner.getOperation("start-processing"));
    -        assertNotNull(runner.getOperation("continue-processing"));
    -        assertNotNull(runner.getOperation("complete-processing"));
    -    }
    -
    -    @Test
    -    void testWaitAtLeastExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("wait-at-least-example"), GreetingRequest.class, String.class, lambdaClient);
    -        var result = runner.run(new GreetingRequest("TestUser"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Processed: TestUser"));
    -
    -        var asyncOp = runner.getOperation("async-operation");
    -        assertNotNull(asyncOp);
    -        assertTrue(asyncOp.getStepResult(String.class).contains("Processed: TestUser"));
    -    }
    -
    -    @Test
    -    void testWaitAtLeastInProcessExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("wait-at-least-in-process-example"), GreetingRequest.class, String.class, lambdaClient);
    -        var result = runner.run(new GreetingRequest("TestUser"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Processed: TestUser"));
    -
    -        var asyncOp = runner.getOperation("async-operation");
    -        assertNotNull(asyncOp);
    -        assertTrue(asyncOp.getStepResult(String.class).contains("Processed: TestUser"));
    -    }
    -
    -    @Test
    -    void testGenericTypesExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("generic-types-example"),
    -                GenericTypesExample.Input.class,
    -                GenericTypesExample.Output.class,
    -                lambdaClient);
    -        var result = runner.run(new GenericTypesExample.Input("user123"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        GenericTypesExample.Output output = result.getResult();
    -        assertNotNull(output);
    -
    -        // Verify items list
    -        assertNotNull(output.items);
    -        assertEquals(4, output.items.size());
    -        assertTrue(output.items.contains("item1"));
    -        assertTrue(output.items.contains("item4"));
    -
    -        // Verify counts map
    -        assertNotNull(output.counts);
    -        assertEquals(3, output.counts.size());
    -        assertEquals(2, output.counts.get("electronics"));
    -        assertEquals(1, output.counts.get("books"));
    -        assertEquals(1, output.counts.get("clothing"));
    -
    -        // Verify categories nested map
    -        assertNotNull(output.categories);
    -        assertEquals(3, output.categories.size());
    -        assertEquals(2, output.categories.get("electronics").size());
    -        assertTrue(output.categories.get("electronics").contains("laptop"));
    -        assertTrue(output.categories.get("electronics").contains("phone"));
    -
    -        // Verify operations were executed
    -        assertNotNull(runner.getOperation("fetch-items"));
    -        assertNotNull(runner.getOperation("count-by-category"));
    -        assertNotNull(runner.getOperation("fetch-categories"));
    -    }
    -
    -    @Test
    -    void testGenericInputOutputExample() {
    -        final TypeToken<Map<String, Map<String, List<String>>>> resultType = new TypeToken<>() {};
    -        final TypeToken<Map<String, String>> inputType = new TypeToken<>() {};
    -        final TrackingSerDes customSerDes = new TrackingSerDes();
    -
    -        var runner = CloudDurableTestRunner.create(arn("generic-input-output-example"), inputType, resultType)
    -                .withLambdaClient(lambdaClient)
    -                .withSerDes(customSerDes);
    -        var result = runner.run(new HashMap<>(Map.of("userId", "user123")));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult();
    -        assertNotNull(output);
    -
    -        // Verify categories nested map
    -        var categories = output.get("categories");
    -        assertNotNull(categories);
    -        assertEquals(3, categories.size());
    -        assertEquals(2, categories.get("electronics").size());
    -        assertTrue(categories.get("electronics").contains("laptop"));
    -        assertTrue(categories.get("electronics").contains("phone"));
    -
    -        // Verify operations were executed
    -        assertNotNull(runner.getOperation("fetch-categories"));
    -
    -        // verify custom SerDes was called
    -        assertEquals(1, customSerDes.getDeserializeCount());
    -        assertEquals(1, customSerDes.getSerializeCount());
    -    }
    -
    -    @Test
    -    void testCustomConfigExample() {
    -        var runner =
    -                CloudDurableTestRunner.create(arn("custom-config-example"), String.class, String.class, lambdaClient);
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("Created custom object"));
    -        assertTrue(finalResult.contains("user123"));
    -        assertTrue(finalResult.contains("John Doe"));
    -        assertTrue(finalResult.contains("25"));
    -        assertTrue(finalResult.contains("john.doe@example.com"));
    -
    -        // Verify the step operation was executed
    -        var createObjectOp = runner.getOperation("create-custom-object");
    -        assertNotNull(createObjectOp);
    -        assertEquals("create-custom-object", createObjectOp.getName());
    -
    -        // The step result should contain the serialized JSON with snake_case
    -        var stepResult = createObjectOp.getStepDetails().result();
    -        assertNotNull(stepResult);
    -        assertTrue(stepResult.contains("user_id"));
    -        assertTrue(stepResult.contains("full_name"));
    -        assertTrue(stepResult.contains("user_age"));
    -        assertTrue(stepResult.contains("email_address"));
    -    }
    -
    -    @Test
    -    void testErrorHandlingExample() {
    -        var runner =
    -                CloudDurableTestRunner.create(arn("error-handling-example"), String.class, String.class, lambdaClient);
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.startsWith("Completed: "));
    -        assertTrue(finalResult.contains("fallback-result"));
    -        assertTrue(finalResult.contains("payment-"));
    -    }
    -
    -    @Test
    -    void testCallbackExample() {
    -        // happy case covering both createCallback (approval) and waitForCallback (preapproval-callback)
    -        var runner = CloudDurableTestRunner.create(
    -                arn("callback-example"), ApprovalRequest.class, String.class, lambdaClient);
    -
    -        // Start async execution
    -        var execution = runner.startAsync(new ApprovalRequest("Purchase order", 5000.0));
    -
    -        // Complete the preapproval callback
    -        execution.pollUntil(exec -> exec.hasCallback("preapproval-callback"));
    -        var preapprovalCallbackId = execution.getCallbackId("preapproval-callback");
    -        execution.completeCallback(preapprovalCallbackId, "\"preapproved\"");
    -
    -        // Wait for callback to appear
    -        execution.pollUntil(exec -> exec.hasCallback("approval"));
    -
    -        // Get callback ID
    -        var callbackId = execution.getCallbackId("approval");
    -        assertNotNull(callbackId);
    -
    -        // Complete the callback using AWS SDK
    -        execution.completeCallback(callbackId, "\"approved\"");
    -
    -        // Wait for execution to complete
    -        var result = execution.pollUntilComplete();
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var finalResult = result.getResult();
    -        assertNotNull(finalResult);
    -        assertTrue(finalResult.contains("preapproved"));
    -        assertTrue(finalResult.contains("Approval request for: Purchase order"));
    -        assertTrue(finalResult.contains("5000"));
    -        assertTrue(finalResult.contains("approved"));
    -
    -        // Verify all operations completed
    -        assertNotNull(execution.getOperation("prepare"));
    -        assertNotNull(execution.getOperation("log-callback-command"));
    -        assertNotNull(execution.getOperation("process-approval"));
    -    }
    -
    -    @Test
    -    void testCallbackExampleWithFailure() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("callback-example"), ApprovalRequest.class, String.class, lambdaClient);
    -
    -        // Start async execution
    -        var execution = runner.startAsync(new ApprovalRequest("Purchase order", 5000.0));
    -
    -        execution.pollUntil(exec -> exec.hasCallback("preapproval-callback"));
    -        var preapprovalCallbackId = execution.getCallbackId("preapproval-callback");
    -        execution.completeCallback(preapprovalCallbackId, "\"preapproved\"");
    -
    -        // Wait for callback to appear
    -        execution.pollUntil(exec -> exec.hasCallback("approval"));
    -
    -        // Get callback ID
    -        var callbackId = execution.getCallbackId("approval");
    -        assertNotNull(callbackId);
    -
    -        // Fail the callback using AWS SDK
    -        execution.failCallback(
    -                callbackId,
    -                ErrorObject.builder()
    -                        .errorType("ApprovalRejected")
    -                        .errorMessage("Approval rejected by manager")
    -                        .build());
    -
    -        // Wait for execution to complete
    -        var result = execution.pollUntilComplete();
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -
    -        // Verify the callback operation shows failure
    -        var approvalOp = execution.getOperation("approval");
    -        assertNotNull(approvalOp);
    -        var callbackDetails = approvalOp.getCallbackDetails();
    -        assertNotNull(callbackDetails);
    -        assertNotNull(callbackDetails.error());
    -        // Error message is redacted in the response, just verify error exists
    -        assertTrue(callbackDetails.error().toString().contains("ErrorObject"));
    -    }
    -
    -    @Test
    -    void testCallbackExampleWithTimeout() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("callback-example"), ApprovalRequest.class, String.class, lambdaClient);
    -
    -        // Start async execution with 10 second timeout
    -        var execution = runner.startAsync(new ApprovalRequest("Purchase order", 5000.0, 10));
    -
    -        execution.pollUntil(exec -> exec.hasCallback("preapproval-callback"));
    -        var preapprovalCallbackId = execution.getCallbackId("preapproval-callback");
    -        execution.completeCallback(preapprovalCallbackId, "\"preapproved\"");
    -
    -        // Wait for callback to appear
    -        execution.pollUntil(exec -> exec.hasCallback("approval"));
    -
    -        // Get callback ID but don't complete it - let it timeout
    -        var callbackId = execution.getCallbackId("approval");
    -        assertNotNull(callbackId);
    -
    -        // Wait for execution to complete (should timeout after 10 seconds)
    -        var result = execution.pollUntilComplete();
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -
    -        // Verify the callback operation shows timeout status
    -        var approvalOp = execution.getOperation("approval");
    -        assertNotNull(approvalOp);
    -        assertEquals(OperationStatus.TIMED_OUT, approvalOp.getStatus());
    -    }
    -
    -    @Test
    -    void testCallbackExampleWithWaitForCallbackFailure() {
    -        // fail the waitForCallback (preapproval-callback) callback
    -        var runner = CloudDurableTestRunner.create(
    -                arn("callback-example"), ApprovalRequest.class, String.class, lambdaClient);
    -
    -        // Start async execution with 10 second timeout
    -        var execution = runner.startAsync(new ApprovalRequest("Purchase order", 5000.0, 10));
    -
    -        execution.pollUntil(exec -> exec.hasCallback("preapproval-callback"));
    -        var preapprovalCallbackId = execution.getCallbackId("preapproval-callback");
    -        execution.failCallback(
    -                preapprovalCallbackId,
    -                ErrorObject.builder().errorMessage("preapproval denied").build());
    -
    -        // Wait for callback to appear
    -        execution.pollUntil(exec -> exec.hasCallback("approval"));
    -
    -        // Get callback ID but don't complete it - let it timeout
    -        var callbackId = execution.getCallbackId("approval");
    -        assertNotNull(callbackId);
    -
    -        // Wait for execution to complete (should timeout after 10 seconds)
    -        var result = execution.pollUntilComplete();
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -
    -        // Verify the callback operation shows timeout status
    -        var approvalOp = execution.getOperation("preapproval-callback");
    -        assertNotNull(approvalOp);
    -        assertEquals(OperationStatus.FAILED, approvalOp.getStatus());
    -    }
    -
    -    @Test
    -    void testChildContextExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("child-context-example"), GreetingRequest.class, String.class, lambdaClient);
    -        var result = runner.run(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(
    -                "Order for Alice [validated] | Stock available for Alice [confirmed] | Base rate for Alice + regional adjustment [shipping ready]",
    -                result.getResult());
    -
    -        // Verify child context operations were tracked
    -        assertNotNull(runner.getOperation("order-validation"));
    -        assertNotNull(runner.getOperation("inventory-check"));
    -        assertNotNull(runner.getOperation("shipping-estimate"));
    -    }
    -
    -    @ParameterizedTest
    -    @CsvSource({"100, 1000, 20", "500, 2000, 30", "1000, 3000, 50"})
    -    void testManyAsyncStepsExample(int steps, long maxExecutionTime, long maxReplayTime) {
    -        long minimalExecutionTimeMs = Long.MAX_VALUE;
    -        long minimalReplayTimeMs = Long.MAX_VALUE;
    -        for (var i = 0; i < PERFORMANCE_TEST_REPEAT; i++) {
    -            var runner = CloudDurableTestRunner.create(
    -                    arn("many-async-steps-example"),
    -                    ManyAsyncStepsExample.Input.class,
    -                    ManyAsyncStepsExample.Output.class,
    -                    lambdaClient);
    -            var result = runner.run(new ManyAsyncStepsExample.Input(2, steps));
    -
    -            assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -            var finalResult = result.getResult();
    -            System.out.printf("ManyAsyncStepsExample result (%d steps): %s\n", steps, finalResult);
    -            assertNotNull(finalResult);
    -            assertEquals((long) steps * (steps - 1), finalResult.result()); // Sum of 0..steps * 2
    -
    -            // Verify some operations are tracked
    -            assertNotNull(runner.getOperation("compute-0"));
    -            assertNotNull(runner.getOperation("compute-" + (steps - 1)));
    -
    -            if (finalResult.executionTimeMs() < minimalExecutionTimeMs) {
    -                minimalExecutionTimeMs = finalResult.executionTimeMs();
    -            }
    -
    -            if (finalResult.replayTimeMs() < minimalReplayTimeMs) {
    -                minimalReplayTimeMs = finalResult.replayTimeMs();
    -            }
    -        }
    -
    -        assertTrue(minimalReplayTimeMs < maxReplayTime);
    -        assertTrue(minimalExecutionTimeMs < maxExecutionTime);
    -    }
    -
    -    @ParameterizedTest
    -    // OOM if it creates 1000 child contexts
    -    @CsvSource({"100, 1500, 10", "500, 3000, 20"})
    -    void testManyAsyncChildContextExample(int steps, long maxExecutionTime, long maxReplayTime) {
    -        long minimalExecutionTimeMs = Long.MAX_VALUE;
    -        long minimalReplayTimeMs = Long.MAX_VALUE;
    -        for (var i = 0; i < PERFORMANCE_TEST_REPEAT; i++) {
    -            var runner = CloudDurableTestRunner.create(
    -                    arn("many-async-child-context-example"),
    -                    ManyAsyncChildContextExample.Input.class,
    -                    ManyAsyncChildContextExample.Output.class,
    -                    lambdaClient);
    -            var result = runner.run(new ManyAsyncChildContextExample.Input(2, steps));
    -
    -            assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -            var finalResult = result.getResult();
    -            System.out.printf("ManyAsyncChildContextExample result (%d child contexts): %s\n", steps, finalResult);
    -            assertNotNull(finalResult);
    -            assertEquals((long) steps * (steps - 1), finalResult.result()); // Sum of 0..steps * 2
    -
    -            // Verify some operations are tracked
    -            assertNotNull(runner.getOperation("compute-0"));
    -            assertNotNull(runner.getOperation("compute-" + (steps - 1)));
    -            assertNotNull(runner.getOperation("child-0"));
    -            assertNotNull(runner.getOperation("child-" + (steps - 1)));
    -
    -            if (finalResult.executionTimeMs() < minimalExecutionTimeMs) {
    -                minimalExecutionTimeMs = finalResult.executionTimeMs();
    -            }
    -
    -            if (finalResult.replayTimeMs() < minimalReplayTimeMs) {
    -                minimalReplayTimeMs = finalResult.replayTimeMs();
    -            }
    -        }
    -
    -        assertTrue(minimalReplayTimeMs < maxReplayTime);
    -        assertTrue(minimalExecutionTimeMs < maxExecutionTime);
    -    }
    -
    -    @Test
    -    void testSimpleMapExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("simple-map-example"), GreetingRequest.class, String.class, lambdaClient);
    -        var result = runner.run(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Hello, Alice! | Hello, ALICE! | Hello, alice!", result.getResult());
    -    }
    -
    -    @Test
    -    void testComplexMapExample() {
    -        var runner = CloudDurableTestRunner.create(arn("complex-map-example"), Integer.class, String.class);
    -        var result = runner.run(100);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        var output = result.getResult();
    -        assertNotNull(output);
    -
    -        // Part 1: Concurrent order processing with step + wait + step
    -        assertTrue(output.contains("done:validated:order-1"));
    -        assertTrue(output.contains("done:validated:order-2"));
    -        assertTrue(output.contains("done:validated:order-100"));
    -
    -        // Part 2: Early termination β€” find 2 healthy servers then stop
    -        assertTrue(output.contains("healthy"));
    -        assertTrue(output.contains("reason=MIN_SUCCESSFUL_REACHED"));
    -    }
    -
    -    @Test
    -    void testWaitForConditionExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("wait-for-condition-example"), Integer.class, Integer.class, lambdaClient);
    -        var result = runner.run(3);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(3, result.getResult());
    -    }
    -
    -    @Test
    -    void testConcurrentWaitForConditionExample() {
    -        var runner = CloudDurableTestRunner.create(
    -                arn("concurrent-wait-for-condition-example"),
    -                ConcurrentWaitForConditionExample.Input.class,
    -                String.class,
    -                lambdaClient);
    -        var result = runner.run(new ConcurrentWaitForConditionExample.Input(3, 100, 50));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Verify each operation finished with 3 attempts
    -        var allOperationsOutput = result.getResult();
    -        var operationOutputs = allOperationsOutput.split(" \\| ");
    -        assertEquals(100, operationOutputs.length);
    -        for (var operationOutput : operationOutputs) {
    -            assertEquals("3", operationOutput);
    -        }
    -
    -        // Verify each waitForCondition operation completes in under 30 seconds
    -        var waitForConditionOps = result.getOperations().stream()
    -                .filter(op -> "WaitForCondition".equals(op.getSubtype()))
    -                .toList();
    -        for (var waitForConditionResult : waitForConditionOps) {
    -            assertTrue(
    -                    waitForConditionResult.getDuration().compareTo(Duration.ofSeconds(30)) < 0,
    -                    "waitForCondition operation took "
    -                            + waitForConditionResult.getDuration().toSeconds() + "s, expected < 30s");
    -        }
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/callback/CallbackExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/callback/CallbackExampleTest.java
    deleted file mode 100644
    index 193aada90..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/callback/CallbackExampleTest.java
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.callback;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.examples.types.ApprovalRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class CallbackExampleTest {
    -
    -    @Test
    -    void testCallbackExampleSuspendsForApproval() {
    -        var handler = new CallbackExample();
    -        var runner = LocalDurableTestRunner.create(ApprovalRequest.class, handler);
    -
    -        var input = new ApprovalRequest("New laptop", 1500.00);
    -
    -        // First run - prepares request and creates callback, then suspends
    -        var result = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Verify the callback was created
    -        var callbackOp = runner.getOperation("approval");
    -        assertNotNull(callbackOp);
    -        assertEquals(OperationType.CALLBACK, callbackOp.getType());
    -        assertEquals(OperationStatus.STARTED, callbackOp.getStatus());
    -    }
    -
    -    @Test
    -    void testCallbackExampleCompletesAfterApproval() {
    -        var handler = new CallbackExample();
    -        var runner = LocalDurableTestRunner.create(ApprovalRequest.class, handler);
    -
    -        var input = new ApprovalRequest("New laptop", 1500.00);
    -
    -        // First run - suspends waiting for callback
    -        var result = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Simulate external system approving the request
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.completeCallback(callbackId, "\"Approved by manager\"");
    -
    -        result = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // second run - pending preapproval
    -        var preapprovalCallbackId = runner.getCallbackId("preapproval-callback");
    -        runner.completeCallback(preapprovalCallbackId, "\"Sent to preapprover\"");
    -
    -        // third run - callback complete, finishes processing
    -        result = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(
    -                "Approval request for: New laptop ($1500.0) - Sent to preapprover - Approved by manager",
    -                result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testCallbackExampleFail() {
    -        var handler = new CallbackExample();
    -        var runner = LocalDurableTestRunner.create(ApprovalRequest.class, handler);
    -
    -        var input = new ApprovalRequest("New laptop", 1500.00);
    -
    -        // First run - suspends waiting for callback
    -        var result = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Simulate external system approving the request
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.completeCallback(callbackId, "\"Approved by manager\"");
    -
    -        result = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // second run - pending preapproval
    -        var preapprovalCallbackId = runner.getCallbackId("preapproval-callback");
    -        runner.failCallback(
    -                preapprovalCallbackId,
    -                ErrorObject.builder()
    -                        .errorType("error type")
    -                        .errorMessage("error message")
    -                        .build());
    -
    -        // third run - callback complete, finishes processing
    -        result = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals("error message", result.getError().get().errorMessage());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExampleTest.java
    deleted file mode 100644
    index 477975c37..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExampleTest.java
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.callback;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.ApprovalRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class WaitForCallbackFailedExampleTest {
    -
    -    @Test
    -    void testWaitForCallbackFailedExample() {
    -        var handler = new WaitForCallbackFailedExample();
    -        var runner = LocalDurableTestRunner.create(ApprovalRequest.class, handler);
    -
    -        var input = new ApprovalRequest("New laptop", 1500.00);
    -
    -        // First run - prepares request and creates callback, then suspends
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Verify the callback was created
    -        assertEquals(
    -                "CallbackSubmitterException:Step failed with error of type java.lang.RuntimeException. Message: Submitter failed with an exception",
    -                result.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/child/ChildContextExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/child/ChildContextExampleTest.java
    deleted file mode 100644
    index 4e931507b..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/child/ChildContextExampleTest.java
    +++ /dev/null
    @@ -1,56 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.child;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ChildContextExampleTest {
    -
    -    @Test
    -    void testChildContextExampleRunsToCompletion() {
    -        var handler = new ChildContextExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest("Alice");
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(
    -                "Order for Alice [validated] | Stock available for Alice [confirmed] | Base rate for Alice + regional adjustment [shipping ready]",
    -                result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testChildContextExampleSuspendsOnFirstRun() {
    -        var handler = new ChildContextExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest("Bob");
    -
    -        // First run should suspend due to wait operations inside child contexts
    -        var result = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -    }
    -
    -    @Test
    -    void testChildContextExampleReplay() {
    -        var handler = new ChildContextExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest("Alice");
    -
    -        // First full execution
    -        var result1 = runner.runUntilComplete(input);
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -
    -        // Replay β€” should return cached results
    -        var result2 = runner.run(input);
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(result1.getResult(String.class), result2.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExampleTest.java
    deleted file mode 100644
    index 94e5ff097..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExampleTest.java
    +++ /dev/null
    @@ -1,66 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.child;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ManyAsyncChildContextExampleTest {
    -
    -    @Test
    -    void testManyAsyncSteps() {
    -        var handler = new ManyAsyncChildContextExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncChildContextExample.Input.class, handler);
    -
    -        var input = new ManyAsyncChildContextExample.Input(2, 500);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ManyAsyncStepsExample.Output.class);
    -        assertNotNull(output);
    -
    -        // Sum of 0..499 * 2 = 499 * 500 / 2 * 2 = 249500
    -        assertEquals(249500, output.result());
    -    }
    -
    -    @Test
    -    void testManyAsyncStepsWithDefaultMultiplier() {
    -        var handler = new ManyAsyncChildContextExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncChildContextExample.Input.class, handler);
    -
    -        var input = new ManyAsyncChildContextExample.Input(1, 500);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Sum of 0..499 = 499 * 500 / 2 = 124750
    -        assertEquals(
    -                124750,
    -                result.getResult(ManyAsyncChildContextExample.Output.class).result());
    -    }
    -
    -    @Test
    -    void testOperationsAreTracked() {
    -        var handler = new ManyAsyncChildContextExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncChildContextExample.Input.class, handler);
    -
    -        var result = runner.runUntilComplete(new ManyAsyncChildContextExample.Input(1, 500));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Verify some operations are tracked
    -        assertNotNull(result.getOperation("compute-0"));
    -        assertNotNull(result.getOperation("compute-499"));
    -        assertNotNull(result.getOperation("compute-250"));
    -
    -        assertNotNull(result.getOperation("child-0"));
    -        assertNotNull(result.getOperation("child-499"));
    -        assertNotNull(result.getOperation("child-250"));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomConfigExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomConfigExampleTest.java
    deleted file mode 100644
    index 8f94a0422..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomConfigExampleTest.java
    +++ /dev/null
    @@ -1,43 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class CustomConfigExampleTest {
    -
    -    @Test
    -    void testCustomConfigExample() {
    -        var handler = new CustomConfigExample();
    -
    -        // Create test runner from handler (automatically extracts config)
    -        var runner = LocalDurableTestRunner.create(String.class, handler);
    -
    -        // Run with input
    -        var result = runner.run("test-input");
    -
    -        // Verify result
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Get the operation result. This is the serialized result stored in the DAR backend
    -        var operation = result.getOperation("create-custom-object");
    -        var operationResult = operation.getStepDetails().result();
    -
    -        // Assert that the stepDetails result uses snake_case (based on the custom serializer)
    -        assertTrue(operationResult.contains("user_id"), "Should contain snake_case 'user_id' key");
    -        assertTrue(operationResult.contains("full_name"), "Should contain snake_case 'full_name' key");
    -        assertTrue(operationResult.contains("user_age"), "Should contain snake_case 'user_age' key");
    -        assertTrue(operationResult.contains("email_address"), "Should contain snake_case 'email_address' key");
    -
    -        // Verify that we got the expected output
    -        var output = result.getResult(String.class);
    -        assertNotNull(output);
    -        assertEquals("Created custom object: user123, John Doe, 25, john.doe@example.com", output);
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomPollingExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomPollingExampleTest.java
    deleted file mode 100644
    index f271b2f58..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/CustomPollingExampleTest.java
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class CustomPollingExampleTest {
    -
    -    @Test
    -    void testCustomPollingExample() {
    -        var handler = new CustomPollingExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run: executes validate step, then pending at wait
    -        var input = new GreetingRequest("world");
    -        var output1 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -
    -        // Second run:
    -        runner.completeChainedInvoke("call-greeting", "\"hello\"");
    -        var output2 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output2.getStatus());
    -        assertEquals("helloworld", output2.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExampleTest.java
    deleted file mode 100644
    index 1c4521b22..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/ErrorHandlingExampleTest.java
    +++ /dev/null
    @@ -1,54 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ErrorHandlingExampleTest {
    -
    -    @Test
    -    void testErrorHandlingWithFallback() {
    -        var handler = new ErrorHandlingExample();
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertTrue(result.getResult(String.class).contains("fallback-result"));
    -    }
    -
    -    @Test
    -    void testPaymentStepCompletes() {
    -        var handler = new ErrorHandlingExample();
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        var result = runner.run("order-123");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        // Normal execution: payment step succeeds with "payment-order-123"
    -        assertTrue(result.getResult(String.class).contains("payment-order-123"));
    -    }
    -
    -    @Test
    -    void testPaymentStepInterruptedRecovery() {
    -        var handler = new ErrorHandlingExample();
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        // First run: both steps complete normally
    -        var result1 = runner.run("order-456");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -
    -        // Simulate interruption: reset payment step to STARTED state
    -        runner.resetCheckpointToStarted("charge-payment");
    -
    -        // Second run: StepInterruptedException is caught, recovery step executes
    -        var result2 = runner.run("order-456");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertTrue(result2.getResult(String.class).contains("verified-payment"));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExampleTest.java
    deleted file mode 100644
    index 4456fb9d5..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericInputOutputExampleTest.java
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class GenericInputOutputExampleTest {
    -
    -    private static final TypeToken<Map<String, Map<String, List<String>>>> resultType = new TypeToken<>() {};
    -    private static final TypeToken<Map<String, String>> inputType = new TypeToken<>() {};
    -
    -    @Test
    -    void testGenericTypesExample() {
    -        var handler = new GenericInputOutputExample();
    -        var runner = LocalDurableTestRunner.create(inputType, handler);
    -
    -        var input = new HashMap<>(Map.of("userId", "user123"));
    -        var result = runner.run(input);
    -
    -        assertNotNull(result);
    -        var output = result.getResult(resultType);
    -        assertNotNull(output);
    -
    -        // Verify categories nested map
    -        var categories = output.get("categories");
    -        assertNotNull(categories);
    -        assertEquals(3, categories.size());
    -        assertEquals(2, categories.get("electronics").size());
    -        assertTrue(categories.get("electronics").contains("laptop"));
    -        assertTrue(categories.get("electronics").contains("phone"));
    -        assertEquals(1, categories.get("books").size());
    -        assertTrue(categories.get("books").contains("fiction"));
    -    }
    -
    -    @Test
    -    void testOperationTracking() {
    -        var handler = new GenericInputOutputExample();
    -        var runner = LocalDurableTestRunner.create(inputType, handler);
    -
    -        var input = new HashMap<>(Map.of("userId", "user123"));
    -        var result = runner.run(input);
    -
    -        // Verify all operations were executed
    -        var fetchCategories = result.getOperation("fetch-categories");
    -        assertNotNull(fetchCategories);
    -        assertEquals("fetch-categories", fetchCategories.getName());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericTypesExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericTypesExampleTest.java
    deleted file mode 100644
    index 816549501..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/GenericTypesExampleTest.java
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class GenericTypesExampleTest {
    -
    -    @Test
    -    void testGenericTypesExample() {
    -        var handler = new GenericTypesExample();
    -        var runner = LocalDurableTestRunner.create(GenericTypesExample.Input.class, handler);
    -
    -        var input = new GenericTypesExample.Input("user123");
    -        var result = runner.run(input);
    -
    -        assertNotNull(result);
    -        GenericTypesExample.Output output = result.getResult(GenericTypesExample.Output.class);
    -        assertNotNull(output);
    -
    -        // Verify items list
    -        assertNotNull(output.items);
    -        assertEquals(4, output.items.size());
    -        assertTrue(output.items.contains("item1"));
    -        assertTrue(output.items.contains("item4"));
    -
    -        // Verify counts map
    -        assertNotNull(output.counts);
    -        assertEquals(3, output.counts.size());
    -        assertEquals(2, output.counts.get("electronics"));
    -        assertEquals(1, output.counts.get("books"));
    -        assertEquals(1, output.counts.get("clothing"));
    -
    -        // Verify categories nested map
    -        assertNotNull(output.categories);
    -        assertEquals(3, output.categories.size());
    -        assertEquals(2, output.categories.get("electronics").size());
    -        assertTrue(output.categories.get("electronics").contains("laptop"));
    -        assertTrue(output.categories.get("electronics").contains("phone"));
    -        assertEquals(1, output.categories.get("books").size());
    -        assertTrue(output.categories.get("books").contains("fiction"));
    -    }
    -
    -    @Test
    -    void testOperationTracking() {
    -        var handler = new GenericTypesExample();
    -        var runner = LocalDurableTestRunner.create(GenericTypesExample.Input.class, handler);
    -
    -        var input = new GenericTypesExample.Input("user456");
    -        var result = runner.run(input);
    -
    -        // Verify all operations were executed
    -        var fetchItems = result.getOperation("fetch-items");
    -        assertNotNull(fetchItems);
    -        assertEquals("fetch-items", fetchItems.getName());
    -
    -        var countByCategory = result.getOperation("count-by-category");
    -        assertNotNull(countByCategory);
    -        assertEquals("count-by-category", countByCategory.getName());
    -
    -        var fetchCategories = result.getOperation("fetch-categories");
    -        assertNotNull(fetchCategories);
    -        assertEquals("fetch-categories", fetchCategories.getName());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/general/LoggingExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/general/LoggingExampleTest.java
    deleted file mode 100644
    index e230364c8..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/general/LoggingExampleTest.java
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.general;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class LoggingExampleTest {
    -
    -    @Test
    -    void testLoggingExample() {
    -        var handler = new LoggingExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var result = runner.run(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO, ALICE!", result.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/invoke/InvokeExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/invoke/InvokeExampleTest.java
    deleted file mode 100644
    index 90738c51d..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/invoke/InvokeExampleTest.java
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.invoke;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class InvokeExampleTest {
    -
    -    @Test
    -    void testSimpleInvokeExample_completeSequentially() {
    -        var handler = new SimpleInvokeExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run
    -        var input = new GreetingRequest("world");
    -        var output1 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -
    -        // Second run
    -        runner.completeChainedInvoke("call-greeting1", "\"hello\"");
    -        var output2 = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, output2.getStatus());
    -
    -        // Third run
    -        runner.completeChainedInvoke("call-greeting2", "\"world\"");
    -        var output3 = runner.run(input);
    -        assertEquals(ExecutionStatus.SUCCEEDED, output3.getStatus());
    -        assertEquals("helloworld", output3.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testSimpleInvokeExample_completeConcurrently() {
    -        var handler = new SimpleInvokeExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run
    -        var input = new GreetingRequest("world");
    -        var output1 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -
    -        // Second run
    -        runner.completeChainedInvoke("call-greeting1", "\"hello\"");
    -        runner.completeChainedInvoke("call-greeting2", "\"world\"");
    -        var output2 = runner.run(input);
    -        assertEquals(ExecutionStatus.SUCCEEDED, output2.getStatus());
    -        assertEquals("helloworld", output2.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testSimpleInvokeExample_failFirst() {
    -        var handler = new SimpleInvokeExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run
    -        var input = new GreetingRequest("world");
    -        var output1 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -
    -        // Second run, fail the async invoke
    -        runner.failChainedInvoke("call-greeting1", ErrorObject.builder().build());
    -        var output2 = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, output2.getStatus());
    -
    -        // Third run
    -        runner.completeChainedInvoke("call-greeting2", "\"world\"");
    -        var output3 = runner.run(input);
    -        assertEquals(ExecutionStatus.FAILED, output3.getStatus());
    -    }
    -
    -    @Test
    -    void testSimpleInvokeExample_failSecond() {
    -        var handler = new SimpleInvokeExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run
    -        var input = new GreetingRequest("world");
    -        var output1 = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -
    -        // Second run, fail the async invoke
    -        runner.failChainedInvoke("call-greeting2", ErrorObject.builder().build());
    -        var output2 = runner.run(input);
    -        assertEquals(ExecutionStatus.FAILED, output2.getStatus());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/map/ComplexMapExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/map/ComplexMapExampleTest.java
    deleted file mode 100644
    index 05aa875db..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/map/ComplexMapExampleTest.java
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ComplexMapExampleTest {
    -
    -    @Test
    -    void testComplexMapExample() {
    -        var handler = new ComplexMapExample();
    -        var runner = LocalDurableTestRunner.create(Integer.class, handler);
    -
    -        var result = runner.runUntilComplete(50);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        var output = result.getResult(String.class);
    -
    -        // Part 1: all 3 orders processed with step + wait + step
    -        assertTrue(output.contains("done:validated:order-1"));
    -        assertTrue(output.contains("done:validated:order-2"));
    -        assertTrue(output.contains("done:validated:order-50"));
    -
    -        // Part 2: early termination after 2 healthy servers
    -        assertTrue(output.contains("reason=MIN_SUCCESSFUL_REACHED"));
    -        assertTrue(output.contains("healthy"));
    -    }
    -
    -    @Test
    -    void testReplay() {
    -        var handler = new ComplexMapExample();
    -        var runner = LocalDurableTestRunner.create(Integer.class, handler);
    -
    -        var result1 = runner.runUntilComplete(50);
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -
    -        // Replay β€” should use cached results.
    -        // Structural assertion because the first map has wait() inside branches with unlimited
    -        // concurrency, which can cause non-deterministic thread scheduling across invocations.
    -        var result2 = runner.runUntilComplete(50);
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        var output = result2.getResult(String.class);
    -        assertTrue(output.contains("done:validated:order-1"));
    -        assertTrue(output.contains("done:validated:order-2"));
    -        assertTrue(output.contains("done:validated:order-50"));
    -        assertTrue(output.contains("reason=MIN_SUCCESSFUL_REACHED"));
    -        assertTrue(output.contains("healthy"));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExampleTest.java
    deleted file mode 100644
    index 2de5c5c38..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExampleTest.java
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class DeserializationFailedMapExampleTest {
    -
    -    @Test
    -    void testDeserializationFailedExample() {
    -        var handler = new DeserializationFailedMapExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var result = runner.runUntilComplete(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(
    -                "Map iteration failed with error of type java.lang.RuntimeException. Message: Failure from Alice!",
    -                result.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/map/SimpleMapExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/map/SimpleMapExampleTest.java
    deleted file mode 100644
    index 58e53a46e..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/map/SimpleMapExampleTest.java
    +++ /dev/null
    @@ -1,49 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.map;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class SimpleMapExampleTest {
    -
    -    @Test
    -    void testSimpleMapExample() {
    -        var handler = new SimpleMapExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var result = runner.runUntilComplete(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Hello, Alice! | Hello, ALICE! | Hello, alice!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testWithDefaultName() {
    -        var handler = new SimpleMapExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var result = runner.runUntilComplete(new GreetingRequest());
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Hello, World! | Hello, WORLD! | Hello, world!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testReplay() {
    -        var handler = new SimpleMapExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest("Bob");
    -        var result1 = runner.runUntilComplete(input);
    -        assertEquals("Hello, Bob! | Hello, BOB! | Hello, bob!", result1.getResult(String.class));
    -
    -        // Replay β€” should use cached results
    -        var result2 = runner.runUntilComplete(input);
    -        assertEquals(result1.getResult(String.class), result2.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExampleTest.java
    deleted file mode 100644
    index 49393c58a..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExampleTest.java
    +++ /dev/null
    @@ -1,29 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class DeserializationFailedParallelExampleTest {
    -
    -    @Test
    -    void testDeserializationFailedParallelExample() {
    -        var handler = new DeserializationFailedParallelExample();
    -        var runner = LocalDurableTestRunner.create(DeserializationFailedParallelExample.Input.class, handler);
    -
    -        var input = new DeserializationFailedParallelExample.Input(List.of("apple", "banana", "cherry"));
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(String.class);
    -        assertEquals(
    -                "Parallel branch failed with error of type java.lang.RuntimeException. Message: Intentional failure for transform",
    -                output);
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelExampleTest.java
    deleted file mode 100644
    index 68bba0682..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelExampleTest.java
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ParallelExampleTest {
    -
    -    @Test
    -    void testParallelExampleRunsSuccessfully() {
    -        var handler = new ParallelExample();
    -        var runner = LocalDurableTestRunner.create(ParallelExample.Input.class, handler);
    -
    -        var input = new ParallelExample.Input(List.of("apple", "banana", "cherry"));
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelExample.Output.class);
    -        assertEquals(3, output.totalProcessed());
    -        assertTrue(output.results().contains("APPLE"));
    -        assertTrue(output.results().contains("BANANA"));
    -        assertTrue(output.results().contains("CHERRY"));
    -    }
    -
    -    @Test
    -    void testParallelExampleWithSingleItem() {
    -        var handler = new ParallelExample();
    -        var runner = LocalDurableTestRunner.create(ParallelExample.Input.class, handler);
    -
    -        var input = new ParallelExample.Input(List.of("hello"));
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelExample.Output.class);
    -        assertEquals(1, output.totalProcessed());
    -        assertEquals(List.of("HELLO"), output.results());
    -    }
    -
    -    @Test
    -    void testParallelExampleWithEmptyInput() {
    -        var handler = new ParallelExample();
    -        var runner = LocalDurableTestRunner.create(ParallelExample.Input.class, handler);
    -
    -        var input = new ParallelExample.Input(List.of());
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelExample.Output.class);
    -        assertEquals(0, output.totalProcessed());
    -        assertTrue(output.results().isEmpty());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExampleTest.java
    deleted file mode 100644
    index f1518e2ac..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExampleTest.java
    +++ /dev/null
    @@ -1,59 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ParallelFailureToleranceExampleTest {
    -
    -    @Test
    -    void succeedsWhenFailuresAreWithinTolerance() {
    -        var handler = new ParallelFailureToleranceExample();
    -        var runner = LocalDurableTestRunner.create(ParallelFailureToleranceExample.Input.class, handler);
    -
    -        // 2 good services, 1 bad β€” toleratedFailureCount=1 so the parallel op still succeeds
    -        var input = new ParallelFailureToleranceExample.Input(List.of("svc-a", "bad-svc-b", "svc-c"), 1, null);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelFailureToleranceExample.Output.class);
    -        assertEquals(2, output.succeeded());
    -        assertEquals(1, output.failed());
    -    }
    -
    -    @Test
    -    void succeedsWhenAllBranchesSucceed() {
    -        var handler = new ParallelFailureToleranceExample();
    -        var runner = LocalDurableTestRunner.create(ParallelFailureToleranceExample.Input.class, handler);
    -
    -        var input = new ParallelFailureToleranceExample.Input(List.of("svc-a", "svc-b", "svc-c"), 2, null);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelFailureToleranceExample.Output.class);
    -        assertEquals(3, output.succeeded());
    -    }
    -
    -    @Test
    -    void failsWhenFailuresExceedTolerance() {
    -        var handler = new ParallelFailureToleranceExample();
    -        var runner = LocalDurableTestRunner.create(ParallelFailureToleranceExample.Input.class, handler);
    -
    -        // 2 bad services, toleratedFailureCount=1 β€” second failure exceeds tolerance
    -        var input = new ParallelFailureToleranceExample.Input(List.of("svc-a", "bad-svc-b", "bad-svc-c"), 1, 2);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelFailureToleranceExample.Output.class);
    -        assertEquals(2, output.failed());
    -        assertEquals(1, output.succeeded());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExampleTest.java
    deleted file mode 100644
    index bb44dc6c8..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExampleTest.java
    +++ /dev/null
    @@ -1,34 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.parallel;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ParallelWithWaitExampleTest {
    -    @Test
    -    void completesAfterManuallyAdvancingWaits() {
    -        var handler = new ParallelWithWaitExample();
    -        var runner = LocalDurableTestRunner.create(ParallelWithWaitExample.Input.class, handler);
    -
    -        var input = new ParallelWithWaitExample.Input("user-456", "world");
    -
    -        // First run suspends on wait branches
    -        var first = runner.run(input);
    -        assertEquals(ExecutionStatus.PENDING, first.getStatus());
    -
    -        // Advance waits and re-run to completion
    -        runner.advanceTime();
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ParallelWithWaitExample.Output.class);
    -        assertEquals(List.of("email:world", "sms:world", "push:world"), output.deliveries());
    -        assertEquals(3, output.success());
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExampleTest.java
    deleted file mode 100644
    index 30ca2f0d1..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/step/DeserializationFailureExampleTest.java
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class DeserializationFailureExampleTest {
    -
    -    @Test
    -    void testDeserializationExample() {
    -        var handler = new DeserializationFailureExample();
    -
    -        // Create test runner from handler (automatically extracts config)
    -        var runner = LocalDurableTestRunner.create(String.class, handler);
    -
    -        // Run with input
    -        var result = runner.runUntilComplete("test-input");
    -
    -        // Verify result
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // assert StepFailedException is thrown when SerDes fails to deserialize the exception
    -        assertEquals(
    -                "StepFailedException:Step failed with error of type java.lang.RuntimeException. Message: this is a test",
    -                result.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExampleTest.java
    deleted file mode 100644
    index 287d5bd96..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExampleTest.java
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ManyAsyncStepsExampleTest {
    -
    -    @Test
    -    void testManyAsyncSteps() {
    -        var handler = new ManyAsyncStepsExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncStepsExample.Input.class, handler);
    -
    -        var input = new ManyAsyncStepsExample.Input(2, 500);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var output = result.getResult(ManyAsyncStepsExample.Output.class);
    -        assertNotNull(output);
    -
    -        // Sum of 0..499 * 2 = 499 * 500 / 2 * 2 = 249500
    -        assertEquals(
    -                249500, result.getResult(ManyAsyncStepsExample.Output.class).result());
    -    }
    -
    -    @Test
    -    void testManyAsyncStepsWithDefaultMultiplier() {
    -        var handler = new ManyAsyncStepsExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncStepsExample.Input.class, handler);
    -
    -        var input = new ManyAsyncStepsExample.Input(1, 500);
    -        var result = runner.runUntilComplete(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Sum of 0..499 = 499 * 500 / 2 = 124750
    -        assertEquals(
    -                124750, result.getResult(ManyAsyncStepsExample.Output.class).result());
    -    }
    -
    -    @Test
    -    void testOperationsAreTracked() {
    -        var handler = new ManyAsyncStepsExample();
    -        var runner = LocalDurableTestRunner.create(ManyAsyncStepsExample.Input.class, handler);
    -
    -        var result = runner.runUntilComplete(new ManyAsyncStepsExample.Input(1, 500));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // Verify some operations are tracked
    -        assertNotNull(result.getOperation("compute-0"));
    -        assertNotNull(result.getOperation("compute-499"));
    -        assertNotNull(result.getOperation("compute-250"));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/step/RetryExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/step/RetryExampleTest.java
    deleted file mode 100644
    index d40c191b7..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/step/RetryExampleTest.java
    +++ /dev/null
    @@ -1,67 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class RetryExampleTest {
    -
    -    @Test
    -    void testRetryExampleWithTimeBasedFailure() {
    -        var handler = new RetryExample();
    -
    -        // Test the retry example with time-based failure simulation
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        var result = runner.run("test-input");
    -
    -        // The test will likely result in PENDING due to the time-based failure
    -        // This demonstrates the retry mechanism in action
    -        System.out.println("Test result status: " + result.getStatus());
    -
    -        // In a real scenario with actual time delays, this would eventually succeed
    -        // The LocalDurableTestRunner simulates the retry behavior
    -        assertNotNull(result);
    -    }
    -
    -    @Test
    -    void testRetryExampleDemonstration() {
    -        // This test demonstrates the retry behavior without strict assertions
    -        // It's useful for observing the retry mechanism in action
    -        var handler = new RetryExample();
    -
    -        // Test the retry example with time-based failure simulation
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        var result = runner.run("demo-input");
    -
    -        System.out.println("Demo execution status: " + result.getStatus());
    -
    -        // This test always passes - it's just for demonstration
    -        assertNotNull(result);
    -        assertTrue(result.getStatus().toString().matches("PENDING|FAILED|SUCCEEDED"));
    -    }
    -
    -    @Test
    -    void testRetryExampleShowsRetryBehavior() {
    -        // Test that shows the different retry behaviors
    -        var handler = new RetryExample();
    -
    -        // Test the retry example with time-based failure simulation
    -        var runner = LocalDurableTestRunner.create(Object.class, handler);
    -
    -        var result = runner.run("retry-behavior-test");
    -
    -        System.out.println("Retry behavior test status: " + result.getStatus());
    -
    -        // The example demonstrates:
    -        // 1. No-retry step that fails immediately
    -        // 2. Retry step that uses default exponential backoff
    -        // 3. Time-based failure that would eventually succeed with retries
    -
    -        assertNotNull(result);
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/step/SimpleStepExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/step/SimpleStepExampleTest.java
    deleted file mode 100644
    index b5e2a1756..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/step/SimpleStepExampleTest.java
    +++ /dev/null
    @@ -1,77 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.step;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class SimpleStepExampleTest {
    -
    -    @Test
    -    void testSimpleStepExample() {
    -        // Create handler
    -        var handler = new SimpleStepExample();
    -
    -        // Create test runner
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // Run with input
    -        var input = new GreetingRequest("Alice");
    -        var result = runner.run(input);
    -
    -        // Verify result
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO, ALICE!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testWithLargePayload() {
    -        // Create handler
    -        var handler = new SimpleStepExample();
    -
    -        // Create test runner
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -        // 6MB large input
    -        var largeInput = "A".repeat(1024).repeat(1024).repeat(6);
    -
    -        // Run with input
    -        var input = new GreetingRequest(largeInput);
    -        var result = runner.run(input);
    -
    -        // Verify result
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO, " + largeInput + "!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testWithDefaultName() {
    -        var handler = new SimpleStepExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest();
    -        var result = runner.run(input);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO, WORLD!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testReplay() {
    -        var handler = new SimpleStepExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First execution
    -        var input = new GreetingRequest("Bob");
    -        var result1 = runner.run(input);
    -        assertEquals("HELLO, BOB!", result1.getResult(String.class));
    -
    -        // Second execution (replay) - should use cached results
    -        var result2 = runner.run(input);
    -        assertEquals("HELLO, BOB!", result2.getResult(String.class));
    -        assertEquals(result1.getResult(String.class), result2.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExampleTest.java
    deleted file mode 100644
    index 7a4aabaa8..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExampleTest.java
    +++ /dev/null
    @@ -1,29 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class ConcurrentWaitForConditionExampleTest {
    -
    -    @Test
    -    void testConcurrentWaitForConditionExample() {
    -        var handler = new ConcurrentWaitForConditionExample();
    -        var runner = LocalDurableTestRunner.create(ConcurrentWaitForConditionExample.Input.class, handler);
    -
    -        var result = runner.runUntilComplete(new ConcurrentWaitForConditionExample.Input(3, 100, 50));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        var allOperationsOutput = result.getResult(String.class);
    -        var operationResults = allOperationsOutput.split(" \\| ");
    -        assertEquals(100, operationResults.length);
    -        for (var operationResult : operationResults) {
    -            assertEquals("3", operationResult);
    -        }
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExampleTest.java
    deleted file mode 100644
    index 8d50f1e9d..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitAsyncExampleTest.java
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class WaitAsyncExampleTest {
    -
    -    @Test
    -    void testWaitAsyncExampleCompletesSuccessfully() {
    -        var handler = new WaitAsyncExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var result = runner.runUntilComplete(new GreetingRequest("Alice"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Processed: Alice", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testWaitAsyncExampleSuspendsOnFirstRun() {
    -        var handler = new WaitAsyncExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        // First run suspends because the wait hasn't elapsed yet
    -        var result = runner.run(new GreetingRequest("Bob"));
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Advance time so the wait completes, then re-run to finish
    -        runner.advanceTime();
    -
    -        var result2 = runner.runUntilComplete(new GreetingRequest("Bob"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("Processed: Bob", result2.getResult(String.class));
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitExampleTest.java
    deleted file mode 100644
    index 01edccdd2..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitExampleTest.java
    +++ /dev/null
    @@ -1,30 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.examples.types.GreetingRequest;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class WaitExampleTest {
    -
    -    @Test
    -    void testWaitExampleStartsAndWaits() {
    -        var handler = new WaitExample();
    -        var runner = LocalDurableTestRunner.create(GreetingRequest.class, handler);
    -
    -        var input = new GreetingRequest("Bob");
    -
    -        // First run - executes first step and hits first wait
    -        var result = runner.run(input);
    -
    -        // Should be PENDING because of wait operation
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Note: In real Lambda, the function would be re-invoked after the wait period
    -        // The LocalDurableTestRunner demonstrates the wait behavior but doesn't simulate time
    -    }
    -}
    diff --git a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExampleTest.java b/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExampleTest.java
    deleted file mode 100644
    index 121f1a1cd..000000000
    --- a/examples/src/test/java/software/amazon/lambda/durable/examples/wait/WaitForConditionExampleTest.java
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.examples.wait;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class WaitForConditionExampleTest {
    -
    -    @Test
    -    void testWaitForConditionExample() {
    -        var handler = new WaitForConditionExample();
    -        var runner = LocalDurableTestRunner.create(Integer.class, handler);
    -
    -        var result = runner.runUntilComplete(3);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(3, result.getResult(Integer.class));
    -    }
    -}
    diff --git a/examples/src/test/resources/log4j2-test.xml b/examples/src/test/resources/log4j2-test.xml
    deleted file mode 100644
    index 1cfb30a0d..000000000
    --- a/examples/src/test/resources/log4j2-test.xml
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Configuration status="WARN">
    -    <Appenders>
    -        <Console name="Console" target="SYSTEM_OUT">
    -            <JsonTemplateLayout eventTemplateUri="classpath:EcsLayout.json"/>
    -        </Console>
    -    </Appenders>
    -    
    -    <Loggers>
    -        <!-- SDK internal logs at DEBUG for testing -->
    -        <Logger name="software.amazon.lambda.durable" level="DEBUG"/>
    -        
    -        <!-- AWS SDK logs at WARN -->
    -        <Logger name="software.amazon.awssdk" level="WARN"/>
    -        
    -        <!-- Everything else at INFO -->
    -        <Root level="INFO">
    -            <AppenderRef ref="Console"/>
    -        </Root>
    -    </Loggers>
    -</Configuration>
    diff --git a/examples/template.yaml b/examples/template.yaml
    deleted file mode 100644
    index 36adfc5a5..000000000
    --- a/examples/template.yaml
    +++ /dev/null
    @@ -1,482 +0,0 @@
    -AWSTemplateFormatVersion: "2010-09-09"
    -Transform: AWS::Serverless-2016-10-31
    -Description: AWS Lambda Durable Execution SDK Examples
    -
    -Parameters:
    -  Architecture:
    -    Type: String
    -    Default: arm64
    -    Description: Lambda Function Architecture
    -    AllowedValues:
    -      - x86_64
    -      - arm64
    -  JavaVersion:
    -    Type: String
    -    Default: 'java17'
    -    Description: Java runtime version
    -
    -Globals:
    -  Function:
    -    Timeout: 900
    -    MemorySize: 512
    -    Architectures:
    -      - !Ref Architecture
    -    DurableConfig:
    -      ExecutionTimeout: 300
    -      RetentionPeriodInDays: 7
    -    Runtime: !Ref JavaVersion
    -
    -Resources:
    -  NoopExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - noop-example
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.NoopExample"
    -
    -  SimpleStepExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - simple-step-example
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.step.SimpleStepExample"
    -
    -  SimpleInvokeExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'simple-invoke-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -                - lambda:InvokeFunction
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-invoke-example-${JavaVersion}-runtime"
    -            - Effect: Allow
    -              Action:
    -                - lambda:InvokeFunction
    -              Resource: '*'
    -
    -  WaitExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'wait-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.WaitExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-example-${JavaVersion}-runtime"
    -
    -  RetryExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'retry-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.step.RetryExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-example-${JavaVersion}-runtime"
    -
    -  WaitAtLeastExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'wait-at-least-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.WaitAtLeastExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-example-${JavaVersion}-runtime"
    -
    -  WaitAtLeastInProcessExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'wait-at-least-in-process-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-at-least-in-process-example-${JavaVersion}-runtime"
    -
    -  RetryInProcessExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'retry-in-process-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.step.RetryInProcessExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:retry-in-process-example-${JavaVersion}-runtime"
    -
    -  GenericTypesExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'generic-types-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.GenericTypesExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-types-example-${JavaVersion}-runtime"
    -
    -  GenericInputOutputExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'generic-input-output-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.GenericInputOutputExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:generic-input-output-example-${JavaVersion}-runtime"
    -
    -  CustomConfigExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'custom-config-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.CustomConfigExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:custom-config-example-${JavaVersion}-runtime"
    -
    -  LoggingExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'logging-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.LoggingExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:logging-example-${JavaVersion}-runtime"
    -
    -  ErrorHandlingExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'error-handling-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.general.ErrorHandlingExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:error-handling-example-${JavaVersion}-runtime"
    -
    -  CallbackExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'callback-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.callback.CallbackExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:callback-example-${JavaVersion}-runtime"
    -
    -  ManyAsyncStepsExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'many-async-steps-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-steps-example-${JavaVersion}-runtime"
    -
    -  ChildContextExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'child-context-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.child.ChildContextExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:child-context-example-${JavaVersion}-runtime"
    -
    -  WaitAsyncExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'wait-async-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.WaitAsyncExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-async-example-${JavaVersion}-runtime"
    -
    -  ManyAsyncChildContextExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'many-async-child-context-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:many-async-child-context-example-${JavaVersion}-runtime"
    -
    -  SimpleMapExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'simple-map-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.map.SimpleMapExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:simple-map-example-${JavaVersion}-runtime"
    -
    -  ComplexMapExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'complex-map-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.map.ComplexMapExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:complex-map-example-${JavaVersion}-runtime"
    -
    -  WaitForConditionExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'wait-for-condition-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.WaitForConditionExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:wait-for-condition-example-${JavaVersion}-runtime"
    -
    -  ConcurrentWaitForConditionExampleFunction:
    -    Type: AWS::Serverless::Function
    -    Properties:
    -      FunctionName: !Join
    -        - '-'
    -        - - 'concurrent-wait-for-condition-example'
    -          - !Ref JavaVersion
    -          - runtime
    -      Handler: "software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample"
    -      Policies:
    -        - Statement:
    -            - Effect: Allow
    -              Action:
    -                - lambda:CheckpointDurableExecutions
    -                - lambda:GetDurableExecutionState
    -              Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:concurrent-wait-for-condition-example-${JavaVersion}-runtime"
    -
    -Outputs:
    -  NoopExampleFunction:
    -    Description: Noop Example Function ARN
    -    Value: !GetAtt NoopExampleFunction.Arn
    -
    -  SimpleStepExampleFunction:
    -    Description: Simple Step Example Function ARN
    -    Value: !GetAtt SimpleStepExampleFunction.Arn
    -
    -  SimpleInvokeExampleFunction:
    -    Description: Simple Invoke Example Function ARN
    -    Value: !GetAtt SimpleInvokeExampleFunction.Arn
    -
    -  WaitExampleFunction:
    -    Description: Wait Example Function ARN
    -    Value: !GetAtt WaitExampleFunction.Arn
    -
    -  RetryExampleFunction:
    -    Description: Retry Example Function ARN
    -    Value: !GetAtt RetryExampleFunction.Arn
    -
    -  WaitAtLeastExampleFunction:
    -    Description: Wait At Least Example Function ARN
    -    Value: !GetAtt WaitAtLeastExampleFunction.Arn
    -
    -  WaitAtLeastInProcessExampleFunction:
    -    Description: Wait At Least In Process Example Function ARN
    -    Value: !GetAtt WaitAtLeastInProcessExampleFunction.Arn
    -
    -  RetryInProcessExampleFunction:
    -    Description: Retry In Process Example Function ARN
    -    Value: !GetAtt RetryInProcessExampleFunction.Arn
    -
    -  GenericTypesExampleFunction:
    -    Description: Generic Types Example Function ARN
    -    Value: !GetAtt GenericTypesExampleFunction.Arn
    -
    -  GenericInputOutputExampleFunction:
    -    Description: Generic Input Output Example Function ARN
    -    Value: !GetAtt GenericInputOutputExampleFunction.Arn
    -
    -  CustomConfigExampleFunction:
    -    Description: Custom Config Example Function ARN
    -    Value: !GetAtt CustomConfigExampleFunction.Arn
    -
    -  LoggingExampleFunction:
    -    Description: Logging Example Function ARN
    -    Value: !GetAtt LoggingExampleFunction.Arn
    -
    -  ErrorHandlingExampleFunction:
    -    Description: Error Handling Example Function ARN
    -    Value: !GetAtt ErrorHandlingExampleFunction.Arn
    -
    -  CallbackExampleFunction:
    -    Description: Callback Example Function ARN
    -    Value: !GetAtt CallbackExampleFunction.Arn
    -
    -  ManyAsyncStepsExampleFunction:
    -    Description: Many Async Steps Example Function ARN
    -    Value: !GetAtt ManyAsyncStepsExampleFunction.Arn
    -
    -  ChildContextExampleFunction:
    -    Description: Child Context Example Function ARN
    -    Value: !GetAtt ChildContextExampleFunction.Arn
    -
    -  WaitAsyncExampleFunction:
    -    Description: Wait Async Example Function ARN
    -    Value: !GetAtt WaitAsyncExampleFunction.Arn
    -
    -  ManyAsyncChildContextExampleFunction:
    -    Description: Many Async Child Context Example Function ARN
    -    Value: !GetAtt ManyAsyncChildContextExampleFunction.Arn
    -
    -  SimpleMapExampleFunction:
    -    Description: Simple Map Example Function ARN
    -    Value: !GetAtt SimpleMapExampleFunction.Arn
    -
    -  ComplexMapExampleFunction:
    -    Description: Complex Map Example Function ARN
    -    Value: !GetAtt ComplexMapExampleFunction.Arn
    -
    -  WaitForConditionExampleFunction:
    -    Description: Wait For Condition Example Function ARN
    -    Value: !GetAtt WaitForConditionExampleFunction.Arn
    -
    -  ConcurrentWaitForConditionExampleFunction:
    -    Description: Concurrent Wait For Condition Example Function ARN
    -    Value: !GetAtt ConcurrentWaitForConditionExampleFunction.Arn
    diff --git a/javadoc/allclasses-index.html b/javadoc/allclasses-index.html
    new file mode 100644
    index 000000000..dde7dce1f
    --- /dev/null
    +++ b/javadoc/allclasses-index.html
    @@ -0,0 +1,690 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>All Classes and Interfaces (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="class index">
    +<meta name="generator" content="javadoc/AllClassesIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="all-classes-index-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#all-classes">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
    +</div>
    +<div id="all-classes-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab1" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab1', 2)" class="table-tab">Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab3" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab3', 2)" class="table-tab">Enum Classes</button><button id="all-classes-table-tab4" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab4', 2)" class="table-tab">Record Classes</button><button id="all-classes-table-tab5" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab5', 2)" class="table-tab">Exceptions</button></div>
    +<div id="all-classes-table.tabpanel" role="tabpanel" aria-labelledby="all-classes-table-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a>&lt;<a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Batches API requests to optimize throughput by grouping individual calls into batch operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Input for the approval workflow.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Handle for an asynchronously executing durable function.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for <a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating callback operations for external system integration.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a callback times out.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating child context workflows with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Test runner for durable Lambda functions deployed to AWS.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;<a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A <a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that is already completed with a value.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Controls when a concurrent operation (map or parallel) completes.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating concurrent waitForCondition operations using map.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating custom configuration with both custom HTTP client and custom SerDes.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Custom data class with camelCase field names to demonstrate snake_case serialization.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating custom polling strategy configuration.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;<a href="software/amazon/lambda/durable/DurableCallbackFuture.html" title="type parameter in DurableCallbackFuture">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for DurableConfig.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>,<wbr><a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Base exception for all durable execution errors.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Input payload received by the Lambda handler from the Durable Functions backend.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/execution/DurableExecutor.html" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Orchestrates the lifecycle of a durable execution.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="software/amazon/lambda/durable/DurableFuture.html" title="type parameter in DurableFuture">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="software/amazon/lambda/durable/DurableHandler.html" title="type parameter in DurableHandler">I</a>,<wbr><a href="software/amazon/lambda/durable/DurableHandler.html" title="type parameter in DurableHandler">O</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Serializer/Deserializer for Durable Execution Input and Output objects.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    + replay.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating error handling patterns with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to demonstrate that original exception types are preserved across checkpoints.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Utility class for handling exceptions</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Central manager for durable execution coordination.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Terminal status of a durable execution.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating a durable Lambda function that uses generic types in input and output.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating TypeToken support for complex generic types.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Processes execution history events from the GetDurableExecutionHistory API into <a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a> objects.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">An illegal operation is detected.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>,<wbr><a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Jackson-based implementation of <a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde"><code>SerDes</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Jitter strategy for retry delays to prevent thundering herd problems.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Default implementation of <a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> backed by the AWS Lambda SDK client.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">In-memory test runner for durable Lambda functions.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">In-memory implementation of <a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> for local testing.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating DurableLogger usage for structured logging with execution context.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Performance test example demonstrating concurrent async child contexts.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Performance test example demonstrating concurrent async steps.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="software/amazon/lambda/durable/operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="software/amazon/lambda/durable/model/MapResult.html" title="type parameter in MapResult">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Error details for a failed map item.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Represents the outcome of a single item in a map operation.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Status of an individual map item.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when non-deterministic code is detected during replay.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/general/NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Simple example demonstrating a durable function doesn't have any durable operation</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Generates operation IDs for the durable operations.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">The operation status and result/error from Step, Context, Callback and ChainedInvoke operations</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating parallel execution with failure tolerance.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Summary result of a parallel operation.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating parallel branches where some branches include wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Utility class for validating input parameters in the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Factory class for creating common polling strategies.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Preset polling strategies for common use cases.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Represents a decision about whether to retry a failed operation and how long to wait.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/step/RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Simple example demonstrating retry strategies with a flaky API.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating in-process retry behavior with concurrent operations.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Factory class for creating common retry strategies.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Preset retry strategies for common use cases.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Functional interface for determining retry behavior when operations fail.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when serialization or deserialization fails.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Simple example demonstrating basic invoke execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Simple example demonstrating basic step execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Base exception for step operation failures.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/StepFailedException.html" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Delivery semantics for step operations.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown to suspend execution during wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Wrapper for AWS SDK Operation providing convenient access methods.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="software/amazon/lambda/durable/testing/TestResult.html" title="type parameter in TestResult">O</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Holds the current thread's execution context.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="software/amazon/lambda/durable/TypeToken.html" title="type parameter in TypeToken">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating non-blocking wait with waitAsync().</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating step execution with wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Builder for <a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Example demonstrating the waitForCondition operation.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="type parameter in WaitForConditionWaitStrategy">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Factory class for creating common <a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> implementations.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Preset wait strategies for common use cases.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/allpackages-index.html b/javadoc/allpackages-index.html
    new file mode 100644
    index 000000000..51dfd54c5
    --- /dev/null
    +++ b/javadoc/allpackages-index.html
    @@ -0,0 +1,116 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>All Packages (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="package index">
    +<meta name="generator" content="javadoc/AllPackagesIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="all-packages-index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#all-packages">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
    +</div>
    +<div class="caption"><span>Package Summary</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/client/package-summary.html">software.amazon.lambda.durable.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/examples/types/package-summary.html">software.amazon.lambda.durable.examples.types</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/logging/package-summary.html">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="software/amazon/lambda/durable/testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html
    new file mode 100644
    index 000000000..ea06de97d
    --- /dev/null
    +++ b/javadoc/constant-values.html
    @@ -0,0 +1,85 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Constant Field Values (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="summary of constants">
    +<meta name="generator" content="javadoc/ConstantsSummaryWriterImpl">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="constants-summary-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#constant-values">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
    +<section class="packages">
    +<h2 title="Contents">Contents</h2>
    +<ul>
    +<li><a href="#software.amazon">software.amazon.*</a></li>
    +</ul>
    +</section>
    +</div>
    +<section class="constants-summary" id="software.amazon.lambda.durable.util">
    +<h2 title="software.amazon">software.amazon.*</h2>
    +<ul class="block-list">
    +<li>
    +<div class="caption"><span>software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="software.amazon.lambda.durable.util.ParameterValidator.MAX_OPERATION_NAME_LENGTH">public&nbsp;static&nbsp;final&nbsp;int</code></div>
    +<div class="col-second even-row-color"><code><a href="software/amazon/lambda/durable/util/ParameterValidator.html#MAX_OPERATION_NAME_LENGTH">MAX_OPERATION_NAME_LENGTH</a></code></div>
    +<div class="col-last even-row-color"><code>256</code></div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html
    new file mode 100644
    index 000000000..0c582011e
    --- /dev/null
    +++ b/javadoc/deprecated-list.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Deprecated List (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="deprecated elements">
    +<meta name="generator" content="javadoc/DeprecatedListWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="deprecated-list-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Deprecated</li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#deprecated">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Deprecated API" class="title">Deprecated API</h1>
    +<h2 title="Contents">Contents</h2>
    +<ul>
    +<li><a href="#method">Methods</a></li>
    +</ul>
    +</div>
    +<ul class="block-list">
    +<li>
    +<div id="method">
    +<div class="caption"><span>Deprecated Methods</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-summary-item-name even-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier)">software.amazon.lambda.durable.DurableContext.step<wbr>(String, Class&lt;T&gt;, Supplier&lt;T&gt;)</a></div>
    +<div class="col-last even-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name odd-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">software.amazon.lambda.durable.DurableContext.step<wbr>(String, Class&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a></div>
    +<div class="col-last odd-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name even-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">software.amazon.lambda.durable.DurableContext.step<wbr>(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;)</a></div>
    +<div class="col-last even-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name odd-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">software.amazon.lambda.durable.DurableContext.step<wbr>(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a></div>
    +<div class="col-last odd-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name even-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)">software.amazon.lambda.durable.DurableContext.stepAsync<wbr>(String, Class&lt;T&gt;, Supplier&lt;T&gt;)</a></div>
    +<div class="col-last even-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name odd-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">software.amazon.lambda.durable.DurableContext.stepAsync<wbr>(String, Class&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a></div>
    +<div class="col-last odd-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name even-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">software.amazon.lambda.durable.DurableContext.stepAsync<wbr>(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;)</a></div>
    +<div class="col-last even-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +<div class="col-summary-item-name odd-row-color"><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">software.amazon.lambda.durable.DurableContext.stepAsync<wbr>(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a></div>
    +<div class="col-last odd-row-color">
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/element-list b/javadoc/element-list
    new file mode 100644
    index 000000000..4806527e8
    --- /dev/null
    +++ b/javadoc/element-list
    @@ -0,0 +1,24 @@
    +software.amazon.lambda.durable
    +software.amazon.lambda.durable.client
    +software.amazon.lambda.durable.config
    +software.amazon.lambda.durable.context
    +software.amazon.lambda.durable.examples.callback
    +software.amazon.lambda.durable.examples.child
    +software.amazon.lambda.durable.examples.general
    +software.amazon.lambda.durable.examples.invoke
    +software.amazon.lambda.durable.examples.map
    +software.amazon.lambda.durable.examples.parallel
    +software.amazon.lambda.durable.examples.step
    +software.amazon.lambda.durable.examples.types
    +software.amazon.lambda.durable.examples.wait
    +software.amazon.lambda.durable.exception
    +software.amazon.lambda.durable.execution
    +software.amazon.lambda.durable.logging
    +software.amazon.lambda.durable.model
    +software.amazon.lambda.durable.operation
    +software.amazon.lambda.durable.retry
    +software.amazon.lambda.durable.serde
    +software.amazon.lambda.durable.testing
    +software.amazon.lambda.durable.testing.cloud
    +software.amazon.lambda.durable.testing.local
    +software.amazon.lambda.durable.util
    diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html
    new file mode 100644
    index 000000000..933169051
    --- /dev/null
    +++ b/javadoc/help-doc.html
    @@ -0,0 +1,202 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>API Help (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="help">
    +<meta name="generator" content="javadoc/HelpWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="help-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li class="nav-bar-cell1-rev">Help</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Help:&nbsp;</li>
    +<li><a href="#help-navigation">Navigation</a>&nbsp;|&nbsp;</li>
    +<li><a href="#help-pages">Pages</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<h1 class="title">JavaDoc Help</h1>
    +<ul class="help-toc">
    +<li><a href="#help-navigation">Navigation</a>: 
    +<ul class="help-subtoc">
    +<li><a href="#help-search">Search</a></li>
    +</ul>
    +</li>
    +<li><a href="#help-pages">Kinds of Pages</a>: 
    +<ul class="help-subtoc">
    +<li><a href="#overview">Overview</a></li>
    +<li><a href="#package">Package</a></li>
    +<li><a href="#class">Class or Interface</a></li>
    +<li><a href="#doc-file">Other Files</a></li>
    +<li><a href="#use">Use</a></li>
    +<li><a href="#tree">Tree (Class Hierarchy)</a></li>
    +<li><a href="#deprecated">Deprecated API</a></li>
    +<li><a href="#constant-values">Constant Field Values</a></li>
    +<li><a href="#serialized-form">Serialized Form</a></li>
    +<li><a href="#all-packages">All Packages</a></li>
    +<li><a href="#all-classes">All Classes and Interfaces</a></li>
    +<li><a href="#index">Index</a></li>
    +</ul>
    +</li>
    +</ul>
    +<hr>
    +<div class="sub-title">
    +<h2 id="help-navigation">Navigation</h2>
    +Starting from the <a href="index.html">Overview</a> page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The <a href="index-all.html">Index</a> and Search box allow you to navigate to specific declarations and summary pages, including: <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>
    +<section class="help-section" id="help-search">
    +<h3>Search</h3>
    +<p>You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example:</p>
    +<ul class="help-section-list">
    +<li><code>j.l.obj</code> will match "java.lang.Object"</li>
    +<li><code>InpStr</code> will match "java.io.InputStream"</li>
    +<li><code>HM.cK</code> will match "java.util.HashMap.containsKey(Object)"</li>
    +</ul>
    +<p>Refer to the <a href="https://docs.oracle.com/en/java/javase/17/docs/specs/javadoc/javadoc-search-spec.html">Javadoc Search Specification</a> for a full description of search features.</p>
    +</section>
    +</div>
    +<hr>
    +<div class="sub-title">
    +<h2 id="help-pages">Kinds of Pages</h2>
    +The following sections describe the different kinds of pages in this collection.
    +<section class="help-section" id="overview">
    +<h3>Overview</h3>
    +<p>The <a href="index.html">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>
    +</section>
    +<section class="help-section" id="package">
    +<h3>Package</h3>
    +<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:</p>
    +<ul class="help-section-list">
    +<li>Interfaces</li>
    +<li>Classes</li>
    +<li>Enum Classes</li>
    +<li>Exceptions</li>
    +<li>Errors</li>
    +<li>Annotation Interfaces</li>
    +</ul>
    +</section>
    +<section class="help-section" id="class">
    +<h3>Class or Interface</h3>
    +<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.</p>
    +<ul class="help-section-list">
    +<li>Class Inheritance Diagram</li>
    +<li>Direct Subclasses</li>
    +<li>All Known Subinterfaces</li>
    +<li>All Known Implementing Classes</li>
    +<li>Class or Interface Declaration</li>
    +<li>Class or Interface Description</li>
    +</ul>
    +<br>
    +<ul class="help-section-list">
    +<li>Nested Class Summary</li>
    +<li>Enum Constant Summary</li>
    +<li>Field Summary</li>
    +<li>Property Summary</li>
    +<li>Constructor Summary</li>
    +<li>Method Summary</li>
    +<li>Required Element Summary</li>
    +<li>Optional Element Summary</li>
    +</ul>
    +<br>
    +<ul class="help-section-list">
    +<li>Enum Constant Details</li>
    +<li>Field Details</li>
    +<li>Property Details</li>
    +<li>Constructor Details</li>
    +<li>Method Details</li>
    +<li>Element Details</li>
    +</ul>
    +<p><span class="help-note">Note:</span> Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.</p>
    +<p>The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
    +</section>
    +<section class="help-section" id="doc-file">
    +<h3>Other Files</h3>
    +<p>Packages and modules may contain pages with additional information related to the declarations nearby.</p>
    +</section>
    +<section class="help-section" id="use">
    +<h3>Use</h3>
    +<p>Each documented package, class and interface has its own Use page.  This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A.  You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.</p>
    +</section>
    +<section class="help-section" id="tree">
    +<h3>Tree (Class Hierarchy)</h3>
    +<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
    +<ul class="help-section-list">
    +<li>When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.</li>
    +<li>When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.</li>
    +</ul>
    +</section>
    +<section class="help-section" id="deprecated">
    +<h3>Deprecated API</h3>
    +<p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to shortcomings, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>
    +</section>
    +<section class="help-section" id="constant-values">
    +<h3>Constant Field Values</h3>
    +<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
    +</section>
    +<section class="help-section" id="serialized-form">
    +<h3>Serialized Form</h3>
    +<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.</p>
    +</section>
    +<section class="help-section" id="all-packages">
    +<h3>All Packages</h3>
    +<p>The <a href="allpackages-index.html">All Packages</a> page contains an alphabetic index of all packages contained in the documentation.</p>
    +</section>
    +<section class="help-section" id="all-classes">
    +<h3>All Classes and Interfaces</h3>
    +<p>The <a href="allclasses-index.html">All Classes and Interfaces</a> page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.</p>
    +</section>
    +<section class="help-section" id="index">
    +<h3>Index</h3>
    +<p>The <a href="index-all.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>.</p>
    +</section>
    +</div>
    +<hr>
    +<span class="help-footnote">This help file applies to API documentation generated by the standard doclet.</span></main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/index-all.html b/javadoc/index-all.html
    new file mode 100644
    index 000000000..8a7bcfcda
    --- /dev/null
    +++ b/javadoc/index-all.html
    @@ -0,0 +1,3698 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Index (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="index">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:A">A</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#advanceTime()" class="member-name-link">advanceTime()</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Advance all operations (simulates time passing for retries/waits).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#advanceTime()" class="member-name-link">advanceTime()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Advances all pending operations, simulating time passing for retries and waits.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#ALL_COMPLETED" class="member-name-link">ALL_COMPLETED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#allCompleted()" class="member-name-link">allCompleted()</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">All items run regardless of failures.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableFuture.html#allOf(java.util.List)" class="member-name-link">allOf(List&lt;DurableFuture&lt;T&gt;&gt;)</a> - Static method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></dt>
    +<dd>
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableFuture.html#allOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">allOf(DurableFuture&lt;T&gt;...)</a> - Static method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></dt>
    +<dd>
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#allSucceeded()" class="member-name-link">allSucceeded()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns true if all items succeeded (no failures or not-started items).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#allSuccessful()" class="member-name-link">allSuccessful()</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">All items must succeed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#amount()" class="member-name-link">amount()</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>amount</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableFuture.html#anyOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">anyOf(DurableFuture&lt;?&gt;...)</a> - Static method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></dt>
    +<dd>
    +<div class="block">Waits for any of the provided futures to complete and returns its result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a>&lt;<a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Batches API requests to optimize throughput by grouping individual calls into batch operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html#%3Cinit%3E(int,int,java.util.function.Function,java.util.function.Consumer)" class="member-name-link">ApiRequestDelayedBatcher(int, int, Function&lt;T, Integer&gt;, Consumer&lt;List&lt;T&gt;&gt;)</a> - Constructor for class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a></dt>
    +<dd>
    +<div class="block">Creates a new ApiRequestDelayedBatcher with the specified configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#apply(double)" class="member-name-link">apply(double)</a> - Method in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">Applies jitter to the given base delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.MapFunction.html#apply(I,int,software.amazon.lambda.durable.DurableContext)" class="member-name-link">apply(I, int, DurableContext)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a></dt>
    +<dd>
    +<div class="block">Applies this function to the given item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a> - Record Class in <a href="software/amazon/lambda/durable/examples/types/package-summary.html">software.amazon.lambda.durable.examples.types</a></dt>
    +<dd>
    +<div class="block">Input for the approval workflow.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#%3Cinit%3E(java.lang.String,double)" class="member-name-link">ApprovalRequest(String, double)</a> - Constructor for record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#%3Cinit%3E(java.lang.String,double,java.lang.Integer)" class="member-name-link">ApprovalRequest(String, double, Integer)</a> - Constructor for record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>ApprovalRequest</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></dt>
    +<dd>
    +<div class="block">Handle for an asynchronously executing durable function.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#%3Cinit%3E(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)" class="member-name-link">AsyncExecution(String, LambdaClient, TypeToken&lt;O&gt;, SerDes, Duration, Duration)</a> - Constructor for class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.html#at(java.time.Instant)" class="member-name-link">at(Instant)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></dt>
    +<dd>
    +<div class="block">Creates a polling strategy that polls at a specific instant in time.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepSemantics.html#AT_LEAST_ONCE_PER_RETRY" class="member-name-link">AT_LEAST_ONCE_PER_RETRY</a> - Enum constant in enum class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></dt>
    +<dd>
    +<div class="block">At-least-once delivery (default).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepSemantics.html#AT_MOST_ONCE_PER_RETRY" class="member-name-link">AT_MOST_ONCE_PER_RETRY</a> - Enum constant in enum class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></dt>
    +<dd>
    +<div class="block">At-most-once delivery per retry attempt.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a> - Class in <a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></dt>
    +<dd>
    +<div class="block">Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html#%3Cinit%3E()" class="member-name-link">AwsSdkV2Module()</a> - Constructor for class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:B">B</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable.context">BaseContext</a> - Interface in <a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> - Class in <a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">BaseContextImpl(ExecutionManager, DurableConfig, Context, String, String, ThreadType)</a> - Constructor for class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Creates a new BaseContext instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a> - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">BaseDurableOperation(OperationIdentifier, DurableContextImpl, BaseDurableOperation)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Constructs a new durable operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">branch(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></dt>
    +<dd>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;, ParallelBranchConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></dt>
    +<dd>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">branch(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></dt>
    +<dd>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;, ParallelBranchConfig)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;, ParallelBranchConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></dt>
    +<dd>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the <a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a> instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the InvokeConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the ParallelBranchConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the ParallelConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the RunInChildContextConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the StepConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the WaitForCallbackConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#build()" class="member-name-link">build()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Builds the DurableConfig instance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder with default values.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for ParallelBranchConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for ParallelConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for RunInChildContextConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for StepConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for <code>WaitForConditionConfig</code>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#builder()" class="member-name-link">builder()</a> - Static method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder for DurableConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html#%3Cinit%3E()" class="member-name-link">Builder()</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#%3Cinit%3E()" class="member-name-link">Builder()</a> - Constructor for class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html#%3Cinit%3E(java.time.Duration,java.time.Duration,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder(Duration, Duration, SerDes)</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder(RetryStrategy, StepSemantics, SerDes)</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder(SerDes)</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder(SerDes)</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#buildErrorObject(java.lang.Throwable,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">buildErrorObject(Throwable, SerDes)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>
    +<div class="block">build an ErrorObject from a Throwable</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:C">C</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html#callbackConfig()" class="member-name-link">callbackConfig()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></dt>
    +<dd>
    +<div class="block">Returns the callback configuration for the composite operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html#callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">callbackConfig(CallbackConfig)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the callback configuration for the composite operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration for callback operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for <a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a> - Class in <a href="software/amazon/lambda/durable/examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></dt>
    +<dd>
    +<div class="block">Example demonstrating callback operations for external system integration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html#%3Cinit%3E()" class="member-name-link">CallbackExample()</a> - Constructor for class software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String)" class="member-name-link">CallbackException(Operation, String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String,java.lang.Throwable)" class="member-name-link">CallbackException(Operation, String, Throwable)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">CallbackFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableCallbackFuture.html#callbackId()" class="member-name-link">callbackId()</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a></dt>
    +<dd>
    +<div class="block">Returns the unique identifier for this callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html#callbackId()" class="member-name-link">callbackId()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation(OperationIdentifier, TypeToken&lt;T&gt;, CallbackConfig, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.exception.StepException)" class="member-name-link">CallbackSubmitterException(Operation, StepException)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a callback times out.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">CallbackTimeoutException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html#categories" class="member-name-link">categories</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/client/DurableExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint(String, String, List&lt;OperationUpdate&gt;)</a> - Method in interface software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></dt>
    +<dd>
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint(String, String, List&lt;OperationUpdate&gt;)</a> - Method in class software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint(String, String, List&lt;OperationUpdate&gt;)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#checkpointToken()" class="member-name-link">checkpointToken()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionInput.html#param-checkpointToken"><code>checkpointToken</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a> - Class in <a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></dt>
    +<dd>
    +<div class="block">Example demonstrating child context workflows with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html#%3Cinit%3E()" class="member-name-link">ChildContextExample()</a> - Constructor for class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">ChildContextFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation(OperationIdentifier, Function&lt;DurableContext, T&gt;, TypeToken&lt;T&gt;, RunInChildContextConfig, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation(OperationIdentifier, Function&lt;DurableContext, T&gt;, TypeToken&lt;T&gt;, RunInChildContextConfig, DurableContextImpl, ConcurrencyOperation&lt;?&gt;)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#close()" class="member-name-link">close()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Closes this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#close()" class="member-name-link">close()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>
    +<div class="block">Clears the logger's thread properties.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/StepContextImpl.html#close()" class="member-name-link">close()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></dt>
    +<dd>
    +<div class="block">Closes the logger for this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#close()" class="member-name-link">close()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Shutdown the checkpoint batcher.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#close()" class="member-name-link">close()</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>
    +<div class="block">Clears all MDC entries.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#close()" class="member-name-link">close()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>
    +<div class="block">Calls <a href="software/amazon/lambda/durable/operation/ParallelOperation.html#get()"><code>ParallelOperation.get()</code></a> if not already called.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html#close()" class="member-name-link">close()</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></dt>
    +<dd>
    +<div class="block">Calls <a href="software/amazon/lambda/durable/DurableFuture.html#get()"><code>DurableFuture.get()</code></a> if not already called.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></dt>
    +<dd>
    +<div class="block">Test runner for durable Lambda functions deployed to AWS.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#completeCallback(java.lang.String,java.lang.String)" class="member-name-link">completeCallback(String, String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">calls sendDurableExecutionCallbackSuccess with the given callbackId and result</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#completeCallback(java.lang.String,java.lang.String)" class="member-name-link">completeCallback(String, String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Complete a callback with success result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#completeCallback(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeCallback(String, OperationResult)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Simulate external system completing callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#completeChainedInvoke(java.lang.String,java.lang.String)" class="member-name-link">completeChainedInvoke(String, String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Completes a chained invoke operation with a successful result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#completeChainedInvoke(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeChainedInvoke(String, OperationResult)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Completes a chained invoke operation with the given result, simulating a child Lambda response.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;<a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a></dt>
    +<dd>
    +<div class="block">A <a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that is already completed with a value.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html#%3Cinit%3E(T)" class="member-name-link">CompletedDurableFuture(T)</a> - Constructor for class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html#completionConfig()" class="member-name-link">completionConfig()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.html#completionConfig()" class="member-name-link">completionConfig()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig(CompletionConfig)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the completion criteria for the map operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig(CompletionConfig)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CompletionConfig</a> - Record Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Controls when a concurrent operation (map or parallel) completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Double)" class="member-name-link">CompletionConfig(Integer, Integer, Double)</a> - Constructor for record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>CompletionConfig</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#completionFuture" class="member-name-link">completionFuture</a> - Variable in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#completionReason()" class="member-name-link">completionReason()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.html#param-completionReason"><code>completionReason</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#completionStatus()" class="member-name-link">completionStatus()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>completionStatus</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a> - Class in <a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></dt>
    +<dd>
    +<div class="block">Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html#%3Cinit%3E()" class="member-name-link">ComplexMapExample()</a> - Constructor for class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategy.html#computeDelay(int)" class="member-name-link">computeDelay(int)</a> - Method in interface software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></dt>
    +<dd>
    +<div class="block">Computes the delay before the next polling attempt.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a> - Enum Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation(OperationIdentifier, TypeToken&lt;T&gt;, SerDes, DurableContextImpl, int, Integer, Integer)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating concurrent waitForCondition operations using map.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html#%3Cinit%3E()" class="member-name-link">ConcurrentWaitForConditionExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html#CONTEXT" class="member-name-link">CONTEXT</a> - Enum constant in enum class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#continuePolling(T)" class="member-name-link">continuePolling(T)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Creates a result indicating polling should continue with the given state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html#counts" class="member-name-link">counts</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction)" class="member-name-link">create(Class&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create(Class&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;, DurableConfig)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create(Class&lt;I&gt;, DurableHandler&lt;I, O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#create(java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">create(String, Class&lt;I&gt;, Class&lt;O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a runner for the given function ARN with Class-based input/output types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#create(java.lang.String,java.lang.Class,java.lang.Class,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create(String, Class&lt;I&gt;, Class&lt;O&gt;, LambdaClient)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and Class-based input/output types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)" class="member-name-link">create(String, TypeToken&lt;I&gt;, TypeToken&lt;O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a runner for the given function ARN with TypeToken-based input/output types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create(String, TypeToken&lt;I&gt;, TypeToken&lt;O&gt;, LambdaClient)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and TypeToken-based input/output types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">create(TypeToken&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create(TypeToken&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;, DurableConfig)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create(TypeToken&lt;I&gt;, DurableHandler&lt;I, O&gt;)</a> - Static method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#createCallback(java.lang.String,java.lang.Class)" class="member-name-link">createCallback(String, Class&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a callback with default configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback(String, Class&lt;T&gt;, CallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a callback with custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">createCallback(String, TypeToken&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a callback using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback(String, TypeToken&lt;T&gt;, CallbackConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback(String, TypeToken&lt;T&gt;, CallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#createChildContext(java.lang.String,java.lang.String)" class="member-name-link">createChildContext(String, String)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>
    +<div class="block">Creates a child context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html#createConfiguration()" class="member-name-link">createConfiguration()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></dt>
    +<dd>
    +<div class="block">Template method for creating configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html#createConfiguration()" class="member-name-link">createConfiguration()</a> - Method in class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html#createConfiguration()" class="member-name-link">createConfiguration()</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html#createConfiguration()" class="member-name-link">createConfiguration()</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html#createConfiguration()" class="member-name-link">createConfiguration()</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem(String, String, Function&lt;DurableContext, R&gt;, TypeToken&lt;R&gt;, SerDes, OperationSubType, DurableContextImpl)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">createRootContext(ExecutionManager, DurableConfig, Context)</a> - Static method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>
    +<div class="block">Creates a root context (contextId = null)</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#createStepContext(java.lang.String,java.lang.String,int)" class="member-name-link">createStepContext(String, String, int)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>
    +<div class="block">Creates a step context for executing step operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating custom configuration with both custom HTTP client and custom SerDes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html#%3Cinit%3E()" class="member-name-link">CustomConfigExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Custom data class with camelCase field names to demonstrate snake_case serialization.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#%3Cinit%3E()" class="member-name-link">CustomData()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String)" class="member-name-link">CustomData(String, String, int, String)</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating custom polling strategy configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html#%3Cinit%3E()" class="member-name-link">CustomPollingExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:D">D</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#debug(java.lang.String,java.lang.Object...)" class="member-name-link">debug(String, Object...)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a> - Static variable in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></dt>
    +<dd>
    +<div class="block">Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
    + second</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a> - Static variable in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></dt>
    +<dd>
    +<div class="block">Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
    + seconds - Backoff rate: 2x - Jitter: FULL</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a> - Static variable in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></dt>
    +<dd>
    +<div class="block">Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
    + backoff rate, and FULL jitter.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#defaultConfig()" class="member-name-link">defaultConfig()</a> - Static method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Creates a DurableConfig with default settings.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#defaults()" class="member-name-link">defaults()</a> - Static method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Default configuration: suppress logs during replay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.html#defaultStrategy()" class="member-name-link">defaultStrategy()</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></dt>
    +<dd>
    +<div class="block">Returns the default wait strategy.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html#delay()" class="member-name-link">delay()</a> - Method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#deliveries()" class="member-name-link">deliveries()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>deliveries</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#deregisterActiveThread(java.lang.String)" class="member-name-link">deregisterActiveThread(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Mark a thread as inactive.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#description()" class="member-name-link">description()</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>description</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a> - Class in <a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></dt>
    +<dd>
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html#%3Cinit%3E()" class="member-name-link">DeserializationFailedMapExample()</a> - Constructor for class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a> - Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html#%3Cinit%3E()" class="member-name-link">DeserializationFailedParallelExample()</a> - Constructor for class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a> - Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html#%3Cinit%3E()" class="member-name-link">DeserializationFailureExample()</a> - Constructor for class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize(String, TypeToken&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></dt>
    +<dd>
    +<div class="block">Deserializes a JSON string to DurableExecutionInput object</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize(String, TypeToken&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/SerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize(String, TypeToken&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></dt>
    +<dd>
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">deserializeException(ErrorObject)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>
    +<div class="block">Deserializes an <code>ErrorObject</code> back into a throwable, reconstructing the original exception type and stack
    + trace when possible.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#deserializeResult(java.lang.String)" class="member-name-link">deserializeResult(String)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>
    +<div class="block">Deserializes a result string into the operation's result type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#deserializeStackTrace(java.util.List)" class="member-name-link">deserializeStackTrace(List&lt;String&gt;)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>
    +<div class="block">Deserializes a list of pipe-delimited strings back into stack trace elements.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableCallbackFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;<a href="software/amazon/lambda/durable/DurableCallbackFuture.html" title="type parameter in DurableCallbackFuture">T</a>&gt; - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig</a> - Class in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Builder for DurableConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext</a> - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>,<wbr><a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a>&gt; - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Function applied to each item in a map operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a> - Class in <a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></dt>
    +<dd>
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#durableExecutionArn()" class="member-name-link">durableExecutionArn()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionInput.html#param-durableExecutionArn"><code>durableExecutionArn</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" class="type-name-link" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a> - Interface in <a href="software/amazon/lambda/durable/client/package-summary.html">software.amazon.lambda.durable.client</a></dt>
    +<dd>
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Base exception for all durable execution errors.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableExecutionException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">DurableExecutionException(String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableExecutionException.html#%3Cinit%3E(java.lang.String,java.lang.Throwable)" class="member-name-link">DurableExecutionException(String, Throwable)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableExecutionException.html#%3Cinit%3E(java.lang.String,java.lang.Throwable,java.lang.StackTraceElement%5B%5D)" class="member-name-link">DurableExecutionException(String, Throwable, StackTraceElement[])</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a> - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Input payload received by the Lambda handler from the Durable Functions backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState)" class="member-name-link">DurableExecutionInput(String, String, CheckpointUpdatedExecutionState)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>DurableExecutionInput</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a> - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">DurableExecutionOutput(ExecutionStatus, String, ErrorObject)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>DurableExecutionOutput</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/DurableExecutor.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a> - Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Orchestrates the lifecycle of a durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="software/amazon/lambda/durable/DurableFuture.html" title="type parameter in DurableFuture">T</a>&gt; - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="software/amazon/lambda/durable/DurableHandler.html" title="type parameter in DurableHandler">I</a>,<wbr><a href="software/amazon/lambda/durable/DurableHandler.html" title="type parameter in DurableHandler">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html#%3Cinit%3E()" class="member-name-link">DurableHandler()</a> - Constructor for class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a> - Class in <a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></dt>
    +<dd>
    +<div class="block">Serializer/Deserializer for Durable Execution Input and Output objects.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html#%3Cinit%3E()" class="member-name-link">DurableInputOutputSerDes()</a> - Constructor for class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">DurableLogger</a> - Class in <a href="software/amazon/lambda/durable/logging/package-summary.html">software.amazon.lambda.durable.logging</a></dt>
    +<dd>
    +<div class="block">Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    + replay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#%3Cinit%3E(org.slf4j.Logger,software.amazon.lambda.durable.context.BaseContextImpl)" class="member-name-link">DurableLogger(Logger, BaseContextImpl)</a> - Constructor for class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>
    +<div class="block">Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">DurableOperationException(Operation, ErrorObject)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)" class="member-name-link">DurableOperationException(Operation, ErrorObject, String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.StackTraceElement%5B%5D,java.lang.Throwable)" class="member-name-link">DurableOperationException(Operation, ErrorObject, String, StackTraceElement[], Throwable)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.Throwable)" class="member-name-link">DurableOperationException(Operation, ErrorObject, String, Throwable)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:E">E</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#emailAddress" class="member-name-link">emailAddress</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#empty()" class="member-name-link">empty()</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns an empty MapResult with no items.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem(String, Function&lt;DurableContext, R&gt;, TypeToken&lt;R&gt;, SerDes, OperationSubType)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#error()" class="member-name-link">error()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionOutput.html#param-error"><code>error</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#error()" class="member-name-link">error()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapResultItem.html#param-error"><code>error</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#error()" class="member-name-link">error()</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>error</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#error(java.lang.String,java.lang.Object...)" class="member-name-link">error(String, Object...)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#error(java.lang.String,java.lang.Throwable)" class="member-name-link">error(String, Throwable)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating error handling patterns with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html#%3Cinit%3E()" class="member-name-link">ErrorHandlingExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a> - Exception in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Custom exception to demonstrate that original exception types are preserved across checkpoints.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#errorMessage()" class="member-name-link">errorMessage()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapError.html#param-errorMessage"><code>errorMessage</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#errorType()" class="member-name-link">errorType()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapError.html#param-errorType"><code>errorType</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html#evaluate(T,int)" class="member-name-link">evaluate(T, int)</a> - Method in interface software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></dt>
    +<dd>
    +<div class="block">Computes the delay before the next polling attempt based on the current state and attempt number.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a> - Class in <a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a></dt>
    +<dd>
    +<div class="block">Utility class for handling exceptions</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#%3Cinit%3E()" class="member-name-link">ExceptionHelper()</a> - Constructor for class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#execute()" class="member-name-link">execute()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation by checking for an existing checkpoint.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute(DurableExecutionInput, Context, TypeToken&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;, DurableConfig)</a> - Static method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/DurableExecutor.html" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#executeItems()" class="member-name-link">executeItems()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>
    +<div class="block">Starts execution of all enqueued items.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#executionManager" class="member-name-link">executionManager</a> - Variable in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a> - Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Central manager for durable execution coordination.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#%3Cinit%3E(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">ExecutionManager(DurableExecutionInput, DurableConfig)</a> - Constructor for class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a> - Enum Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Terminal status of a durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#executionTimeMs()" class="member-name-link">executionTimeMs()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#executionTimeMs()" class="member-name-link">executionTimeMs()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff(int, Duration, Duration, double, JitterStrategy)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></dt>
    +<dd>
    +<div class="block">Creates an exponential backoff retry strategy.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff(int, Duration, Duration, double, JitterStrategy)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></dt>
    +<dd>
    +<div class="block">Creates an exponential backoff wait strategy.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.html#exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)" class="member-name-link">exponentialBackoff(Duration, double, JitterStrategy, Duration)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></dt>
    +<dd>
    +<div class="block">Creates an exponential backoff polling strategy.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:F">F</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html#fail()" class="member-name-link">fail()</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></dt>
    +<dd>
    +<div class="block">Creates a retry decision indicating the operation should not be retried.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failCallback(String, ErrorObject)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">calls sendDurableExecutionCallbackFailure with the give callbackId and error</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failCallback(String, ErrorObject)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Fail a callback with error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#failChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failChainedInvoke(String, ErrorObject)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Fails a chained invoke operation with the given error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#failed()" class="member-name-link">failed()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#failed()" class="member-name-link">failed()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns errors from items that failed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#failed()" class="member-name-link">failed()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#failed(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failed(ErrorObject)</a> - Static method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#failed(software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">failed(MapResult.MapError)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Creates a failed result item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#FAILED" class="member-name-link">FAILED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html#FAILED" class="member-name-link">FAILED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#failure(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failure(ErrorObject)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Creates a failed output with the given error details.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#FAILURE_TOLERANCE_EXCEEDED" class="member-name-link">FAILURE_TOLERANCE_EXCEEDED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#faiure()" class="member-name-link">faiure()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>faiure</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#firstSuccessful()" class="member-name-link">firstSuccessful()</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Complete as soon as the first item succeeds.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.html#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay(int, Duration)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></dt>
    +<dd>
    +<div class="block">Creates a simple retry strategy that retries a fixed number of times with a fixed delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.html#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay(int, Duration)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></dt>
    +<dd>
    +<div class="block">Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.html#fixedDelay(java.time.Duration)" class="member-name-link">fixedDelay(Duration)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></dt>
    +<dd>
    +<div class="block">Creates a fixed-delay polling strategy that uses the same interval for every attempt.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#FULL" class="member-name-link">FULL</a> - Enum constant in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">Full jitter - random delay between 0 and calculated delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#fullName" class="member-name-link">fullName</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:G">G</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating a durable Lambda function that uses generic types in input and output.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html#%3Cinit%3E()" class="member-name-link">GenericInputOutputExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating TypeToken support for complex generic types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html#%3Cinit%3E()" class="member-name-link">GenericTypesExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableFuture.html#get()" class="member-name-link">get()</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></dt>
    +<dd>
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/InvokeOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></dt>
    +<dd>
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/StepOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitOperation.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html#get()" class="member-name-link">get()</a> - Method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#get(java.lang.Class)" class="member-name-link">get(Class&lt;U&gt;)</a> - Static method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>
    +<div class="block">Creates a TypeToken for a simple (non-generic) class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getAllEvents()" class="member-name-link">getAllEvents()</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Get all events in order.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getAllOperations()" class="member-name-link">getAllOperations()</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Returns all operations currently stored.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/StepContextImpl.html#getAttempt()" class="member-name-link">getAttempt()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></dt>
    +<dd>
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/StepContext.html#getAttempt()" class="member-name-link">getAttempt()</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></dt>
    +<dd>
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getAttempt()" class="member-name-link">getAttempt()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the current retry attempt number (0-based), defaulting to 0 if not available.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#getBranches()" class="member-name-link">getBranches()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getCallbackDetails()" class="member-name-link">getCallbackDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the callback details, or null if this is not a callback operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/CallbackException.html#getCallbackId()" class="member-name-link">getCallbackId()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></dt>
    +<dd>
    +<div class="block">Returns the callback ID associated with this exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Get the callback ID for a callback operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId(String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getChainedInvokeDetails()" class="member-name-link">getChainedInvokeDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the chained invoke details, or null if this is not a chained invoke operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getCheckpointDelay()" class="member-name-link">getCheckpointDelay()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the configured checkpoint delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getChildOperations()" class="member-name-link">getChildOperations()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the direct child Operations of this context operation</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#getChildOperations(java.lang.String)" class="member-name-link">getChildOperations(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Gets all child operations for a given operationId.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getCompletionFuture()" class="member-name-link">getCompletionFuture()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html#getConfiguration()" class="member-name-link">getConfiguration()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></dt>
    +<dd>
    +<div class="block">Gets the configuration used by this handler.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getContext()" class="member-name-link">getContext()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the parent context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getContextDetails()" class="member-name-link">getContextDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the context details, or null if this operation is not a context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getContextId()" class="member-name-link">getContextId()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Gets the context ID for this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getContextId()" class="member-name-link">getContextId()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Gets the context ID for this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getContextName()" class="member-name-link">getContextName()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Gets the context name for this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getContextName()" class="member-name-link">getContextName()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Gets the context name for this context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Returns the current thread's ThreadContext (threadId and threadType), or null if not set.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Returns the current thread's context from the execution manager.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getDurableConfig()" class="member-name-link">getDurableConfig()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getDurableConfig()" class="member-name-link">getDurableConfig()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#getDurableExecutionArn()" class="member-name-link">getDurableExecutionArn()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Returns the ARN of the durable execution being managed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getDurableExecutionClient()" class="member-name-link">getDurableExecutionClient()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the configured DurableExecutionClient.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getDuration()" class="member-name-link">getDuration()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the duration of the operation</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getError()" class="member-name-link">getError()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the step error, or null if the step succeeded or this is not a step operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getError()" class="member-name-link">getError()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns the execution error, if present.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#getError(int)" class="member-name-link">getError(int)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the error at the given index, or null if that item succeeded or was not started.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#getErrorObject()" class="member-name-link">getErrorObject()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>
    +<div class="block">Returns the error details from the failed operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html#getErrorObject()" class="member-name-link">getErrorObject()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></dt>
    +<dd>
    +<div class="block">Returns the error details for this unrecoverable exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getEvents()" class="member-name-link">getEvents()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the raw history events associated with this operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getEventsForOperation(java.lang.String)" class="member-name-link">getEventsForOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Get events for a specific operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getEventsForOperation(java.lang.String)" class="member-name-link">getEventsForOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns the raw history events for the given operation name, or an empty list if not found.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getExecutionArn()" class="member-name-link">getExecutionArn()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Returns the current durable execution arn</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getExecutionArn()" class="member-name-link">getExecutionArn()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Returns metadata about the current durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#getExecutionArn()" class="member-name-link">getExecutionArn()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Get the execution ARN.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getExecutionDetails()" class="member-name-link">getExecutionDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the execution details, or null if this operation is not an EXECUTION operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getExecutionManager()" class="member-name-link">getExecutionManager()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#getExecutionOperation()" class="member-name-link">getExecutionOperation()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Returns the initial EXECUTION operation from the checkpoint state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/client/DurableExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState(String, String, String)</a> - Method in interface software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></dt>
    +<dd>
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState(String, String, String)</a> - Method in class software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState(String, String, String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getExecutorService()" class="member-name-link">getExecutorService()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the configured ExecutorService.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getFailedOperations()" class="member-name-link">getFailedOperations()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns all operations that failed, were cancelled, timed out, or stopped.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getHistoryEvents()" class="member-name-link">getHistoryEvents()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns all raw history events from the execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#getItem(int)" class="member-name-link">getItem(int)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the result item at the given index.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getLambdaContext()" class="member-name-link">getLambdaContext()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#getLambdaContext()" class="member-name-link">getLambdaContext()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#getLogger()" class="member-name-link">getLogger()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#getLogger()" class="member-name-link">getLogger()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/StepContextImpl.html#getLogger()" class="member-name-link">getLogger()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getLoggerConfig()" class="member-name-link">getLoggerConfig()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the configured LoggerConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html#getName()" class="member-name-link">getName()</a> - Method in class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getName()" class="member-name-link">getName()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the operation name (may be null).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getName()" class="member-name-link">getName()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the operation name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#getOperation()" class="member-name-link">getOperation()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>
    +<div class="block">Returns the operation that caused this exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getOperation()" class="member-name-link">getOperation()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the Operation from ExecutionManager and update the replay state from REPLAY to EXECUTE if operation is not
    + found.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#getOperation(java.lang.String)" class="member-name-link">getOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Get details for a specific operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#getOperation(java.lang.String)" class="member-name-link">getOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns the <a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given name from the last execution result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#getOperation(java.lang.String)" class="member-name-link">getOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns the <a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given operation name, or null if not found.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getOperation(java.lang.String)" class="member-name-link">getOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns the <a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> with the given name, or null if not found.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#getOperationAndUpdateReplayState(java.lang.String)" class="member-name-link">getOperationAndUpdateReplayState(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Gets an operation by its globally unique operationId, and updates replay state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getOperationByName(java.lang.String)" class="member-name-link">getOperationByName(String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Returns the operation with the given name, or null if not found.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#getOperationId()" class="member-name-link">getOperationId()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>
    +<div class="block">Returns the ID of the operation that caused this exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getOperationId()" class="member-name-link">getOperationId()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the unique identifier for this operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#getOperations()" class="member-name-link">getOperations()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Get all operations in the execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getOperations()" class="member-name-link">getOperations()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns all operations from the execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/DurableOperationException.html#getOperationStatus()" class="member-name-link">getOperationStatus()</a> - Method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></dt>
    +<dd>
    +<div class="block">Returns the status of the operation that caused this exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#getOperationUpdates()" class="member-name-link">getOperationUpdates()</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Get all operation updates that have been sent to this client.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getPollingStrategy()" class="member-name-link">getPollingStrategy()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the polling strategy.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getResult()" class="member-name-link">getResult()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Deserializes and returns the execution output if the result type is known.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#getResult(int)" class="member-name-link">getResult(int)</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the result at the given index, or null if that item failed or was not started.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getResult(java.lang.Class)" class="member-name-link">getResult(Class&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Deserializes and returns the execution output, throwing if the execution did not succeed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getResult(TypeToken&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Deserializes and returns the execution output using a TypeToken for generic types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getRunningUserHandler()" class="member-name-link">getRunningUserHandler()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#getSerDes()" class="member-name-link">getSerDes()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>
    +<div class="block">Gets the configured SerDes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html#getServiceName()" class="member-name-link">getServiceName()</a> - Method in exception software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#getStatus()" class="member-name-link">getStatus()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Get current execution status.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getStatus()" class="member-name-link">getStatus()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the current status of this operation (e.g.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getStatus()" class="member-name-link">getStatus()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns the execution status (SUCCEEDED, FAILED, or PENDING).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getStepDetails()" class="member-name-link">getStepDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the step details, or null if this is not a step operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getStepResult(java.lang.Class)" class="member-name-link">getStepResult(Class&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Deserializes and returns the step result as the given type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getStepResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getStepResult(TypeToken&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Deserializes and returns the step result using a TypeToken for generic types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getSubtype()" class="member-name-link">getSubtype()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the operation's subtype</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getSubType()" class="member-name-link">getSubType()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the operation sub-type (e.g.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#getSucceededOperations()" class="member-name-link">getSucceededOperations()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns all operations that completed successfully.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#getType()" class="member-name-link">getType()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Gets the operation type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getType()" class="member-name-link">getType()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the operation type (STEP, WAIT, CALLBACK, etc.).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#getType()" class="member-name-link">getType()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>
    +<div class="block">Returns the captured type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#getValue()" class="member-name-link">getValue()</a> - Method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>
    +<div class="block">Returns the wire-format string value sent in checkpoint updates.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#getWaitDetails()" class="member-name-link">getWaitDetails()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns the wait details, or null if this is not a wait operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> - Class in <a href="software/amazon/lambda/durable/examples/types/package-summary.html">software.amazon.lambda.durable.examples.types</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html#%3Cinit%3E()" class="member-name-link">GreetingRequest()</a> - Constructor for class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html#%3Cinit%3E(java.lang.String)" class="member-name-link">GreetingRequest(String)</a> - Constructor for class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:H">H</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#HALF" class="member-name-link">HALF</a> - Enum constant in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">Half jitter - random delay between 50% and 100% of calculated delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion(ConcurrencyCompletionStatus)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>
    +<div class="block">Called when the concurrency operation completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion(ConcurrencyCompletionStatus)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion(ConcurrencyCompletionStatus)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(I, DurableContext)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></dt>
    +<dd>
    +<div class="block">Handle the durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">handleRequest(InputStream, OutputStream, Context)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></dt>
    +<dd>
    +<div class="block">Reads the request, executes the durable function handler and writes the response</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Integer, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Integer, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Object, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Object, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Object, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(String, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(String, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html#handleRequest(java.util.Map,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(Map&lt;String, String&gt;, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ManyAsyncChildContextExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html#handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GenericTypesExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(DeserializationFailedParallelExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ParallelExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ParallelFailureToleranceExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ParallelWithWaitExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html#handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ManyAsyncStepsExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ApprovalRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ApprovalRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/LoggingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/NoopExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.invoke.<a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(GreetingRequest, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html#handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest(ConcurrentWaitForConditionExample.Input, DurableContext)</a> - Method in class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#hasCallback(java.lang.String)" class="member-name-link">hasCallback(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Check if a callback operation with the given name exists and is started.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#hashCode()" class="member-name-link">hashCode()</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Returns a hash code value for this object.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html#hashOperationId(java.lang.String)" class="member-name-link">hashOperationId(String)</a> - Static method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></dt>
    +<dd>
    +<div class="block">Hashes the given string using SHA-256</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#hasOperation(java.lang.String)" class="member-name-link">hasOperation(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Check if an operation with the given name exists.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#hasOperationsForContext(java.lang.String)" class="member-name-link">hasOperationsForContext(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Checks whether there are any cached operations for the given parent context ID.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#heartbeatCallback(java.lang.String)" class="member-name-link">heartbeatCallback(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">call sendDurableExecutionCallbackHeartbeat API with the give callbackId</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html#heartbeatTimeout()" class="member-name-link">heartbeatTimeout()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dt>
    +<dd>
    +<div class="block">Returns the maximum duration between heartbeats before the callback is considered failed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html#heartbeatTimeout(java.time.Duration)" class="member-name-link">heartbeatTimeout(Duration)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the maximum duration between heartbeats before the callback is considered failed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a> - Class in <a href="software/amazon/lambda/durable/testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></dt>
    +<dd>
    +<div class="block">Processes execution history events from the GetDurableExecutionHistory API into <a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a> objects.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html#%3Cinit%3E()" class="member-name-link">HistoryEventProcessor()</a> - Constructor for class software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a> - Class in <a href="software/amazon/lambda/durable/testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></dt>
    +<dd>
    +<div class="block">Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">HistoryPoller(LambdaClient)</a> - Constructor for class software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></dt>
    +<dd>
    +<div class="block">Creates a poller backed by the given Lambda client.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:I">I</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">An illegal operation is detected.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">IllegalDurableOperationException(String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#info(java.lang.String,java.lang.Object...)" class="member-name-link">info(String, Object...)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#initialExecutionState()" class="member-name-link">initialExecutionState()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionInput.html#param-initialExecutionState"><code>initialExecutionState</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html#initialState()" class="member-name-link">initialState()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the initial state object, or null if not specified.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html#initialState(T)" class="member-name-link">initialState(T)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the initial state for the waitForCondition operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html#%3Cinit%3E()" class="member-name-link">Input()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#%3Cinit%3E(int,int)" class="member-name-link">Input(int, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#%3Cinit%3E(int,int)" class="member-name-link">Input(int, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#%3Cinit%3E(int,int,int)" class="member-name-link">Input(int, int, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html#%3Cinit%3E(java.lang.String)" class="member-name-link">Input(String)</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#%3Cinit%3E(java.lang.String,java.lang.String)" class="member-name-link">Input(String, String)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html#%3Cinit%3E(java.util.List)" class="member-name-link">Input(List&lt;String&gt;)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html#%3Cinit%3E(java.util.List)" class="member-name-link">Input(List&lt;String&gt;)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#%3Cinit%3E(java.util.List,java.lang.Integer,java.lang.Integer)" class="member-name-link">Input(List&lt;String&gt;, Integer, Integer)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invoke(java.lang.String,java.lang.String,U,java.lang.Class)" class="member-name-link">invoke(String, String, U, Class&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Invokes another Lambda function by name and blocks until the result is available.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke(String, String, U, Class&lt;T&gt;, InvokeConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Invokes another Lambda function with custom configuration, blocking until the result is available.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invoke(String, String, U, TypeToken&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Invokes another Lambda function using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke(String, String, U, TypeToken&lt;T&gt;, InvokeConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Invokes another Lambda function using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)" class="member-name-link">invokeAsync(String, String, U, Class&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously invokes another Lambda function, returning a <a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync(String, String, U, Class&lt;T&gt;, InvokeConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Invokes another Lambda function using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invokeAsync(String, String, U, TypeToken&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync(String, String, U, TypeToken&lt;T&gt;, InvokeConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync(String, String, U, TypeToken&lt;T&gt;, InvokeConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration for chained invoke operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#%3Cinit%3E(software.amazon.lambda.durable.config.InvokeConfig.Builder)" class="member-name-link">InvokeConfig(InvokeConfig.Builder)</a> - Constructor for class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>,<wbr><a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/InvokeOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation(OperationIdentifier, String, I, TypeToken&lt;T&gt;, InvokeConfig, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeStoppedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeTimedOutException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#isComplete()" class="member-name-link">isComplete()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Check if execution has completed (succeeded or failed).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#isCompleted()" class="member-name-link">isCompleted()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>
    +<div class="block">Returns true if the operation has completed (either succeeded or failed).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#isDone()" class="member-name-link">isDone()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/WaitForConditionResult.html#param-isDone"><code>isDone</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#isExecutionCompletedExceptionally()" class="member-name-link">isExecutionCompletedExceptionally()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">returns <code>true</code> if the execution is terminated exceptionally (with a <a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a> or an
    + unrecoverable error).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#isFailed()" class="member-name-link">isFailed()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns true if the execution failed.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#isJoined" class="member-name-link">isJoined</a> - Variable in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#isOperationCompleted()" class="member-name-link">isOperationCompleted()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Returns true if this operation has completed (successfully or exceptionally).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContext.html#isReplaying()" class="member-name-link">isReplaying()</a> - Method in interface software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></dt>
    +<dd>
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#isReplaying()" class="member-name-link">isReplaying()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#isReplaying()" class="member-name-link">isReplaying()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Returns <code>true</code> if the execution is currently replaying completed operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepInterruptedException.html#isStepInterruptedException(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">isStepInterruptedException(ErrorObject)</a> - Static method in exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#isSucceeded()" class="member-name-link">isSucceeded()</a> - Method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#isSucceeded()" class="member-name-link">isSucceeded()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>
    +<div class="block">Returns true if the execution completed successfully.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#isTerminalStatus(software.amazon.awssdk.services.lambda.model.OperationStatus)" class="member-name-link">isTerminalStatus(OperationStatus)</a> - Static method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Returns <code>true</code> if the given status represents a terminal (final) operation state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html#items" class="member-name-link">items</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html#items()" class="member-name-link">items()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html#items()" class="member-name-link">items()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#items()" class="member-name-link">items()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.html#param-items"><code>items</code></a> record component.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:J">J</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a> - Class in <a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></dt>
    +<dd>
    +<div class="block">Jackson-based implementation of <a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde"><code>SerDes</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html#%3Cinit%3E()" class="member-name-link">JacksonSerDes()</a> - Constructor for class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></dt>
    +<dd>
    +<div class="block">Creates a new JacksonSerDes with default ObjectMapper configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html#%3Cinit%3E(com.fasterxml.jackson.databind.ObjectMapper)" class="member-name-link">JacksonSerDes(ObjectMapper)</a> - Constructor for class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></dt>
    +<dd>
    +<div class="block">Creates a new JacksonSerDes with a custom ObjectMapper configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a> - Enum Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Jitter strategy for retry delays to prevent thundering herd problems.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html#join()" class="member-name-link">join()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></dt>
    +<dd>
    +<div class="block">Blocks the calling thread until the concurrency operation reaches a terminal state.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:L">L</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a> - Class in <a href="software/amazon/lambda/durable/client/package-summary.html">software.amazon.lambda.durable.client</a></dt>
    +<dd>
    +<div class="block">Default implementation of <a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> backed by the AWS Lambda SDK client.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">LambdaDurableFunctionsClient(LambdaClient)</a> - Constructor for class software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></dt>
    +<dd>
    +<div class="block">Creates a LambdaDurableFunctionsClient with the provided LambdaClient.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></dt>
    +<dd>
    +<div class="block">In-memory test runner for durable Lambda functions.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a> - Class in <a href="software/amazon/lambda/durable/testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></dt>
    +<dd>
    +<div class="block">In-memory implementation of <a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> for local testing.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#%3Cinit%3E()" class="member-name-link">LocalMemoryExecutionClient()</a> - Constructor for class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a> - Record Class in <a href="software/amazon/lambda/durable/logging/package-summary.html">software.amazon.lambda.durable.logging</a></dt>
    +<dd>
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#%3Cinit%3E(boolean)" class="member-name-link">LoggerConfig(boolean)</a> - Constructor for record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>LoggerConfig</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/LoggingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Example demonstrating DurableLogger usage for structured logging with execution context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/LoggingExample.html#%3Cinit%3E()" class="member-name-link">LoggingExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:M">M</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategy.html#makeRetryDecision(java.lang.Throwable,int)" class="member-name-link">makeRetryDecision(Throwable, int)</a> - Method in interface software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></dt>
    +<dd>
    +<div class="block">Determines whether to retry a failed operation and calculates the retry delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a> - Class in <a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></dt>
    +<dd>
    +<div class="block">Performance test example demonstrating concurrent async child contexts.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html#%3Cinit%3E()" class="member-name-link">ManyAsyncChildContextExample()</a> - Constructor for class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a> - Record Class in <a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a> - Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>
    +<div class="block">Performance test example demonstrating concurrent async steps.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html#%3Cinit%3E()" class="member-name-link">ManyAsyncStepsExample()</a> - Constructor for class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a> - Record Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map(String, Collection&lt;I&gt;, Class&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map(String, Collection&lt;I&gt;, Class&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;, MapConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map(String, Collection&lt;I&gt;, TypeToken&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map(String, Collection&lt;I&gt;, TypeToken&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;, MapConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#MAP" class="member-name-link">MAP</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#MAP_ITERATION" class="member-name-link">MAP_ITERATION</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync(String, Collection&lt;I&gt;, Class&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync(String, Collection&lt;I&gt;, Class&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;, MapConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync(String, Collection&lt;I&gt;, TypeToken&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync(String, Collection&lt;I&gt;, TypeToken&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;, MapConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync(String, Collection&lt;I&gt;, TypeToken&lt;O&gt;, DurableContext.MapFunction&lt;I, O&gt;, MapConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration for map operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">MapError(String, String, List&lt;String&gt;)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>MapError</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">MapIterationFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="software/amazon/lambda/durable/operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation(OperationIdentifier, List&lt;I&gt;, DurableContext.MapFunction&lt;I, O&gt;, TypeToken&lt;O&gt;, MapConfig, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="software/amazon/lambda/durable/model/MapResult.html" title="type parameter in MapResult">T</a>&gt; - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Result container for map operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#%3Cinit%3E(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">MapResult(List&lt;MapResult.MapResultItem&lt;T&gt;&gt;, ConcurrencyCompletionStatus)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Compact constructor that applies defensive copy and defaults.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a> - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Error details for a failed map item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&gt; - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Represents the outcome of a single item in a map operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a> - Enum Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Status of an individual map item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#%3Cinit%3E(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">MapResultItem(MapResult.MapResultItem.Status, T, MapResult.MapError)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>MapResultItem</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#markAlreadyCompleted()" class="member-name-link">markAlreadyCompleted()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Marks the operation as already completed (in replay).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#MAX_OPERATION_NAME_LENGTH" class="member-name-link">MAX_OPERATION_NAME_LENGTH</a> - Static variable in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html#maxConcurrency()" class="member-name-link">maxConcurrency()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.html#maxConcurrency()" class="member-name-link">maxConcurrency()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#maxConcurrency()" class="member-name-link">maxConcurrency()</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>maxConcurrency</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency(Integer)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency(Integer)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#message()" class="member-name-link">message()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>message</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#MIN_SUCCESSFUL_REACHED" class="member-name-link">MIN_SUCCESSFUL_REACHED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#minSuccessful()" class="member-name-link">minSuccessful()</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#minSuccessful()" class="member-name-link">minSuccessful()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#minSuccessful(int)" class="member-name-link">minSuccessful(int)</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Complete when the specified number of items have succeeded.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#multiplier()" class="member-name-link">multiplier()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#multiplier()" class="member-name-link">multiplier()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:N">N</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#name()" class="member-name-link">name()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/OperationIdentifier.html#param-name"><code>name</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html#nextOperationId()" class="member-name-link">nextOperationId()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></dt>
    +<dd>
    +<div class="block">Returns the next globally unique operation ID.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html#NO_RETRY" class="member-name-link">NO_RETRY</a> - Static variable in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></dt>
    +<dd>
    +<div class="block">No retry strategy - fails immediately on first error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when non-deterministic code is detected during replay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NonDeterministicExecutionException(String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#NONE" class="member-name-link">NONE</a> - Enum constant in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">No jitter - use exact calculated delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/NoopExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a> - Class in <a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></dt>
    +<dd>
    +<div class="block">Simple example demonstrating a durable function doesn't have any durable operation</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/NoopExample.html#%3Cinit%3E()" class="member-name-link">NoopExample()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:O">O</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType)" class="member-name-link">of(String, String, OperationType)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Creates an identifier without a sub-type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">of(String, String, OperationType, OperationSubType)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Creates an identifier with a sub-type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#of(java.lang.Throwable)" class="member-name-link">of(Throwable)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">onCheckpointComplete(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Receives operation updates from ExecutionManager.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#operationId()" class="member-name-link">operationId()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/OperationIdentifier.html#param-operationId"><code>operationId</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a> - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">OperationIdentifier(String, String, OperationType, OperationSubType)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>OperationIdentifier</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a> - Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Generates operation IDs for the durable operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html#%3Cinit%3E(java.lang.String)" class="member-name-link">OperationIdGenerator(String)</a> - Constructor for class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a> - Record Class in <a href="software/amazon/lambda/durable/testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></dt>
    +<dd>
    +<div class="block">The operation status and result/error from Step, Context, Callback and ChainedInvoke operations</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.OperationStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">OperationResult(OperationStatus, String, ErrorObject)</a> - Constructor for record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>OperationResult</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#operationStatus()" class="member-name-link">operationStatus()</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>operationStatus</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a> - Enum Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#operationType()" class="member-name-link">operationType()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/OperationIdentifier.html#param-operationType"><code>operationType</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html#%3Cinit%3E()" class="member-name-link">Output()</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#%3Cinit%3E(int,int)" class="member-name-link">Output(int, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#%3Cinit%3E(long,long,long)" class="member-name-link">Output(long, long, long)</a> - Constructor for record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#%3Cinit%3E(long,long,long)" class="member-name-link">Output(long, long, long)</a> - Constructor for record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#%3Cinit%3E(java.util.List,int)" class="member-name-link">Output(List&lt;String&gt;, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#%3Cinit%3E(java.util.List,int,int)" class="member-name-link">Output(List&lt;String&gt;, int, int)</a> - Constructor for record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html#%3Cinit%3E(java.util.List,java.util.Map,java.util.Map)" class="member-name-link">Output(List&lt;String&gt;, Map&lt;String, Integer&gt;, Map&lt;String, List&lt;String&gt;&gt;)</a> - Constructor for class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:P">P</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#parallel(java.lang.String)" class="member-name-link">parallel(String)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a <a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently with default config</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel(String, ParallelConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel(String, ParallelConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Creates a <a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#PARALLEL" class="member-name-link">PARALLEL</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#PARALLEL_BRANCH" class="member-name-link">PARALLEL_BRANCH</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">ParallelBranchFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a> - Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html#%3Cinit%3E()" class="member-name-link">ParallelExample()</a> - Constructor for class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a> - Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>
    +<div class="block">Example demonstrating parallel execution with failure tolerance.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html#%3Cinit%3E()" class="member-name-link">ParallelFailureToleranceExample()</a> - Constructor for class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a> - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation(OperationIdentifier, SerDes, DurableContextImpl, ParallelConfig)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">ParallelResult</a> - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Summary result of a parallel operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#%3Cinit%3E(int,int,int,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">ParallelResult(int, int, int, ConcurrencyCompletionStatus)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>ParallelResult</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a> - Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>
    +<div class="block">Example demonstrating parallel branches where some branches include wait operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html#%3Cinit%3E()" class="member-name-link">ParallelWithWaitExample()</a> - Constructor for class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a> - Record Class in <a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ParameterValidator</a> - Class in <a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a></dt>
    +<dd>
    +<div class="block">Utility class for validating input parameters in the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#parentOperation" class="member-name-link">parentOperation</a> - Variable in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#payloadSerDes()" class="member-name-link">payloadSerDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html#payloadSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">payloadSerDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the invoke operation payload.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#pending()" class="member-name-link">pending()</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Creates a pending output indicating the execution was suspended.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#PENDING" class="member-name-link">PENDING</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#pollForOperationUpdates()" class="member-name-link">pollForOperationUpdates()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Polls the backend for updates to this operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#pollForOperationUpdates(java.lang.String)" class="member-name-link">pollForOperationUpdates(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#pollForOperationUpdates(java.lang.String,java.time.Instant)" class="member-name-link">pollForOperationUpdates(String, Instant)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Pools for operation updates at a specific time</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)" class="member-name-link">pollForOperationUpdates(Instant)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Polls the backend for updates to this operation at a specific time.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Factory class for creating common polling strategies.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.html#%3Cinit%3E()" class="member-name-link">PollingStrategies()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Preset polling strategies for common use cases.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a> - Interface in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#pollUntil(java.util.function.Predicate)" class="member-name-link">pollUntil(Predicate&lt;AsyncExecution&lt;O&gt;&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Poll execution history until the given condition is met.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/AsyncExecution.html#pollUntilComplete()" class="member-name-link">pollUntilComplete()</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></dt>
    +<dd>
    +<div class="block">Poll until execution completes and return the final result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html#pollUntilComplete(java.lang.String,java.time.Duration,java.time.Duration)" class="member-name-link">pollUntilComplete(String, Duration, Duration)</a> - Method in class software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></dt>
    +<dd>
    +<div class="block">Polls execution history until a terminal event is found or the timeout is exceeded.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html#%3Cinit%3E()" class="member-name-link">Presets()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html#%3Cinit%3E()" class="member-name-link">Presets()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html#%3Cinit%3E()" class="member-name-link">Presets()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html#processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">processEvents(List&lt;Event&gt;, TypeToken&lt;O&gt;, SerDes)</a> - Method in class software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></dt>
    +<dd>
    +<div class="block">Processes a list of execution history events into a structured <a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:R">R</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#registerActiveThread(java.lang.String)" class="member-name-link">registerActiveThread(String)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Registers a thread as active.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#registerActiveThread(java.lang.String)" class="member-name-link">registerActiveThread(String)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Registers a thread as active in the execution manager.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#registerOperation(software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">registerOperation(BaseDurableOperation)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Registers an operation so it can receive checkpoint completion notifications.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/InvokeOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/StepOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></dt>
    +<dd>
    +<div class="block">Replays the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#replayTimeMs()" class="member-name-link">replayTimeMs()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#replayTimeMs()" class="member-name-link">replayTimeMs()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#reset()" class="member-name-link">reset()</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Clears all operations and events, resetting the client to its initial state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#resetCheckpointToStarted(java.lang.String)" class="member-name-link">resetCheckpointToStarted(String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Simulate checkpoint failure by forcing an operation into STARTED state</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#resetCheckpointToStarted(java.lang.String)" class="member-name-link">resetCheckpointToStarted(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Resets a named step operation to STARTED status, simulating a checkpoint failure.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#result()" class="member-name-link">result()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#result()" class="member-name-link">result()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#result()" class="member-name-link">result()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionOutput.html#param-result"><code>result</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#result()" class="member-name-link">result()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapResultItem.html#param-result"><code>result</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#result()" class="member-name-link">result()</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#results()" class="member-name-link">results()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>results</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#results()" class="member-name-link">results()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns all results as an unmodifiable list (nulls for failed/not-started items).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html#retry(java.time.Duration)" class="member-name-link">retry(Duration)</a> - Static method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></dt>
    +<dd>
    +<div class="block">Creates a retry decision indicating the operation should be retried after the specified delay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryDecision</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Represents a decision about whether to retry a failed operation and how long to wait.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a> - Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>
    +<div class="block">Simple example demonstrating retry strategies with a flaky API.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryExample.html#%3Cinit%3E()" class="member-name-link">RetryExample()</a> - Constructor for class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a> - Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>
    +<div class="block">Example demonstrating in-process retry behavior with concurrent operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html#%3Cinit%3E()" class="member-name-link">RetryInProcessExample()</a> - Constructor for class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Factory class for creating common retry strategies.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.html#%3Cinit%3E()" class="member-name-link">RetryStrategies()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Preset retry strategies for common use cases.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html#retryStrategy()" class="member-name-link">retryStrategy()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dt>
    +<dd>
    +<div class="block">Returns the retry strategy for this step, or the default strategy if not specified.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html#retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)" class="member-name-link">retryStrategy(RetryStrategy)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the retry strategy for the step.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a> - Interface in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Functional interface for determining retry behavior when operations fail.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#run(I)" class="member-name-link">run(I)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#run(I)" class="member-name-link">run(I)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Run a single invocation (may return PENDING if waiting/retrying).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#RUN_IN_CHILD_CONTEXT" class="member-name-link">RUN_IN_CHILD_CONTEXT</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContext(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;, RunInChildContextConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContext(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;, RunInChildContextConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContextAsync(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync(String, Class&lt;T&gt;, Function&lt;DurableContext, T&gt;, RunInChildContextConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContextAsync(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;, RunInChildContextConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync(String, TypeToken&lt;T&gt;, Function&lt;DurableContext, T&gt;, RunInChildContextConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#runUntilComplete(I)" class="member-name-link">runUntilComplete(I)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#runUntilComplete(I)" class="member-name-link">runUntilComplete(I)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#runUntilCompleteOrSuspend(java.util.concurrent.CompletableFuture)" class="member-name-link">runUntilCompleteOrSuspend(CompletableFuture&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">return a future that completes when userFuture completes successfully or the execution is terminated or
    + suspended.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">runUserHandler(Runnable, ThreadType)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:S">S</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html#semantics()" class="member-name-link">semantics()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dt>
    +<dd>
    +<div class="block">Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html#semantics(software.amazon.lambda.durable.config.StepSemantics)" class="member-name-link">semantics(StepSemantics)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the delivery semantics for the step.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate)" class="member-name-link">sendOperationUpdate(OperationUpdate)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)" class="member-name-link">sendOperationUpdate(OperationUpdate.Builder)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Sends an operation update synchronously (blocks until the update is acknowledged).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)" class="member-name-link">sendOperationUpdateAsync(OperationUpdate.Builder)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Sends an operation update asynchronously.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dt>
    +<dd>
    +<div class="block">Returns the custom serializer for this callback, or null if not specified (uses default SerDes).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></dt>
    +<dd>
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></dt>
    +<dd>
    +<div class="block">Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
    + SerDes).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dt>
    +<dd>
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html#serDes()" class="member-name-link">serDes()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the custom serializer, or null if not specified (uses default SerDes).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the invoke result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the custom serializer to use for serializing map items and results.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the step.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the step.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the step.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes(SerDes)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom serializer for the waitForCondition operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/SerDes.html" class="type-name-link" title="interface in software.amazon.lambda.durable.serde">SerDes</a> - Interface in <a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></dt>
    +<dd>
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/SerDesException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">SerDesException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when serialization or deserialization fails.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/SerDesException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">SerDesException(String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/SerDesException.html#%3Cinit%3E(java.lang.String,java.lang.Throwable)" class="member-name-link">SerDesException(String, Throwable)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation(OperationIdentifier, TypeToken&lt;T&gt;, SerDes, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>
    +<div class="block">Constructs a new durable operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation(OperationIdentifier, TypeToken&lt;T&gt;, SerDes, DurableContextImpl, BaseDurableOperation)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html#serialize(java.lang.Object)" class="member-name-link">serialize(Object)</a> - Method in class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></dt>
    +<dd>
    +<div class="block">Serializes an object to a JSON string.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/JacksonSerDes.html#serialize(java.lang.Object)" class="member-name-link">serialize(Object)</a> - Method in class software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/SerDes.html#serialize(java.lang.Object)" class="member-name-link">serialize(Object)</a> - Method in interface software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></dt>
    +<dd>
    +<div class="block">Serializes an object to a JSON string.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#serializeException(java.lang.Throwable)" class="member-name-link">serializeException(Throwable)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>
    +<div class="block">Serializes a throwable into an <code>ErrorObject</code> for checkpointing.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html#serializeResult(T)" class="member-name-link">serializeResult(T)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></dt>
    +<dd>
    +<div class="block">Serializes the result to a string.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#serializeStackTrace(java.lang.StackTraceElement%5B%5D)" class="member-name-link">serializeStackTrace(StackTraceElement[])</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>
    +<div class="block">Serializes a stack trace to a list of pipe-delimited strings in the format
    + <code>className|methodName|fileName|lineNumber</code>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#services()" class="member-name-link">services()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>services</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html#%3Cinit%3E()" class="member-name-link">ServiceUnavailableException()</a> - Constructor for exception software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></dt>
    +<dd>
    +<div class="block">Default constructor required for Jackson deserialization.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html#%3Cinit%3E(java.lang.String,java.lang.String)" class="member-name-link">ServiceUnavailableException(String, String)</a> - Constructor for exception software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#setCurrentThreadContext(software.amazon.lambda.durable.execution.ThreadContext)" class="member-name-link">setCurrentThreadContext(ThreadContext)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Sets the current thread's ThreadContext (threadId and threadType).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/BaseContextImpl.html#setExecutionMode()" class="member-name-link">setExecutionMode()</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></dt>
    +<dd>
    +<div class="block">Transitions this context from replay to execution mode.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html#setName(java.lang.String)" class="member-name-link">setName(String)</a> - Method in class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html#shouldRetry()" class="member-name-link">shouldRetry()</a> - Method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a> - Class in <a href="software/amazon/lambda/durable/examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></dt>
    +<dd>
    +<div class="block">Simple example demonstrating basic invoke execution with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html#%3Cinit%3E()" class="member-name-link">SimpleInvokeExample()</a> - Constructor for class software.amazon.lambda.durable.examples.invoke.<a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a> - Class in <a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></dt>
    +<dd>
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html#%3Cinit%3E()" class="member-name-link">SimpleMapExample()</a> - Constructor for class software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a> - Class in <a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></dt>
    +<dd>
    +<div class="block">Simple example demonstrating basic step execution with the Durable Execution SDK.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html#%3Cinit%3E()" class="member-name-link">SimpleStepExample()</a> - Constructor for class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#simulateFireAndForgetCheckpointLoss(java.lang.String)" class="member-name-link">simulateFireAndForgetCheckpointLoss(String)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Simulate fire-and-forget checkpoint loss by removing the operation entirely</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#simulateFireAndForgetCheckpointLoss(java.lang.String)" class="member-name-link">simulateFireAndForgetCheckpointLoss(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Removes a named step operation entirely, simulating loss of a fire-and-forget checkpoint.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#size()" class="member-name-link">size()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns the number of items in this result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#size()" class="member-name-link">size()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>size</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#skipped()" class="member-name-link">skipped()</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Creates a skipped result item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html#SKIPPED" class="member-name-link">SKIPPED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#sneakyThrow(java.lang.Throwable)" class="member-name-link">sneakyThrow(Throwable)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>
    +<div class="block">Throws any exception as if it were unchecked using type erasure.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a> - package software.amazon.lambda.durable</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/client/package-summary.html">software.amazon.lambda.durable.client</a> - package software.amazon.lambda.durable.client</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a> - package software.amazon.lambda.durable.config</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a> - package software.amazon.lambda.durable.context</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a> - package software.amazon.lambda.durable.examples.callback</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a> - package software.amazon.lambda.durable.examples.child</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a> - package software.amazon.lambda.durable.examples.general</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a> - package software.amazon.lambda.durable.examples.invoke</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a> - package software.amazon.lambda.durable.examples.map</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a> - package software.amazon.lambda.durable.examples.parallel</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a> - package software.amazon.lambda.durable.examples.step</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/package-summary.html">software.amazon.lambda.durable.examples.types</a> - package software.amazon.lambda.durable.examples.types</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a> - package software.amazon.lambda.durable.examples.wait</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a> - package software.amazon.lambda.durable.exception</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a> - package software.amazon.lambda.durable.execution</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/package-summary.html">software.amazon.lambda.durable.logging</a> - package software.amazon.lambda.durable.logging</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a> - package software.amazon.lambda.durable.model</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a> - package software.amazon.lambda.durable.operation</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a> - package software.amazon.lambda.durable.retry</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a> - package software.amazon.lambda.durable.serde</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a> - package software.amazon.lambda.durable.testing</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a> - package software.amazon.lambda.durable.testing.cloud</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a> - package software.amazon.lambda.durable.testing.local</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a> - package software.amazon.lambda.durable.util</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#stackTrace()" class="member-name-link">stackTrace()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapError.html#param-stackTrace"><code>stackTrace</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/CallbackOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ChildContextOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/InvokeOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/MapOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/ParallelOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/StepOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitOperation.html#start()" class="member-name-link">start()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></dt>
    +<dd>
    +<div class="block">Starts the operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#startAsync(I)" class="member-name-link">startAsync(I)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Start an asynchronous execution and return a handle for incremental polling.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#status()" class="member-name-link">status()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/DurableExecutionOutput.html#param-status"><code>status</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#status()" class="member-name-link">status()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/MapResult.MapResultItem.html#param-status"><code>status</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">step(String, Class&lt;T&gt;, Function&lt;StepContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a durable step with the given name and blocks until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step(String, Class&lt;T&gt;, Function&lt;StepContext, T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a durable step with the given name and configuration, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier)" class="member-name-link">step(String, Class&lt;T&gt;, Supplier&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step(String, Class&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">step(String, TypeToken&lt;T&gt;, Function&lt;StepContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a durable step using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step(String, TypeToken&lt;T&gt;, Function&lt;StepContext, T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a durable step using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">step(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html#STEP" class="member-name-link">STEP</a> - Enum constant in enum class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">stepAsync(String, Class&lt;T&gt;, Function&lt;StepContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a durable step, returning a <a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that can be composed or blocked on.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync(String, Class&lt;T&gt;, Function&lt;StepContext, T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a durable step using custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)" class="member-name-link">stepAsync(String, Class&lt;T&gt;, Supplier&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync(String, Class&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">stepAsync(String, TypeToken&lt;T&gt;, Function&lt;StepContext, T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a durable step using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync(String, TypeToken&lt;T&gt;, Function&lt;StepContext, T&gt;, StepConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync(String, TypeToken&lt;T&gt;, Function&lt;StepContext, T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a durable step using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">stepAsync(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync(String, TypeToken&lt;T&gt;, Supplier&lt;T&gt;, StepConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html#stepConfig()" class="member-name-link">stepConfig()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></dt>
    +<dd>
    +<div class="block">Returns the step configuration for the composite operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html#stepConfig(software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepConfig(StepConfig)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the step configuration for the composite operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/StepContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">StepContext</a> - Interface in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a> - Class in <a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></dt>
    +<dd>
    +<div class="block">Context available inside a step operation's user function.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/StepContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)" class="member-name-link">StepContextImpl(ExecutionManager, DurableConfig, Context, String, String, int)</a> - Constructor for class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></dt>
    +<dd>
    +<div class="block">Creates a new StepContext instance for use in step operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Base exception for step operation failures.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)" class="member-name-link">StepException(Operation, ErrorObject, String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">StepFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepFailedException.html" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/StepInterruptedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">StepInterruptedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation(OperationIdentifier, Function&lt;StepContext, T&gt;, TypeToken&lt;T&gt;, StepConfig, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#steps()" class="member-name-link">steps()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#steps()" class="member-name-link">steps()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepSemantics.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a> - Enum Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Delivery semantics for step operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#stopChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">stopChainedInvoke(String, ErrorObject)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Stops a chained invoke operation with the given error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#stopped(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">stopped(ErrorObject)</a> - Static method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#stopPolling(T)" class="member-name-link">stopPolling(T)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Creates a result indicating the condition is met and polling should stop.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#subType()" class="member-name-link">subType()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/OperationIdentifier.html#param-subType"><code>subType</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#succeeded()" class="member-name-link">succeeded()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#succeeded()" class="member-name-link">succeeded()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns results from items that succeeded (includes null results from successful items).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#succeeded()" class="member-name-link">succeeded()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#succeeded(java.lang.String)" class="member-name-link">succeeded(String)</a> - Static method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#succeeded(T)" class="member-name-link">succeeded(T)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Creates a successful result item.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#SUCCEEDED" class="member-name-link">SUCCEEDED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html#SUCCEEDED" class="member-name-link">SUCCEEDED</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#success()" class="member-name-link">success()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>success</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#success(java.lang.String)" class="member-name-link">success(String)</a> - Static method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Creates a successful output with the given serialized result.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#suppressReplayLogs()" class="member-name-link">suppressReplayLogs()</a> - Method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>suppressReplayLogs</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#suspendExecution()" class="member-name-link">suspendExecution()</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Suspends the execution by completing the execution exception future with a <a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a> - Exception in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Exception thrown to suspend execution during wait operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html#%3Cinit%3E()" class="member-name-link">SuspendExecutionException()</a> - Constructor for exception software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<h2 class="title" id="I:T">T</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#tenantId()" class="member-name-link">tenantId()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html#tenantId(java.lang.String)" class="member-name-link">tenantId(String)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the tenant ID for the invoke operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ExecutionManager.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution(UnrecoverableDurableExecutionException)</a> - Method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></dt>
    +<dd>
    +<div class="block">Terminates the execution immediately with an unrecoverable error.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution(UnrecoverableDurableExecutionException)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Terminates the execution with the given exception.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)" class="member-name-link">terminateExecutionWithIllegalDurableOperationException(String)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Terminates the execution with an <a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception"><code>IllegalDurableOperationException</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestOperation</a> - Class in <a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></dt>
    +<dd>
    +<div class="block">Wrapper for AWS SDK Operation providing convenient access methods.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.util.List,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation(Operation, List&lt;Event&gt;, SerDes)</a> - Constructor for class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestOperation.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation(Operation, SerDes)</a> - Constructor for class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="software/amazon/lambda/durable/testing/TestResult.html" title="type parameter in TestResult">O</a>&gt; - Class in <a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></dt>
    +<dd>
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/TestResult.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult(ExecutionStatus, String, ErrorObject, List&lt;TestOperation&gt;, List&lt;Event&gt;, TypeToken&lt;O&gt;, SerDes)</a> - Constructor for class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ThreadContext</a> - Record Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Holds the current thread's execution context.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#%3Cinit%3E(java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">ThreadContext(String, ThreadType)</a> - Constructor for record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>ThreadContext</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#threadId()" class="member-name-link">threadId()</a> - Method in record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>threadId</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#threadType()" class="member-name-link">threadType()</a> - Method in record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>threadType</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a> - Enum Class in <a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></dt>
    +<dd>
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#threshold()" class="member-name-link">threshold()</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>threshold</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#timedout()" class="member-name-link">timedout()</a> - Static method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html#timeout()" class="member-name-link">timeout()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dt>
    +<dd>
    +<div class="block">Returns the maximum duration to wait for the callback to complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html#timeout(java.time.Duration)" class="member-name-link">timeout(Duration)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the maximum duration to wait for the callback to complete before timing out.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#timeoutCallback(java.lang.String)" class="member-name-link">timeoutCallback(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Timeout a callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#timeoutChainedInvoke(java.lang.String)" class="member-name-link">timeoutChainedInvoke(String)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Marks a chained invoke operation as timed out.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#timeoutSeconds()" class="member-name-link">timeoutSeconds()</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>timeoutSeconds</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CallbackConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dt>
    +<dd>
    +<div class="block">Creates a new builder pre-populated with this config's values.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/InvokeConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/MapConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></dt>
    +<dd>
    +<div class="block">Creates a builder pre-populated with this instance's values.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html#toBuilder()" class="member-name-link">toBuilder()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></dt>
    +<dd>
    +<div class="block">Returns a new builder initialized with the values from this config.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#toleratedFailureCount()" class="member-name-link">toleratedFailureCount()</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>toleratedFailureCount</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#toleratedFailureCount(int)" class="member-name-link">toleratedFailureCount(int)</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Complete when more than the specified number of failures have occurred.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#toleratedFailurePercentage()" class="member-name-link">toleratedFailurePercentage()</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>toleratedFailurePercentage</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#toleratedFailurePercentage(double)" class="member-name-link">toleratedFailurePercentage(double)</a> - Static method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#toleratedFailures()" class="member-name-link">toleratedFailures()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>toleratedFailures</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/CompletionConfig.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadContext.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html#toString()" class="member-name-link">toString()</a> - Method in enum class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#toString()" class="member-name-link">toString()</a> - Method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionInput.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#toString()" class="member-name-link">toString()</a> - Method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapError.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationIdentifier.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#toString()" class="member-name-link">toString()</a> - Method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ParallelResult.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/RetryDecision.html#toString()" class="member-name-link">toString()</a> - Method in class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/OperationResult.html#toString()" class="member-name-link">toString()</a> - Method in record class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></dt>
    +<dd>
    +<div class="block">Returns a string representation of this record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#toString()" class="member-name-link">toString()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html#totalOperations()" class="member-name-link">totalOperations()</a> - Method in record class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>totalOperations</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html#totalProcessed()" class="member-name-link">totalProcessed()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>totalProcessed</code> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult(DurableExecutionOutput, TypeToken&lt;O&gt;, SerDes)</a> - Method in class software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></dt>
    +<dd>
    +<div class="block">Build TestResult from current state.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#trace(java.lang.String,java.lang.Object...)" class="member-name-link">trace(String, Object...)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html" class="type-name-link" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="software/amazon/lambda/durable/TypeToken.html" title="type parameter in TypeToken">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></dt>
    +<dd>
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/TypeToken.html#%3Cinit%3E()" class="member-name-link">TypeToken()</a> - Constructor for class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></dt>
    +<dd>
    +<div class="block">Constructs a new TypeToken.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:U">U</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">UnrecoverableDurableExecutionException(ErrorObject)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ExceptionHelper.html#unwrapCompletableFuture(java.lang.Throwable)" class="member-name-link">unwrapCompletableFuture(Throwable)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></dt>
    +<dd>
    +<div class="block">unwrap the exception that is wrapped by CompletionException</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#userAge" class="member-name-link">userAge</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html#userId" class="member-name-link">userId</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html#userId" class="member-name-link">userId</a> - Variable in class software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html#userId()" class="member-name-link">userId()</a> - Method in record class software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <code>userId</code> record component.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:V">V</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.html#validateConfiguration()" class="member-name-link">validateConfiguration()</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateDuration(java.time.Duration,java.lang.String)" class="member-name-link">validateDuration(Duration, String)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>
    +<div class="block">Validates that a duration is at least 1 second.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateOperationName(java.lang.String)" class="member-name-link">validateOperationName(String)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateOperationName(java.lang.String,int)" class="member-name-link">validateOperationName(String, int)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateOptionalDuration(java.time.Duration,java.lang.String)" class="member-name-link">validateOptionalDuration(Duration, String)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>
    +<div class="block">Validates that an optional duration (if provided) is at least 1 second.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateOptionalPositiveInteger(java.lang.Integer,java.lang.String)" class="member-name-link">validateOptionalPositiveInteger(Integer, String)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>
    +<div class="block">Validates that an optional integer value (if provided) is positive (greater than 0).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validateOrderedCollection(java.util.Collection)" class="member-name-link">validateOrderedCollection(Collection&lt;?&gt;)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>
    +<div class="block">Validates that a collection has deterministic iteration order.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/util/ParameterValidator.html#validatePositiveInteger(java.lang.Integer,java.lang.String)" class="member-name-link">validatePositiveInteger(Integer, String)</a> - Static method in class software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></dt>
    +<dd>
    +<div class="block">Validates that an integer value is positive (greater than 0).</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">validateReplay(Operation)</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Validates that current operation matches checkpointed operation during replay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#value()" class="member-name-link">value()</a> - Method in record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Returns the value of the <a href="./software/amazon/lambda/durable/model/WaitForConditionResult.html#param-value"><code>value</code></a> record component.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepSemantics.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/StepSemantics.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/ThreadType.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/ExecutionStatus.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/JitterStrategy.html#values()" class="member-name-link">values()</a> - Static method in enum class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +</dl>
    +<h2 class="title" id="I:W">W</h2>
    +<dl class="index">
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#wait(java.lang.String,java.time.Duration)" class="member-name-link">wait(String, Duration)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Suspends execution for the specified duration without consuming compute resources.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#WAIT_FOR_CALLBACK" class="member-name-link">WAIT_FOR_CALLBACK</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/OperationSubType.html#WAIT_FOR_CONDITION" class="member-name-link">WAIT_FOR_CONDITION</a> - Enum constant in enum class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync(String, Duration)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync(String, Duration)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating non-blocking wait with waitAsync().</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html#%3Cinit%3E()" class="member-name-link">WaitAsyncExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html#%3Cinit%3E()" class="member-name-link">WaitAtLeastExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html#%3Cinit%3E()" class="member-name-link">WaitAtLeastInProcessExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating step execution with wait operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitExample.html#%3Cinit%3E()" class="member-name-link">WaitExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallback(String, Class&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a submitter function and waits for an external callback, blocking until the callback completes.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback(String, Class&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;, WaitForCallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a submitter and waits for an external callback with custom configuration, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallback(String, TypeToken&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback(String, TypeToken&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;, WaitForCallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync(String, Class&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync(String, Class&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;, WaitForCallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync(String, TypeToken&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync(String, TypeToken&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;, WaitForCallbackConfig)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync(String, TypeToken&lt;T&gt;, BiConsumer&lt;String, StepContext&gt;, WaitForCallbackConfig)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a> - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Builder for <a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a> - Class in <a href="software/amazon/lambda/durable/examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html#%3Cinit%3E()" class="member-name-link">WaitForCallbackFailedExample()</a> - Constructor for class software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForCondition(String, Class&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Polls a condition function until it signals done, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition(String, Class&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, WaitForConditionConfig&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForCondition(String, TypeToken&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Polls a condition function until it signals done, using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition(String, TypeToken&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, WaitForConditionConfig&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Polls a condition function until it signals done, using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync(String, Class&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync(String, Class&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, WaitForConditionConfig&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync(String, TypeToken&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync(String, TypeToken&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, WaitForConditionConfig&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync(String, TypeToken&lt;T&gt;, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, WaitForConditionConfig&lt;T&gt;)</a> - Method in interface software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dt>
    +<dd>
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="software/amazon/lambda/durable/TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a> - Class in <a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></dt>
    +<dd>
    +<div class="block">Example demonstrating the waitForCondition operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html#%3Cinit%3E()" class="member-name-link">WaitForConditionExample()</a> - Constructor for class software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a> - Exception in <a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></dt>
    +<dd>
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WaitForConditionFailedException(String)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">WaitForConditionFailedException(Operation)</a> - Constructor for exception software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt; - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation(String, String, BiFunction&lt;T, StepContext, WaitForConditionResult&lt;T&gt;&gt;, TypeToken&lt;T&gt;, WaitForConditionConfig&lt;T&gt;, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a>&gt; - Record Class in <a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></dt>
    +<dd>
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/model/WaitForConditionResult.html#%3Cinit%3E(T,boolean)" class="member-name-link">WaitForConditionResult(T, boolean)</a> - Constructor for record class software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></dt>
    +<dd>
    +<div class="block">Creates an instance of a <code>WaitForConditionResult</code> record class.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="type parameter in WaitForConditionWaitStrategy">T</a>&gt; - Interface in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html#waitForOperationCompletion()" class="member-name-link">waitForOperationCompletion()</a> - Method in class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></dt>
    +<dd>
    +<div class="block">Waits for the operation to complete.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitOperation</a> - Class in <a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></dt>
    +<dd>
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/operation/WaitOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitOperation(OperationIdentifier, Duration, DurableContextImpl)</a> - Constructor for class software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Factory class for creating common <a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> implementations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.html#%3Cinit%3E()" class="member-name-link">WaitStrategies()</a> - Constructor for class software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a> - Class in <a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></dt>
    +<dd>
    +<div class="block">Preset wait strategies for common use cases.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html#waitStrategy()" class="member-name-link">waitStrategy()</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></dt>
    +<dd>
    +<div class="block">Returns the wait strategy that controls polling behavior.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html#waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)" class="member-name-link">waitStrategy(WaitForConditionWaitStrategy&lt;T&gt;)</a> - Method in class software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the wait strategy for the waitForCondition operation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/DurableLogger.html#warn(java.lang.String,java.lang.Object...)" class="member-name-link">warn(String, Object...)</a> - Method in class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withCheckpointDelay(java.time.Duration)" class="member-name-link">withCheckpointDelay(Duration)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets how often the SDK checkpoints updates to backend.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#withDurableConfig(software.amazon.lambda.durable.DurableConfig)" class="member-name-link">withDurableConfig(DurableConfig)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Overrides the DurableConfig for this test runner.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)" class="member-name-link">withDurableExecutionClient(DurableExecutionClient)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom DurableExecutionClient.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withExecutorService(java.util.concurrent.ExecutorService)" class="member-name-link">withExecutorService(ExecutorService)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom ExecutorService for running user-defined operations.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#withInvocationType(software.amazon.awssdk.services.lambda.model.InvocationType)" class="member-name-link">withInvocationType(InvocationType)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns a new runner with the specified Lambda invocation type.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#withLambdaClient(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">withLambdaClient(LambdaClient)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns a new runner with the specified lambda client.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)" class="member-name-link">withLambdaClientBuilder(LambdaClientBuilder)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom LambdaClient for production use.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)" class="member-name-link">withLoggerConfig(LoggerConfig)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom LoggerConfig.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#withOutputType(java.lang.Class)" class="member-name-link">withOutputType(Class&lt;O&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Overrides the output type for this test runner.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html#withOutputType(software.amazon.lambda.durable.TypeToken)" class="member-name-link">withOutputType(TypeToken&lt;O&gt;)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Overrides the output type for this test runner.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)" class="member-name-link">withPollingStrategy(PollingStrategy)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets the polling strategy.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#withPollInterval(java.time.Duration)" class="member-name-link">withPollInterval(Duration)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns a new runner with the specified poll interval between history checks.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/logging/LoggerConfig.html#withReplayLogging()" class="member-name-link">withReplayLogging()</a> - Static method in record class software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></dt>
    +<dd>
    +<div class="block">Configuration that allows logs during replay.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/DurableConfig.Builder.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes(SerDes)</a> - Method in class software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></dt>
    +<dd>
    +<div class="block">Sets a custom SerDes implementation.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes(SerDes)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html#withTimeout(java.time.Duration)" class="member-name-link">withTimeout(Duration)</a> - Method in class software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></dt>
    +<dd>
    +<div class="block">Returns a new runner with the specified maximum wait time for execution completion.</div>
    +</dd>
    +<dt><a href="software/amazon/lambda/durable/execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap(TypeToken&lt;I&gt;, BiFunction&lt;I, DurableContext, O&gt;, DurableConfig)</a> - Static method in class software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/DurableExecutor.html" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></dt>
    +<dd>
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</dd>
    +</dl>
    +<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="serialized-form.html">Serialized&nbsp;Form</a></main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/index.html b/javadoc/index.html
    new file mode 100644
    index 000000000..6c15a7c56
    --- /dev/null
    +++ b/javadoc/index.html
    @@ -0,0 +1,118 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Overview (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="package index">
    +<meta name="generator" content="javadoc/PackageIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li class="nav-bar-cell1-rev">Overview</li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#overview">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API</h1>
    +</div>
    +<div id="all-packages-table">
    +<div class="caption"><span>Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/client/package-summary.html">software.amazon.lambda.durable.client</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/config/package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/context/package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/types/package-summary.html">software.amazon.lambda.durable.examples.types</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/logging/package-summary.html">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/model/package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/operation/package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/retry/package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/testing/package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="software/amazon/lambda/durable/util/package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +</div>
    +</div>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/jquery-ui.overrides.css b/javadoc/jquery-ui.overrides.css
    new file mode 100644
    index 000000000..facf852c2
    --- /dev/null
    +++ b/javadoc/jquery-ui.overrides.css
    @@ -0,0 +1,35 @@
    +/*
    + * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +.ui-state-active,
    +.ui-widget-content .ui-state-active,
    +.ui-widget-header .ui-state-active,
    +a.ui-button:active,
    +.ui-button:active,
    +.ui-button.ui-state-active:hover {
    +    /* Overrides the color of selection used in jQuery UI */
    +    background: #F8981D;
    +    border: 1px solid #F8981D;
    +}
    diff --git a/javadoc/legal/ADDITIONAL_LICENSE_INFO b/javadoc/legal/ADDITIONAL_LICENSE_INFO
    new file mode 100644
    index 000000000..ff700cd09
    --- /dev/null
    +++ b/javadoc/legal/ADDITIONAL_LICENSE_INFO
    @@ -0,0 +1,37 @@
    +                      ADDITIONAL INFORMATION ABOUT LICENSING
    +
    +Certain files distributed by Oracle America, Inc. and/or its affiliates are 
    +subject to the following clarification and special exception to the GPLv2, 
    +based on the GNU Project exception for its Classpath libraries, known as the 
    +GNU Classpath Exception.
    +
    +Note that Oracle includes multiple, independent programs in this software 
    +package.  Some of those programs are provided under licenses deemed 
    +incompatible with the GPLv2 by the Free Software Foundation and others. 
    +For example, the package includes programs licensed under the Apache 
    +License, Version 2.0 and may include FreeType. Such programs are licensed 
    +to you under their original licenses. 
    +
    +Oracle facilitates your further distribution of this package by adding the 
    +Classpath Exception to the necessary parts of its GPLv2 code, which permits 
    +you to use that code in combination with other independent modules not 
    +licensed under the GPLv2. However, note that this would not permit you to 
    +commingle code under an incompatible license with Oracle's GPLv2 licensed 
    +code by, for example, cutting and pasting such code into a file also 
    +containing Oracle's GPLv2 licensed code and then distributing the result. 
    +
    +Additionally, if you were to remove the Classpath Exception from any of the 
    +files to which it applies and distribute the result, you would likely be 
    +required to license some or all of the other code in that distribution under 
    +the GPLv2 as well, and since the GPLv2 is incompatible with the license terms 
    +of some items included in the distribution by Oracle, removing the Classpath 
    +Exception could therefore effectively compromise your ability to further 
    +distribute the package. 
    +
    +Failing to distribute notices associated with some files may also create 
    +unexpected legal consequences.
    + 
    +Proceed with caution and we recommend that you obtain the advice of a lawyer 
    +skilled in open source matters before removing the Classpath Exception or 
    +making modifications to this package which may subsequently be redistributed 
    +and/or involve the use of third party software.
    diff --git a/javadoc/legal/ASSEMBLY_EXCEPTION b/javadoc/legal/ASSEMBLY_EXCEPTION
    new file mode 100644
    index 000000000..065b8d902
    --- /dev/null
    +++ b/javadoc/legal/ASSEMBLY_EXCEPTION
    @@ -0,0 +1,27 @@
    +
    +OPENJDK ASSEMBLY EXCEPTION
    +
    +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
    +openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU
    +General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
    +only ("GPL2"), with the following clarification and special exception.
    +
    +    Linking this OpenJDK Code statically or dynamically with other code
    +    is making a combined work based on this library.  Thus, the terms
    +    and conditions of GPL2 cover the whole combination.
    +
    +    As a special exception, Oracle gives you permission to link this
    +    OpenJDK Code with certain code licensed by Oracle as indicated at
    +    http://openjdk.java.net/legal/exception-modules-2007-05-08.html
    +    ("Designated Exception Modules") to produce an executable,
    +    regardless of the license terms of the Designated Exception Modules,
    +    and to copy and distribute the resulting executable under GPL2,
    +    provided that the Designated Exception Modules continue to be
    +    governed by the licenses under which they were offered by Oracle.
    +
    +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
    +to build an executable that includes those portions of necessary code that
    +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
    +with the Classpath exception).  If you modify or add to the OpenJDK code,
    +that new GPL2 code may still be combined with Designated Exception Modules
    +if the new code is made subject to this exception by its copyright holder.
    diff --git a/javadoc/legal/LICENSE b/javadoc/legal/LICENSE
    new file mode 100644
    index 000000000..8b400c7ab
    --- /dev/null
    +++ b/javadoc/legal/LICENSE
    @@ -0,0 +1,347 @@
    +The GNU General Public License (GPL)
    +
    +Version 2, June 1991
    +
    +Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    +
    +Everyone is permitted to copy and distribute verbatim copies of this license
    +document, but changing it is not allowed.
    +
    +Preamble
    +
    +The licenses for most software are designed to take away your freedom to share
    +and change it.  By contrast, the GNU General Public License is intended to
    +guarantee your freedom to share and change free software--to make sure the
    +software is free for all its users.  This General Public License applies to
    +most of the Free Software Foundation's software and to any other program whose
    +authors commit to using it.  (Some other Free Software Foundation software is
    +covered by the GNU Library General Public License instead.) You can apply it to
    +your programs, too.
    +
    +When we speak of free software, we are referring to freedom, not price.  Our
    +General Public Licenses are designed to make sure that you have the freedom to
    +distribute copies of free software (and charge for this service if you wish),
    +that you receive source code or can get it if you want it, that you can change
    +the software or use pieces of it in new free programs; and that you know you
    +can do these things.
    +
    +To protect your rights, we need to make restrictions that forbid anyone to deny
    +you these rights or to ask you to surrender the rights.  These restrictions
    +translate to certain responsibilities for you if you distribute copies of the
    +software, or if you modify it.
    +
    +For example, if you distribute copies of such a program, whether gratis or for
    +a fee, you must give the recipients all the rights that you have.  You must
    +make sure that they, too, receive or can get the source code.  And you must
    +show them these terms so they know their rights.
    +
    +We protect your rights with two steps: (1) copyright the software, and (2)
    +offer you this license which gives you legal permission to copy, distribute
    +and/or modify the software.
    +
    +Also, for each author's protection and ours, we want to make certain that
    +everyone understands that there is no warranty for this free software.  If the
    +software is modified by someone else and passed on, we want its recipients to
    +know that what they have is not the original, so that any problems introduced
    +by others will not reflect on the original authors' reputations.
    +
    +Finally, any free program is threatened constantly by software patents.  We
    +wish to avoid the danger that redistributors of a free program will
    +individually obtain patent licenses, in effect making the program proprietary.
    +To prevent this, we have made it clear that any patent must be licensed for
    +everyone's free use or not licensed at all.
    +
    +The precise terms and conditions for copying, distribution and modification
    +follow.
    +
    +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +0. This License applies to any program or other work which contains a notice
    +placed by the copyright holder saying it may be distributed under the terms of
    +this General Public License.  The "Program", below, refers to any such program
    +or work, and a "work based on the Program" means either the Program or any
    +derivative work under copyright law: that is to say, a work containing the
    +Program or a portion of it, either verbatim or with modifications and/or
    +translated into another language.  (Hereinafter, translation is included
    +without limitation in the term "modification".) Each licensee is addressed as
    +"you".
    +
    +Activities other than copying, distribution and modification are not covered by
    +this License; they are outside its scope.  The act of running the Program is
    +not restricted, and the output from the Program is covered only if its contents
    +constitute a work based on the Program (independent of having been made by
    +running the Program).  Whether that is true depends on what the Program does.
    +
    +1. You may copy and distribute verbatim copies of the Program's source code as
    +you receive it, in any medium, provided that you conspicuously and
    +appropriately publish on each copy an appropriate copyright notice and
    +disclaimer of warranty; keep intact all the notices that refer to this License
    +and to the absence of any warranty; and give any other recipients of the
    +Program a copy of this License along with the Program.
    +
    +You may charge a fee for the physical act of transferring a copy, and you may
    +at your option offer warranty protection in exchange for a fee.
    +
    +2. You may modify your copy or copies of the Program or any portion of it, thus
    +forming a work based on the Program, and copy and distribute such modifications
    +or work under the terms of Section 1 above, provided that you also meet all of
    +these conditions:
    +
    +    a) You must cause the modified files to carry prominent notices stating
    +    that you changed the files and the date of any change.
    +
    +    b) You must cause any work that you distribute or publish, that in whole or
    +    in part contains or is derived from the Program or any part thereof, to be
    +    licensed as a whole at no charge to all third parties under the terms of
    +    this License.
    +
    +    c) If the modified program normally reads commands interactively when run,
    +    you must cause it, when started running for such interactive use in the
    +    most ordinary way, to print or display an announcement including an
    +    appropriate copyright notice and a notice that there is no warranty (or
    +    else, saying that you provide a warranty) and that users may redistribute
    +    the program under these conditions, and telling the user how to view a copy
    +    of this License.  (Exception: if the Program itself is interactive but does
    +    not normally print such an announcement, your work based on the Program is
    +    not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole.  If identifiable
    +sections of that work are not derived from the Program, and can be reasonably
    +considered independent and separate works in themselves, then this License, and
    +its terms, do not apply to those sections when you distribute them as separate
    +works.  But when you distribute the same sections as part of a whole which is a
    +work based on the Program, the distribution of the whole must be on the terms
    +of this License, whose permissions for other licensees extend to the entire
    +whole, and thus to each and every part regardless of who wrote it.
    +
    +Thus, it is not the intent of this section to claim rights or contest your
    +rights to work written entirely by you; rather, the intent is to exercise the
    +right to control the distribution of derivative or collective works based on
    +the Program.
    +
    +In addition, mere aggregation of another work not based on the Program with the
    +Program (or with a work based on the Program) on a volume of a storage or
    +distribution medium does not bring the other work under the scope of this
    +License.
    +
    +3. You may copy and distribute the Program (or a work based on it, under
    +Section 2) in object code or executable form under the terms of Sections 1 and
    +2 above provided that you also do one of the following:
    +
    +    a) Accompany it with the complete corresponding machine-readable source
    +    code, which must be distributed under the terms of Sections 1 and 2 above
    +    on a medium customarily used for software interchange; or,
    +
    +    b) Accompany it with a written offer, valid for at least three years, to
    +    give any third party, for a charge no more than your cost of physically
    +    performing source distribution, a complete machine-readable copy of the
    +    corresponding source code, to be distributed under the terms of Sections 1
    +    and 2 above on a medium customarily used for software interchange; or,
    +
    +    c) Accompany it with the information you received as to the offer to
    +    distribute corresponding source code.  (This alternative is allowed only
    +    for noncommercial distribution and only if you received the program in
    +    object code or executable form with such an offer, in accord with
    +    Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for making
    +modifications to it.  For an executable work, complete source code means all
    +the source code for all modules it contains, plus any associated interface
    +definition files, plus the scripts used to control compilation and installation
    +of the executable.  However, as a special exception, the source code
    +distributed need not include anything that is normally distributed (in either
    +source or binary form) with the major components (compiler, kernel, and so on)
    +of the operating system on which the executable runs, unless that component
    +itself accompanies the executable.
    +
    +If distribution of executable or object code is made by offering access to copy
    +from a designated place, then offering equivalent access to copy the source
    +code from the same place counts as distribution of the source code, even though
    +third parties are not compelled to copy the source along with the object code.
    +
    +4. You may not copy, modify, sublicense, or distribute the Program except as
    +expressly provided under this License.  Any attempt otherwise to copy, modify,
    +sublicense or distribute the Program is void, and will automatically terminate
    +your rights under this License.  However, parties who have received copies, or
    +rights, from you under this License will not have their licenses terminated so
    +long as such parties remain in full compliance.
    +
    +5. You are not required to accept this License, since you have not signed it.
    +However, nothing else grants you permission to modify or distribute the Program
    +or its derivative works.  These actions are prohibited by law if you do not
    +accept this License.  Therefore, by modifying or distributing the Program (or
    +any work based on the Program), you indicate your acceptance of this License to
    +do so, and all its terms and conditions for copying, distributing or modifying
    +the Program or works based on it.
    +
    +6. Each time you redistribute the Program (or any work based on the Program),
    +the recipient automatically receives a license from the original licensor to
    +copy, distribute or modify the Program subject to these terms and conditions.
    +You may not impose any further restrictions on the recipients' exercise of the
    +rights granted herein.  You are not responsible for enforcing compliance by
    +third parties to this License.
    +
    +7. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues), conditions
    +are imposed on you (whether by court order, agreement or otherwise) that
    +contradict the conditions of this License, they do not excuse you from the
    +conditions of this License.  If you cannot distribute so as to satisfy
    +simultaneously your obligations under this License and any other pertinent
    +obligations, then as a consequence you may not distribute the Program at all.
    +For example, if a patent license would not permit royalty-free redistribution
    +of the Program by all those who receive copies directly or indirectly through
    +you, then the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Program.
    +
    +If any portion of this section is held invalid or unenforceable under any
    +particular circumstance, the balance of the section is intended to apply and
    +the section as a whole is intended to apply in other circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any patents or
    +other property right claims or to contest validity of any such claims; this
    +section has the sole purpose of protecting the integrity of the free software
    +distribution system, which is implemented by public license practices.  Many
    +people have made generous contributions to the wide range of software
    +distributed through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing to
    +distribute software through any other system and a licensee cannot impose that
    +choice.
    +
    +This section is intended to make thoroughly clear what is believed to be a
    +consequence of the rest of this License.
    +
    +8. If the distribution and/or use of the Program is restricted in certain
    +countries either by patents or by copyrighted interfaces, the original
    +copyright holder who places the Program under this License may add an explicit
    +geographical distribution limitation excluding those countries, so that
    +distribution is permitted only in or among countries not thus excluded.  In
    +such case, this License incorporates the limitation as if written in the body
    +of this License.
    +
    +9. The Free Software Foundation may publish revised and/or new versions of the
    +General Public License from time to time.  Such new versions will be similar in
    +spirit to the present version, but may differ in detail to address new problems
    +or concerns.
    +
    +Each version is given a distinguishing version number.  If the Program
    +specifies a version number of this License which applies to it and "any later
    +version", you have the option of following the terms and conditions either of
    +that version or of any later version published by the Free Software Foundation.
    +If the Program does not specify a version number of this License, you may
    +choose any version ever published by the Free Software Foundation.
    +
    +10. If you wish to incorporate parts of the Program into other free programs
    +whose distribution conditions are different, write to the author to ask for
    +permission.  For software which is copyrighted by the Free Software Foundation,
    +write to the Free Software Foundation; we sometimes make exceptions for this.
    +Our decision will be guided by the two goals of preserving the free status of
    +all derivatives of our free software and of promoting the sharing and reuse of
    +software generally.
    +
    +NO WARRANTY
    +
    +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
    +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
    +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
    +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
    +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    +FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
    +PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
    +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
    +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
    +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
    +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
    +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
    +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
    +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    +
    +END OF TERMS AND CONDITIONS
    +
    +How to Apply These Terms to Your New Programs
    +
    +If you develop a new program, and you want it to be of the greatest possible
    +use to the public, the best way to achieve this is to make it free software
    +which everyone can redistribute and change under these terms.
    +
    +To do so, attach the following notices to the program.  It is safest to attach
    +them to the start of each source file to most effectively convey the exclusion
    +of warranty; and each file should have at least the "copyright" line and a
    +pointer to where the full notice is found.
    +
    +    One line to give the program's name and a brief idea of what it does.
    +
    +    Copyright (C) <year> <name of author>
    +
    +    This program is free software; you can redistribute it and/or modify it
    +    under the terms of the GNU General Public License as published by the Free
    +    Software Foundation; either version 2 of the License, or (at your option)
    +    any later version.
    +
    +    This program is distributed in the hope that it will be useful, but WITHOUT
    +    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
    +    more details.
    +
    +    You should have received a copy of the GNU General Public License along
    +    with this program; if not, write to the Free Software Foundation, Inc.,
    +    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +If the program is interactive, make it output a short notice like this when it
    +starts in an interactive mode:
    +
    +    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
    +    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
    +    software, and you are welcome to redistribute it under certain conditions;
    +    type 'show c' for details.
    +
    +The hypothetical commands 'show w' and 'show c' should show the appropriate
    +parts of the General Public License.  Of course, the commands you use may be
    +called something other than 'show w' and 'show c'; they could even be
    +mouse-clicks or menu items--whatever suits your program.
    +
    +You should also get your employer (if you work as a programmer) or your school,
    +if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
    +is a sample; alter the names:
    +
    +    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    +    'Gnomovision' (which makes passes at compilers) written by James Hacker.
    +
    +    signature of Ty Coon, 1 April 1989
    +
    +    Ty Coon, President of Vice
    +
    +This General Public License does not permit incorporating your program into
    +proprietary programs.  If your program is a subroutine library, you may
    +consider it more useful to permit linking proprietary applications with the
    +library.  If this is what you want to do, use the GNU Library General Public
    +License instead of this License.
    +
    +
    +"CLASSPATH" EXCEPTION TO THE GPL
    +
    +Certain source files distributed by Oracle America and/or its affiliates are
    +subject to the following clarification and special exception to the GPL, but
    +only where Oracle has expressly included in the particular source file's header
    +the words "Oracle designates this particular file as subject to the "Classpath"
    +exception as provided by Oracle in the LICENSE file that accompanied this code."
    +
    +    Linking this library statically or dynamically with other modules is making
    +    a combined work based on this library.  Thus, the terms and conditions of
    +    the GNU General Public License cover the whole combination.
    +
    +    As a special exception, the copyright holders of this library give you
    +    permission to link this library with independent modules to produce an
    +    executable, regardless of the license terms of these independent modules,
    +    and to copy and distribute the resulting executable under terms of your
    +    choice, provided that you also meet, for each linked independent module,
    +    the terms and conditions of the license of that module.  An independent
    +    module is a module which is not derived from or based on this library.  If
    +    you modify this library, you may extend this exception to your version of
    +    the library, but you are not obligated to do so.  If you do not wish to do
    +    so, delete this exception statement from your version.
    diff --git a/javadoc/legal/jquery.md b/javadoc/legal/jquery.md
    new file mode 100644
    index 000000000..a763ec6f1
    --- /dev/null
    +++ b/javadoc/legal/jquery.md
    @@ -0,0 +1,26 @@
    +## jQuery v3.7.1
    +
    +### jQuery License
    +```
    +jQuery v 3.7.1
    +Copyright OpenJS Foundation and other contributors, https://openjsf.org/
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +```
    diff --git a/javadoc/legal/jqueryUI.md b/javadoc/legal/jqueryUI.md
    new file mode 100644
    index 000000000..46bfbaa5c
    --- /dev/null
    +++ b/javadoc/legal/jqueryUI.md
    @@ -0,0 +1,49 @@
    +## jQuery UI v1.14.1
    +
    +### jQuery UI License
    +```
    +Copyright OpenJS Foundation and other contributors, https://openjsf.org/
    +
    +This software consists of voluntary contributions made by many
    +individuals. For exact contribution history, see the revision history
    +available at https://github.com/jquery/jquery-ui
    +
    +The following license applies to all parts of this software except as
    +documented below:
    +
    +====
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +
    +====
    +
    +Copyright and related rights for sample code are waived via CC0. Sample
    +code is defined as all source code contained within the demos directory.
    +
    +CC0: http://creativecommons.org/publicdomain/zero/1.0/
    +
    +====
    +
    +All files located in the node_modules and external directories are
    +externally maintained libraries used by this software which have their
    +own licenses; we recommend you read them, as their terms may differ from
    +the terms above.
    +
    +```
    diff --git a/javadoc/member-search-index.js b/javadoc/member-search-index.js
    new file mode 100644
    index 000000000..c231f6383
    --- /dev/null
    +++ b/javadoc/member-search-index.js
    @@ -0,0 +1 @@
    +memberSearchIndex = [{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"advanceTime()"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"advanceTime()"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"ALL_COMPLETED"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"allCompleted()"},{"p":"software.amazon.lambda.durable","c":"DurableFuture","l":"allOf(DurableFuture<T>...)","u":"allOf(software.amazon.lambda.durable.DurableFuture...)"},{"p":"software.amazon.lambda.durable","c":"DurableFuture","l":"allOf(List<DurableFuture<T>>)","u":"allOf(java.util.List)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"allSucceeded()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"allSuccessful()"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"amount()"},{"p":"software.amazon.lambda.durable","c":"DurableFuture","l":"anyOf(DurableFuture<?>...)","u":"anyOf(software.amazon.lambda.durable.DurableFuture...)"},{"p":"software.amazon.lambda.durable.execution","c":"ApiRequestDelayedBatcher","l":"ApiRequestDelayedBatcher(int, int, Function<T, Integer>, Consumer<List<T>>)","u":"%3Cinit%3E(int,int,java.util.function.Function,java.util.function.Consumer)"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"apply(double)"},{"p":"software.amazon.lambda.durable","c":"DurableContext.MapFunction","l":"apply(I, int, DurableContext)","u":"apply(I,int,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"ApprovalRequest(String, double)","u":"%3Cinit%3E(java.lang.String,double)"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"ApprovalRequest(String, double, Integer)","u":"%3Cinit%3E(java.lang.String,double,java.lang.Integer)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"AsyncExecution(String, LambdaClient, TypeToken<O>, SerDes, Duration, Duration)","u":"%3Cinit%3E(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)"},{"p":"software.amazon.lambda.durable.config","c":"StepSemantics","l":"AT_LEAST_ONCE_PER_RETRY"},{"p":"software.amazon.lambda.durable.config","c":"StepSemantics","l":"AT_MOST_ONCE_PER_RETRY"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies","l":"at(Instant)","u":"at(java.time.Instant)"},{"p":"software.amazon.lambda.durable.serde","c":"AwsSdkV2Module","l":"AwsSdkV2Module()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"BaseContextImpl(ExecutionManager, DurableConfig, Context, String, String, ThreadType)","u":"%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"BaseDurableOperation(OperationIdentifier, DurableContextImpl, BaseDurableOperation)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)"},{"p":"software.amazon.lambda.durable","c":"ParallelDurableFuture","l":"branch(String, Class<T>, Function<DurableContext, T>)","u":"branch(java.lang.String,java.lang.Class,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"ParallelDurableFuture","l":"branch(String, Class<T>, Function<DurableContext, T>, ParallelBranchConfig)","u":"branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)"},{"p":"software.amazon.lambda.durable","c":"ParallelDurableFuture","l":"branch(String, TypeToken<T>, Function<DurableContext, T>)","u":"branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"branch(String, TypeToken<T>, Function<DurableContext, T>, ParallelBranchConfig)","u":"branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)"},{"p":"software.amazon.lambda.durable","c":"ParallelDurableFuture","l":"branch(String, TypeToken<T>, Function<DurableContext, T>, ParallelBranchConfig)","u":"branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"build()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig","l":"builder()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"builder()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig.Builder","l":"Builder()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"Builder()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig.Builder","l":"Builder(Duration, Duration, SerDes)","u":"%3Cinit%3E(java.time.Duration,java.time.Duration,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig.Builder","l":"Builder(RetryStrategy, StepSemantics, SerDes)","u":"%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig.Builder","l":"Builder(SerDes)","u":"%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig.Builder","l":"Builder(SerDes)","u":"%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"buildErrorObject(Throwable, SerDes)","u":"buildErrorObject(java.lang.Throwable,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig","l":"callbackConfig()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig.Builder","l":"callbackConfig(CallbackConfig)","u":"callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)"},{"p":"software.amazon.lambda.durable.examples.callback","c":"CallbackExample","l":"CallbackExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackException","l":"CallbackException(Operation, String)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackException","l":"CallbackException(Operation, String, Throwable)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String,java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackFailedException","l":"CallbackFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable","c":"DurableCallbackFuture","l":"callbackId()"},{"p":"software.amazon.lambda.durable.operation","c":"CallbackOperation","l":"callbackId()"},{"p":"software.amazon.lambda.durable.operation","c":"CallbackOperation","l":"CallbackOperation(OperationIdentifier, TypeToken<T>, CallbackConfig, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackSubmitterException","l":"CallbackSubmitterException(Operation, StepException)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.exception.StepException)"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackTimeoutException","l":"CallbackTimeoutException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Output","l":"categories"},{"p":"software.amazon.lambda.durable.client","c":"DurableExecutionClient","l":"checkpoint(String, String, List<OperationUpdate>)","u":"checkpoint(java.lang.String,java.lang.String,java.util.List)"},{"p":"software.amazon.lambda.durable.client","c":"LambdaDurableFunctionsClient","l":"checkpoint(String, String, List<OperationUpdate>)","u":"checkpoint(java.lang.String,java.lang.String,java.util.List)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"checkpoint(String, String, List<OperationUpdate>)","u":"checkpoint(java.lang.String,java.lang.String,java.util.List)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"checkpointToken()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ChildContextExample","l":"ChildContextExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.exception","c":"ChildContextFailedException","l":"ChildContextFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"ChildContextOperation","l":"ChildContextOperation(OperationIdentifier, Function<DurableContext, T>, TypeToken<T>, RunInChildContextConfig, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.operation","c":"ChildContextOperation","l":"ChildContextOperation(OperationIdentifier, Function<DurableContext, T>, TypeToken<T>, RunInChildContextConfig, DurableContextImpl, ConcurrencyOperation<?>)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"close()"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"close()"},{"p":"software.amazon.lambda.durable.context","c":"StepContextImpl","l":"close()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"close()"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"close()"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"close()"},{"p":"software.amazon.lambda.durable","c":"ParallelDurableFuture","l":"close()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"completeCallback(String, OperationResult)","u":"completeCallback(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"completeCallback(String, String)","u":"completeCallback(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"completeCallback(String, String)","u":"completeCallback(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"completeChainedInvoke(String, OperationResult)","u":"completeChainedInvoke(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"completeChainedInvoke(String, String)","u":"completeChainedInvoke(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"CompletedDurableFuture","l":"CompletedDurableFuture(T)","u":"%3Cinit%3E(T)"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig","l":"completionConfig()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig","l":"completionConfig()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig.Builder","l":"completionConfig(CompletionConfig)","u":"completionConfig(software.amazon.lambda.durable.config.CompletionConfig)"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig.Builder","l":"completionConfig(CompletionConfig)","u":"completionConfig(software.amazon.lambda.durable.config.CompletionConfig)"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"CompletionConfig(Integer, Integer, Double)","u":"%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Double)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"completionFuture"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"completionReason()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"completionStatus()"},{"p":"software.amazon.lambda.durable.examples.map","c":"ComplexMapExample","l":"ComplexMapExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategy","l":"computeDelay(int)"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"ConcurrencyOperation(OperationIdentifier, TypeToken<T>, SerDes, DurableContextImpl, int, Integer, Integer)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample","l":"ConcurrentWaitForConditionExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadType","l":"CONTEXT"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"continuePolling(T)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Output","l":"counts"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(Class<I>, BiFunction<I, DurableContext, O>)","u":"create(java.lang.Class,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(Class<I>, BiFunction<I, DurableContext, O>, DurableConfig)","u":"create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(Class<I>, DurableHandler<I, O>)","u":"create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"create(String, Class<I>, Class<O>)","u":"create(java.lang.String,java.lang.Class,java.lang.Class)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"create(String, Class<I>, Class<O>, LambdaClient)","u":"create(java.lang.String,java.lang.Class,java.lang.Class,software.amazon.awssdk.services.lambda.LambdaClient)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"create(String, TypeToken<I>, TypeToken<O>)","u":"create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"create(String, TypeToken<I>, TypeToken<O>, LambdaClient)","u":"create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(TypeToken<I>, BiFunction<I, DurableContext, O>)","u":"create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(TypeToken<I>, BiFunction<I, DurableContext, O>, DurableConfig)","u":"create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"create(TypeToken<I>, DurableHandler<I, O>)","u":"create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"createCallback(String, Class<T>)","u":"createCallback(java.lang.String,java.lang.Class)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"createCallback(String, Class<T>, CallbackConfig)","u":"createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"createCallback(String, TypeToken<T>)","u":"createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"createCallback(String, TypeToken<T>, CallbackConfig)","u":"createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"createCallback(String, TypeToken<T>, CallbackConfig)","u":"createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"createChildContext(String, String)","u":"createChildContext(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable","c":"DurableHandler","l":"createConfiguration()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample","l":"createConfiguration()"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample","l":"createConfiguration()"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomPollingExample","l":"createConfiguration()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample","l":"createConfiguration()"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"createItem(String, String, Function<DurableContext, R>, TypeToken<R>, SerDes, OperationSubType, DurableContextImpl)","u":"createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"createRootContext(ExecutionManager, DurableConfig, Context)","u":"createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"createStepContext(String, String, int)","u":"createStepContext(java.lang.String,java.lang.String,int)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample","l":"CustomConfigExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"CustomData()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"CustomData(String, String, int, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomPollingExample","l":"CustomPollingExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"debug(String, Object...)","u":"debug(java.lang.String,java.lang.Object...)"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies.Presets","l":"DEFAULT"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies.Presets","l":"DEFAULT"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies.Presets","l":"DEFAULT"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"defaultConfig()"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"defaults()"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies","l":"defaultStrategy()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryDecision","l":"delay()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"deliveries()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"deregisterActiveThread(String)","u":"deregisterActiveThread(java.lang.String)"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"description()"},{"p":"software.amazon.lambda.durable.examples.map","c":"DeserializationFailedMapExample","l":"DeserializationFailedMapExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample","l":"DeserializationFailedParallelExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.step","c":"DeserializationFailureExample","l":"DeserializationFailureExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.serde","c":"DurableInputOutputSerDes","l":"deserialize(String, TypeToken<T>)","u":"deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.serde","c":"JacksonSerDes","l":"deserialize(String, TypeToken<T>)","u":"deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.serde","c":"SerDes","l":"deserialize(String, TypeToken<T>)","u":"deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"deserializeException(ErrorObject)","u":"deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"deserializeResult(String)","u":"deserializeResult(java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"deserializeStackTrace(List<String>)","u":"deserializeStackTrace(java.util.List)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"durableExecutionArn()"},{"p":"software.amazon.lambda.durable.exception","c":"DurableExecutionException","l":"DurableExecutionException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableExecutionException","l":"DurableExecutionException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableExecutionException","l":"DurableExecutionException(String, Throwable, StackTraceElement[])","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable,java.lang.StackTraceElement[])"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"DurableExecutionInput(String, String, CheckpointUpdatedExecutionState)","u":"%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"DurableExecutionOutput(ExecutionStatus, String, ErrorObject)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable","c":"DurableHandler","l":"DurableHandler()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.serde","c":"DurableInputOutputSerDes","l":"DurableInputOutputSerDes()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"DurableLogger(Logger, BaseContextImpl)","u":"%3Cinit%3E(org.slf4j.Logger,software.amazon.lambda.durable.context.BaseContextImpl)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"DurableOperationException(Operation, ErrorObject)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"DurableOperationException(Operation, ErrorObject, String)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"DurableOperationException(Operation, ErrorObject, String, StackTraceElement[], Throwable)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.StackTraceElement[],java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"DurableOperationException(Operation, ErrorObject, String, Throwable)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"emailAddress"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"empty()"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"enqueueItem(String, Function<DurableContext, R>, TypeToken<R>, SerDes, OperationSubType)","u":"enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"error()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"error()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"error()"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"error(String, Object...)","u":"error(java.lang.String,java.lang.Object...)"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"error(String, Throwable)","u":"error(java.lang.String,java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.examples.general","c":"ErrorHandlingExample","l":"ErrorHandlingExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"errorMessage()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"errorType()"},{"p":"software.amazon.lambda.durable.retry","c":"WaitForConditionWaitStrategy","l":"evaluate(T, int)","u":"evaluate(T,int)"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"ExceptionHelper()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"execute()"},{"p":"software.amazon.lambda.durable.execution","c":"DurableExecutor","l":"execute(DurableExecutionInput, Context, TypeToken<I>, BiFunction<I, DurableContext, O>, DurableConfig)","u":"execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"executeItems()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"executionManager"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"ExecutionManager(DurableExecutionInput, DurableConfig)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"executionTimeMs()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"executionTimeMs()"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies","l":"exponentialBackoff(Duration, double, JitterStrategy, Duration)","u":"exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies","l":"exponentialBackoff(int, Duration, Duration, double, JitterStrategy)","u":"exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies","l":"exponentialBackoff(int, Duration, Duration, double, JitterStrategy)","u":"exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)"},{"p":"software.amazon.lambda.durable.retry","c":"RetryDecision","l":"fail()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"failCallback(String, ErrorObject)","u":"failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"failCallback(String, ErrorObject)","u":"failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"failChainedInvoke(String, ErrorObject)","u":"failChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"FAILED"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem.Status","l":"FAILED"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"failed()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"failed()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"failed()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"failed(ErrorObject)","u":"failed(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"failed(MapResult.MapError)","u":"failed(software.amazon.lambda.durable.model.MapResult.MapError)"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"FAILURE_TOLERANCE_EXCEEDED"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"failure(ErrorObject)","u":"failure(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"faiure()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"firstSuccessful()"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies","l":"fixedDelay(Duration)","u":"fixedDelay(java.time.Duration)"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies","l":"fixedDelay(int, Duration)","u":"fixedDelay(int,java.time.Duration)"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies","l":"fixedDelay(int, Duration)","u":"fixedDelay(int,java.time.Duration)"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"FULL"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"fullName"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericInputOutputExample","l":"GenericInputOutputExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample","l":"GenericTypesExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable","c":"DurableFuture","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"CallbackOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"ChildContextOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"InvokeOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"MapOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"StepOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"WaitForConditionOperation","l":"get()"},{"p":"software.amazon.lambda.durable.operation","c":"WaitOperation","l":"get()"},{"p":"software.amazon.lambda.durable.util","c":"CompletedDurableFuture","l":"get()"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"get(Class<U>)","u":"get(java.lang.Class)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getAllEvents()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getAllOperations()"},{"p":"software.amazon.lambda.durable.context","c":"StepContextImpl","l":"getAttempt()"},{"p":"software.amazon.lambda.durable","c":"StepContext","l":"getAttempt()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getAttempt()"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"getBranches()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getCallbackDetails()"},{"p":"software.amazon.lambda.durable.exception","c":"CallbackException","l":"getCallbackId()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"getCallbackId(String)","u":"getCallbackId(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getCallbackId(String)","u":"getCallbackId(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"getCallbackId(String)","u":"getCallbackId(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getChainedInvokeDetails()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getCheckpointDelay()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getChildOperations()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"getChildOperations(String)","u":"getChildOperations(java.lang.String)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getCompletionFuture()"},{"p":"software.amazon.lambda.durable","c":"DurableHandler","l":"getConfiguration()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getContext()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getContextDetails()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getContextId()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getContextId()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getContextName()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getContextName()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"getCurrentThreadContext()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getCurrentThreadContext()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getDurableConfig()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getDurableConfig()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"getDurableExecutionArn()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getDurableExecutionClient()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getDuration()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getError()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getError()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"getError(int)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"getErrorObject()"},{"p":"software.amazon.lambda.durable.exception","c":"UnrecoverableDurableExecutionException","l":"getErrorObject()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getEvents()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getEventsForOperation(String)","u":"getEventsForOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getEventsForOperation(String)","u":"getEventsForOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getExecutionArn()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getExecutionArn()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"getExecutionArn()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getExecutionDetails()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getExecutionManager()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"getExecutionOperation()"},{"p":"software.amazon.lambda.durable.client","c":"DurableExecutionClient","l":"getExecutionState(String, String, String)","u":"getExecutionState(java.lang.String,java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.client","c":"LambdaDurableFunctionsClient","l":"getExecutionState(String, String, String)","u":"getExecutionState(java.lang.String,java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getExecutionState(String, String, String)","u":"getExecutionState(java.lang.String,java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getExecutorService()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getFailedOperations()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getHistoryEvents()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"getItem(int)"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getLambdaContext()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"getLambdaContext()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"getLogger()"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"getLogger()"},{"p":"software.amazon.lambda.durable.context","c":"StepContextImpl","l":"getLogger()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getLoggerConfig()"},{"p":"software.amazon.lambda.durable.examples.types","c":"GreetingRequest","l":"getName()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getName()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getName()"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"getOperation()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getOperation()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"getOperation(String)","u":"getOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"getOperation(String)","u":"getOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"getOperation(String)","u":"getOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getOperation(String)","u":"getOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"getOperationAndUpdateReplayState(String)","u":"getOperationAndUpdateReplayState(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getOperationByName(String)","u":"getOperationByName(java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"getOperationId()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getOperationId()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"getOperations()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getOperations()"},{"p":"software.amazon.lambda.durable.exception","c":"DurableOperationException","l":"getOperationStatus()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"getOperationUpdates()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getPollingStrategy()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getResult()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getResult(Class<T>)","u":"getResult(java.lang.Class)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"getResult(int)"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getResult(TypeToken<T>)","u":"getResult(software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getRunningUserHandler()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"getSerDes()"},{"p":"software.amazon.lambda.durable.examples.general","c":"ErrorHandlingExample.ServiceUnavailableException","l":"getServiceName()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"getStatus()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getStatus()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getStatus()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getStepDetails()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getStepResult(Class<T>)","u":"getStepResult(java.lang.Class)"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getStepResult(TypeToken<T>)","u":"getStepResult(software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getSubtype()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getSubType()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"getSucceededOperations()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"getType()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getType()"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"getType()"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"getValue()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"getWaitDetails()"},{"p":"software.amazon.lambda.durable.examples.types","c":"GreetingRequest","l":"GreetingRequest()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.types","c":"GreetingRequest","l":"GreetingRequest(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"HALF"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"handleCompletion(ConcurrencyCompletionStatus)","u":"handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)"},{"p":"software.amazon.lambda.durable.operation","c":"MapOperation","l":"handleCompletion(ConcurrencyCompletionStatus)","u":"handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"handleCompletion(ConcurrencyCompletionStatus)","u":"handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)"},{"p":"software.amazon.lambda.durable.examples.callback","c":"CallbackExample","l":"handleRequest(ApprovalRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.callback","c":"WaitForCallbackFailedExample","l":"handleRequest(ApprovalRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample","l":"handleRequest(ConcurrentWaitForConditionExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample","l":"handleRequest(DeserializationFailedParallelExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample","l":"handleRequest(GenericTypesExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ChildContextExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomPollingExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"LoggingExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"NoopExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.invoke","c":"SimpleInvokeExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.map","c":"DeserializationFailedMapExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.map","c":"SimpleMapExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.step","c":"SimpleStepExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAsyncExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAtLeastExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAtLeastInProcessExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitExample","l":"handleRequest(GreetingRequest, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable","c":"DurableHandler","l":"handleRequest(I, DurableContext)","u":"handleRequest(I,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable","c":"DurableHandler","l":"handleRequest(InputStream, OutputStream, Context)","u":"handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)"},{"p":"software.amazon.lambda.durable.examples.map","c":"ComplexMapExample","l":"handleRequest(Integer, DurableContext)","u":"handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitForConditionExample","l":"handleRequest(Integer, DurableContext)","u":"handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample","l":"handleRequest(ManyAsyncChildContextExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample","l":"handleRequest(ManyAsyncStepsExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericInputOutputExample","l":"handleRequest(Map<String, String>, DurableContext)","u":"handleRequest(java.util.Map,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"ErrorHandlingExample","l":"handleRequest(Object, DurableContext)","u":"handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.step","c":"RetryExample","l":"handleRequest(Object, DurableContext)","u":"handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.step","c":"RetryInProcessExample","l":"handleRequest(Object, DurableContext)","u":"handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample","l":"handleRequest(ParallelExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample","l":"handleRequest(ParallelFailureToleranceExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample","l":"handleRequest(ParallelWithWaitExample.Input, DurableContext)","u":"handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample","l":"handleRequest(String, DurableContext)","u":"handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.examples.step","c":"DeserializationFailureExample","l":"handleRequest(String, DurableContext)","u":"handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"hasCallback(String)","u":"hasCallback(java.lang.String)"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"hashCode()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"hashCode()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"hashCode()"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"hashCode()"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"hashCode()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"hashCode()"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"hashCode()"},{"p":"software.amazon.lambda.durable.execution","c":"OperationIdGenerator","l":"hashOperationId(String)","u":"hashOperationId(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"hasOperation(String)","u":"hasOperation(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"hasOperationsForContext(String)","u":"hasOperationsForContext(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"heartbeatCallback(String)","u":"heartbeatCallback(java.lang.String)"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig","l":"heartbeatTimeout()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig.Builder","l":"heartbeatTimeout(Duration)","u":"heartbeatTimeout(java.time.Duration)"},{"p":"software.amazon.lambda.durable.testing.cloud","c":"HistoryEventProcessor","l":"HistoryEventProcessor()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.testing.cloud","c":"HistoryPoller","l":"HistoryPoller(LambdaClient)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)"},{"p":"software.amazon.lambda.durable.exception","c":"IllegalDurableOperationException","l":"IllegalDurableOperationException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"info(String, Object...)","u":"info(java.lang.String,java.lang.Object...)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"initialExecutionState()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig","l":"initialState()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig.Builder","l":"initialState(T)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Input","l":"Input()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"Input(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"Input(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"Input(int, int, int)","u":"%3Cinit%3E(int,int,int)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample.Input","l":"Input(List<String>)","u":"%3Cinit%3E(java.util.List)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Input","l":"Input(List<String>)","u":"%3Cinit%3E(java.util.List)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"Input(List<String>, Integer, Integer)","u":"%3Cinit%3E(java.util.List,java.lang.Integer,java.lang.Integer)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Input","l":"Input(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"Input(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invoke(String, String, U, Class<T>)","u":"invoke(java.lang.String,java.lang.String,U,java.lang.Class)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invoke(String, String, U, Class<T>, InvokeConfig)","u":"invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invoke(String, String, U, TypeToken<T>)","u":"invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invoke(String, String, U, TypeToken<T>, InvokeConfig)","u":"invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invokeAsync(String, String, U, Class<T>)","u":"invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invokeAsync(String, String, U, Class<T>, InvokeConfig)","u":"invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invokeAsync(String, String, U, TypeToken<T>)","u":"invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"invokeAsync(String, String, U, TypeToken<T>, InvokeConfig)","u":"invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"invokeAsync(String, String, U, TypeToken<T>, InvokeConfig)","u":"invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"InvokeConfig(InvokeConfig.Builder)","u":"%3Cinit%3E(software.amazon.lambda.durable.config.InvokeConfig.Builder)"},{"p":"software.amazon.lambda.durable.exception","c":"InvokeException","l":"InvokeException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.exception","c":"InvokeFailedException","l":"InvokeFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"InvokeOperation","l":"InvokeOperation(OperationIdentifier, String, I, TypeToken<T>, InvokeConfig, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.exception","c":"InvokeStoppedException","l":"InvokeStoppedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.exception","c":"InvokeTimedOutException","l":"InvokeTimedOutException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"isComplete()"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"isCompleted()"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"isDone()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"isExecutionCompletedExceptionally()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"isFailed()"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"isJoined"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"isOperationCompleted()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContext","l":"isReplaying()"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"isReplaying()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"isReplaying()"},{"p":"software.amazon.lambda.durable.exception","c":"StepInterruptedException","l":"isStepInterruptedException(ErrorObject)","u":"isStepInterruptedException(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"isSucceeded()"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"isSucceeded()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"isTerminalStatus(OperationStatus)","u":"isTerminalStatus(software.amazon.awssdk.services.lambda.model.OperationStatus)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Output","l":"items"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample.Input","l":"items()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Input","l":"items()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"items()"},{"p":"software.amazon.lambda.durable.serde","c":"JacksonSerDes","l":"JacksonSerDes()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.serde","c":"JacksonSerDes","l":"JacksonSerDes(ObjectMapper)","u":"%3Cinit%3E(com.fasterxml.jackson.databind.ObjectMapper)"},{"p":"software.amazon.lambda.durable.operation","c":"ConcurrencyOperation","l":"join()"},{"p":"software.amazon.lambda.durable.client","c":"LambdaDurableFunctionsClient","l":"LambdaDurableFunctionsClient(LambdaClient)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"LocalMemoryExecutionClient()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"LoggerConfig(boolean)","u":"%3Cinit%3E(boolean)"},{"p":"software.amazon.lambda.durable.examples.general","c":"LoggingExample","l":"LoggingExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategy","l":"makeRetryDecision(Throwable, int)","u":"makeRetryDecision(java.lang.Throwable,int)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample","l":"ManyAsyncChildContextExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample","l":"ManyAsyncStepsExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"MAP"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"MAP_ITERATION"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"map(String, Collection<I>, Class<O>, DurableContext.MapFunction<I, O>)","u":"map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"map(String, Collection<I>, Class<O>, DurableContext.MapFunction<I, O>, MapConfig)","u":"map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"map(String, Collection<I>, TypeToken<O>, DurableContext.MapFunction<I, O>)","u":"map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"map(String, Collection<I>, TypeToken<O>, DurableContext.MapFunction<I, O>, MapConfig)","u":"map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"mapAsync(String, Collection<I>, Class<O>, DurableContext.MapFunction<I, O>)","u":"mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"mapAsync(String, Collection<I>, Class<O>, DurableContext.MapFunction<I, O>, MapConfig)","u":"mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"mapAsync(String, Collection<I>, TypeToken<O>, DurableContext.MapFunction<I, O>)","u":"mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"mapAsync(String, Collection<I>, TypeToken<O>, DurableContext.MapFunction<I, O>, MapConfig)","u":"mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"mapAsync(String, Collection<I>, TypeToken<O>, DurableContext.MapFunction<I, O>, MapConfig)","u":"mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"MapError(String, String, List<String>)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.util.List)"},{"p":"software.amazon.lambda.durable.exception","c":"MapIterationFailedException","l":"MapIterationFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"MapOperation","l":"MapOperation(OperationIdentifier, List<I>, DurableContext.MapFunction<I, O>, TypeToken<O>, MapConfig, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"MapResult(List<MapResult.MapResultItem<T>>, ConcurrencyCompletionStatus)","u":"%3Cinit%3E(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"MapResultItem(MapResult.MapResultItem.Status, T, MapResult.MapError)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"markAlreadyCompleted()"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"MAX_OPERATION_NAME_LENGTH"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig","l":"maxConcurrency()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig","l":"maxConcurrency()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"maxConcurrency()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig.Builder","l":"maxConcurrency(Integer)","u":"maxConcurrency(java.lang.Integer)"},{"p":"software.amazon.lambda.durable.config","c":"ParallelConfig.Builder","l":"maxConcurrency(Integer)","u":"maxConcurrency(java.lang.Integer)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"message()"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"MIN_SUCCESSFUL_REACHED"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"minSuccessful()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"minSuccessful()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"minSuccessful(int)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"multiplier()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"multiplier()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"name()"},{"p":"software.amazon.lambda.durable.execution","c":"OperationIdGenerator","l":"nextOperationId()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies.Presets","l":"NO_RETRY"},{"p":"software.amazon.lambda.durable.exception","c":"NonDeterministicExecutionException","l":"NonDeterministicExecutionException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"NONE"},{"p":"software.amazon.lambda.durable.examples.general","c":"NoopExample","l":"NoopExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"of(String, String, OperationType)","u":"of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType)"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"of(String, String, OperationType, OperationSubType)","u":"of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"of(Throwable)","u":"of(java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"onCheckpointComplete(Operation)","u":"onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"operationId()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"OperationIdentifier(String, String, OperationType, OperationSubType)","u":"%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)"},{"p":"software.amazon.lambda.durable.execution","c":"OperationIdGenerator","l":"OperationIdGenerator(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"OperationResult(OperationStatus, String, ErrorObject)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.OperationStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"operationStatus()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"operationType()"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Output","l":"Output()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"Output(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"Output(List<String>, int)","u":"%3Cinit%3E(java.util.List,int)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"Output(List<String>, int, int)","u":"%3Cinit%3E(java.util.List,int,int)"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Output","l":"Output(List<String>, Map<String, Integer>, Map<String, List<String>>)","u":"%3Cinit%3E(java.util.List,java.util.Map,java.util.Map)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"Output(long, long, long)","u":"%3Cinit%3E(long,long,long)"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"Output(long, long, long)","u":"%3Cinit%3E(long,long,long)"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"PARALLEL"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"PARALLEL_BRANCH"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"parallel(String)","u":"parallel(java.lang.String)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"parallel(String, ParallelConfig)","u":"parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"parallel(String, ParallelConfig)","u":"parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)"},{"p":"software.amazon.lambda.durable.exception","c":"ParallelBranchFailedException","l":"ParallelBranchFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample","l":"ParallelExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample","l":"ParallelFailureToleranceExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"ParallelOperation(OperationIdentifier, SerDes, DurableContextImpl, ParallelConfig)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"ParallelResult(int, int, int, ConcurrencyCompletionStatus)","u":"%3Cinit%3E(int,int,int,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample","l":"ParallelWithWaitExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"parentOperation"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"payloadSerDes()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig.Builder","l":"payloadSerDes(SerDes)","u":"payloadSerDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"PENDING"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"pending()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"pollForOperationUpdates()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"pollForOperationUpdates(Instant)","u":"pollForOperationUpdates(java.time.Instant)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"pollForOperationUpdates(String)","u":"pollForOperationUpdates(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"pollForOperationUpdates(String, Instant)","u":"pollForOperationUpdates(java.lang.String,java.time.Instant)"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies","l":"PollingStrategies()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"pollUntil(Predicate<AsyncExecution<O>>)","u":"pollUntil(java.util.function.Predicate)"},{"p":"software.amazon.lambda.durable.testing","c":"AsyncExecution","l":"pollUntilComplete()"},{"p":"software.amazon.lambda.durable.testing.cloud","c":"HistoryPoller","l":"pollUntilComplete(String, Duration, Duration)","u":"pollUntilComplete(java.lang.String,java.time.Duration,java.time.Duration)"},{"p":"software.amazon.lambda.durable.retry","c":"PollingStrategies.Presets","l":"Presets()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies.Presets","l":"Presets()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies.Presets","l":"Presets()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.testing.cloud","c":"HistoryEventProcessor","l":"processEvents(List<Event>, TypeToken<O>, SerDes)","u":"processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"registerActiveThread(String)","u":"registerActiveThread(java.lang.String)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"registerActiveThread(String)","u":"registerActiveThread(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"registerOperation(BaseDurableOperation)","u":"registerOperation(software.amazon.lambda.durable.operation.BaseDurableOperation)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"CallbackOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"ChildContextOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"InvokeOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"MapOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"StepOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"WaitForConditionOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"WaitOperation","l":"replay(Operation)","u":"replay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"replayTimeMs()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"replayTimeMs()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"reset()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"resetCheckpointToStarted(String)","u":"resetCheckpointToStarted(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"resetCheckpointToStarted(String)","u":"resetCheckpointToStarted(java.lang.String)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"result()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"result()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"result()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"result()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"result()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"results()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"results()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryDecision","l":"retry(Duration)","u":"retry(java.time.Duration)"},{"p":"software.amazon.lambda.durable.examples.step","c":"RetryExample","l":"RetryExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.step","c":"RetryInProcessExample","l":"RetryInProcessExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryStrategies","l":"RetryStrategies()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig","l":"retryStrategy()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig.Builder","l":"retryStrategy(RetryStrategy)","u":"retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"RUN_IN_CHILD_CONTEXT"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"run(I)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"run(I)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContext(String, Class<T>, Function<DurableContext, T>)","u":"runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContext(String, Class<T>, Function<DurableContext, T>, RunInChildContextConfig)","u":"runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContext(String, TypeToken<T>, Function<DurableContext, T>)","u":"runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContext(String, TypeToken<T>, Function<DurableContext, T>, RunInChildContextConfig)","u":"runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContextAsync(String, Class<T>, Function<DurableContext, T>)","u":"runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContextAsync(String, Class<T>, Function<DurableContext, T>, RunInChildContextConfig)","u":"runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContextAsync(String, TypeToken<T>, Function<DurableContext, T>)","u":"runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"runInChildContextAsync(String, TypeToken<T>, Function<DurableContext, T>, RunInChildContextConfig)","u":"runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"runInChildContextAsync(String, TypeToken<T>, Function<DurableContext, T>, RunInChildContextConfig)","u":"runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"runUntilComplete(I)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"runUntilComplete(I)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"runUntilCompleteOrSuspend(CompletableFuture<T>)","u":"runUntilCompleteOrSuspend(java.util.concurrent.CompletableFuture)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"runUserHandler(Runnable, ThreadType)","u":"runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig","l":"semantics()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig.Builder","l":"semantics(StepSemantics)","u":"semantics(software.amazon.lambda.durable.config.StepSemantics)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"sendOperationUpdate(OperationUpdate)","u":"sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"sendOperationUpdate(OperationUpdate.Builder)","u":"sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"sendOperationUpdateAsync(OperationUpdate.Builder)","u":"sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig","l":"serDes()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig.Builder","l":"serDes(SerDes)","u":"serDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.exception","c":"SerDesException","l":"SerDesException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"SerDesException","l":"SerDesException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"SerializableDurableOperation(OperationIdentifier, TypeToken<T>, SerDes, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"SerializableDurableOperation(OperationIdentifier, TypeToken<T>, SerDes, DurableContextImpl, BaseDurableOperation)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)"},{"p":"software.amazon.lambda.durable.serde","c":"DurableInputOutputSerDes","l":"serialize(Object)","u":"serialize(java.lang.Object)"},{"p":"software.amazon.lambda.durable.serde","c":"JacksonSerDes","l":"serialize(Object)","u":"serialize(java.lang.Object)"},{"p":"software.amazon.lambda.durable.serde","c":"SerDes","l":"serialize(Object)","u":"serialize(java.lang.Object)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"serializeException(Throwable)","u":"serializeException(java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.operation","c":"SerializableDurableOperation","l":"serializeResult(T)"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"serializeStackTrace(StackTraceElement[])","u":"serializeStackTrace(java.lang.StackTraceElement[])"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"services()"},{"p":"software.amazon.lambda.durable.examples.general","c":"ErrorHandlingExample.ServiceUnavailableException","l":"ServiceUnavailableException()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.general","c":"ErrorHandlingExample.ServiceUnavailableException","l":"ServiceUnavailableException(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"setCurrentThreadContext(ThreadContext)","u":"setCurrentThreadContext(software.amazon.lambda.durable.execution.ThreadContext)"},{"p":"software.amazon.lambda.durable.context","c":"BaseContextImpl","l":"setExecutionMode()"},{"p":"software.amazon.lambda.durable.examples.types","c":"GreetingRequest","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"software.amazon.lambda.durable.retry","c":"RetryDecision","l":"shouldRetry()"},{"p":"software.amazon.lambda.durable.examples.invoke","c":"SimpleInvokeExample","l":"SimpleInvokeExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.map","c":"SimpleMapExample","l":"SimpleMapExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.step","c":"SimpleStepExample","l":"SimpleStepExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"simulateFireAndForgetCheckpointLoss(String)","u":"simulateFireAndForgetCheckpointLoss(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"simulateFireAndForgetCheckpointLoss(String)","u":"simulateFireAndForgetCheckpointLoss(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"size()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"size()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem.Status","l":"SKIPPED"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"skipped()"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"sneakyThrow(Throwable)","u":"sneakyThrow(java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"stackTrace()"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"CallbackOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"ChildContextOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"InvokeOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"MapOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"ParallelOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"StepOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"WaitForConditionOperation","l":"start()"},{"p":"software.amazon.lambda.durable.operation","c":"WaitOperation","l":"start()"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"startAsync(I)"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"status()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"status()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadType","l":"STEP"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, Class<T>, Function<StepContext, T>)","u":"step(java.lang.String,java.lang.Class,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, Class<T>, Function<StepContext, T>, StepConfig)","u":"step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, Class<T>, Supplier<T>)","u":"step(java.lang.String,java.lang.Class,java.util.function.Supplier)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, Class<T>, Supplier<T>, StepConfig)","u":"step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, TypeToken<T>, Function<StepContext, T>)","u":"step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, TypeToken<T>, Function<StepContext, T>, StepConfig)","u":"step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, TypeToken<T>, Supplier<T>)","u":"step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"step(String, TypeToken<T>, Supplier<T>, StepConfig)","u":"step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, Class<T>, Function<StepContext, T>)","u":"stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, Class<T>, Function<StepContext, T>, StepConfig)","u":"stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, Class<T>, Supplier<T>)","u":"stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, Class<T>, Supplier<T>, StepConfig)","u":"stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, TypeToken<T>, Function<StepContext, T>)","u":"stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"stepAsync(String, TypeToken<T>, Function<StepContext, T>, StepConfig)","u":"stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, TypeToken<T>, Function<StepContext, T>, StepConfig)","u":"stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, TypeToken<T>, Supplier<T>)","u":"stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"stepAsync(String, TypeToken<T>, Supplier<T>, StepConfig)","u":"stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig","l":"stepConfig()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig.Builder","l":"stepConfig(StepConfig)","u":"stepConfig(software.amazon.lambda.durable.config.StepConfig)"},{"p":"software.amazon.lambda.durable.context","c":"StepContextImpl","l":"StepContextImpl(ExecutionManager, DurableConfig, Context, String, String, int)","u":"%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)"},{"p":"software.amazon.lambda.durable.exception","c":"StepException","l":"StepException(Operation, ErrorObject, String)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)"},{"p":"software.amazon.lambda.durable.exception","c":"StepFailedException","l":"StepFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.exception","c":"StepInterruptedException","l":"StepInterruptedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.operation","c":"StepOperation","l":"StepOperation(OperationIdentifier, Function<StepContext, T>, TypeToken<T>, StepConfig, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"steps()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"steps()"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"stopChainedInvoke(String, ErrorObject)","u":"stopChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"stopped(ErrorObject)","u":"stopped(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"stopPolling(T)"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"subType()"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"SUCCEEDED"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem.Status","l":"SUCCEEDED"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"succeeded()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"succeeded()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"succeeded()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"succeeded(String)","u":"succeeded(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"succeeded(T)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"success()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"success(String)","u":"success(java.lang.String)"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"suppressReplayLogs()"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"suspendExecution()"},{"p":"software.amazon.lambda.durable.execution","c":"SuspendExecutionException","l":"SuspendExecutionException()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"tenantId()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig.Builder","l":"tenantId(String)","u":"tenantId(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ExecutionManager","l":"terminateExecution(UnrecoverableDurableExecutionException)","u":"terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"terminateExecution(UnrecoverableDurableExecutionException)","u":"terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"terminateExecutionWithIllegalDurableOperationException(String)","u":"terminateExecutionWithIllegalDurableOperationException(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"TestOperation(Operation, List<Event>, SerDes)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.util.List,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.testing","c":"TestOperation","l":"TestOperation(Operation, SerDes)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.testing","c":"TestResult","l":"TestResult(ExecutionStatus, String, ErrorObject, List<TestOperation>, List<Event>, TypeToken<O>, SerDes)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"ThreadContext(String, ThreadType)","u":"%3Cinit%3E(java.lang.String,software.amazon.lambda.durable.execution.ThreadType)"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"threadId()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"threadType()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"threshold()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"timedout()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig","l":"timeout()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig.Builder","l":"timeout(Duration)","u":"timeout(java.time.Duration)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"timeoutCallback(String)","u":"timeoutCallback(java.lang.String)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"timeoutChainedInvoke(String)","u":"timeoutChainedInvoke(java.lang.String)"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"timeoutSeconds()"},{"p":"software.amazon.lambda.durable.config","c":"CallbackConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"InvokeConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"MapConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"ParallelBranchConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"RunInChildContextConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"StepConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForCallbackConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig","l":"toBuilder()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"toleratedFailureCount()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"toleratedFailureCount(int)"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"toleratedFailurePercentage()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"toleratedFailurePercentage(double)"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"toleratedFailures()"},{"p":"software.amazon.lambda.durable.config","c":"CompletionConfig","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.child","c":"ManyAsyncChildContextExample.Output","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"DeserializationFailedParallelExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelFailureToleranceExample.Output","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Output","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.step","c":"ManyAsyncStepsExample.Output","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.types","c":"ApprovalRequest","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"toString()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadContext","l":"toString()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadType","l":"toString()"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionInput","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"DurableExecutionOutput","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapError","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"OperationIdentifier","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"ParallelResult","l":"toString()"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"toString()"},{"p":"software.amazon.lambda.durable.retry","c":"RetryDecision","l":"toString()"},{"p":"software.amazon.lambda.durable.testing.local","c":"OperationResult","l":"toString()"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"toString()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"ConcurrentWaitForConditionExample.Input","l":"totalOperations()"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelExample.Output","l":"totalProcessed()"},{"p":"software.amazon.lambda.durable.testing.local","c":"LocalMemoryExecutionClient","l":"toTestResult(DurableExecutionOutput, TypeToken<O>, SerDes)","u":"toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"trace(String, Object...)","u":"trace(java.lang.String,java.lang.Object...)"},{"p":"software.amazon.lambda.durable","c":"TypeToken","l":"TypeToken()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.exception","c":"UnrecoverableDurableExecutionException","l":"UnrecoverableDurableExecutionException(ErrorObject)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.ErrorObject)"},{"p":"software.amazon.lambda.durable.util","c":"ExceptionHelper","l":"unwrapCompletableFuture(Throwable)","u":"unwrapCompletableFuture(java.lang.Throwable)"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"userAge"},{"p":"software.amazon.lambda.durable.examples.general","c":"CustomConfigExample.CustomData","l":"userId"},{"p":"software.amazon.lambda.durable.examples.general","c":"GenericTypesExample.Input","l":"userId"},{"p":"software.amazon.lambda.durable.examples.parallel","c":"ParallelWithWaitExample.Input","l":"userId()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig","l":"validateConfiguration()"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateDuration(Duration, String)","u":"validateDuration(java.time.Duration,java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateOperationName(String)","u":"validateOperationName(java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateOperationName(String, int)","u":"validateOperationName(java.lang.String,int)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateOptionalDuration(Duration, String)","u":"validateOptionalDuration(java.time.Duration,java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateOptionalPositiveInteger(Integer, String)","u":"validateOptionalPositiveInteger(java.lang.Integer,java.lang.String)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validateOrderedCollection(Collection<?>)","u":"validateOrderedCollection(java.util.Collection)"},{"p":"software.amazon.lambda.durable.util","c":"ParameterValidator","l":"validatePositiveInteger(Integer, String)","u":"validatePositiveInteger(java.lang.Integer,java.lang.String)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"validateReplay(Operation)","u":"validateReplay(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"value()"},{"p":"software.amazon.lambda.durable.config","c":"StepSemantics","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem.Status","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"software.amazon.lambda.durable.config","c":"StepSemantics","l":"values()"},{"p":"software.amazon.lambda.durable.execution","c":"ThreadType","l":"values()"},{"p":"software.amazon.lambda.durable.model","c":"ConcurrencyCompletionStatus","l":"values()"},{"p":"software.amazon.lambda.durable.model","c":"ExecutionStatus","l":"values()"},{"p":"software.amazon.lambda.durable.model","c":"MapResult.MapResultItem.Status","l":"values()"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"values()"},{"p":"software.amazon.lambda.durable.retry","c":"JitterStrategy","l":"values()"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"WAIT_FOR_CALLBACK"},{"p":"software.amazon.lambda.durable.model","c":"OperationSubType","l":"WAIT_FOR_CONDITION"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"wait(String, Duration)","u":"wait(java.lang.String,java.time.Duration)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"waitAsync(String, Duration)","u":"waitAsync(java.lang.String,java.time.Duration)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitAsync(String, Duration)","u":"waitAsync(java.lang.String,java.time.Duration)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAsyncExample","l":"WaitAsyncExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAtLeastExample","l":"WaitAtLeastExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitAtLeastInProcessExample","l":"WaitAtLeastInProcessExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitExample","l":"WaitExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallback(String, Class<T>, BiConsumer<String, StepContext>)","u":"waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallback(String, Class<T>, BiConsumer<String, StepContext>, WaitForCallbackConfig)","u":"waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallback(String, TypeToken<T>, BiConsumer<String, StepContext>)","u":"waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallback(String, TypeToken<T>, BiConsumer<String, StepContext>, WaitForCallbackConfig)","u":"waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallbackAsync(String, Class<T>, BiConsumer<String, StepContext>)","u":"waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallbackAsync(String, Class<T>, BiConsumer<String, StepContext>, WaitForCallbackConfig)","u":"waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallbackAsync(String, TypeToken<T>, BiConsumer<String, StepContext>)","u":"waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"waitForCallbackAsync(String, TypeToken<T>, BiConsumer<String, StepContext>, WaitForCallbackConfig)","u":"waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCallbackAsync(String, TypeToken<T>, BiConsumer<String, StepContext>, WaitForCallbackConfig)","u":"waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)"},{"p":"software.amazon.lambda.durable.examples.callback","c":"WaitForCallbackFailedExample","l":"WaitForCallbackFailedExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCondition(String, Class<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>)","u":"waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCondition(String, Class<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>, WaitForConditionConfig<T>)","u":"waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCondition(String, TypeToken<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>)","u":"waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForCondition(String, TypeToken<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>, WaitForConditionConfig<T>)","u":"waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForConditionAsync(String, Class<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>)","u":"waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForConditionAsync(String, Class<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>, WaitForConditionConfig<T>)","u":"waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForConditionAsync(String, TypeToken<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>)","u":"waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)"},{"p":"software.amazon.lambda.durable.context","c":"DurableContextImpl","l":"waitForConditionAsync(String, TypeToken<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>, WaitForConditionConfig<T>)","u":"waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableContext","l":"waitForConditionAsync(String, TypeToken<T>, BiFunction<T, StepContext, WaitForConditionResult<T>>, WaitForConditionConfig<T>)","u":"waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)"},{"p":"software.amazon.lambda.durable.examples.wait","c":"WaitForConditionExample","l":"WaitForConditionExample()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.exception","c":"WaitForConditionFailedException","l":"WaitForConditionFailedException(Operation)","u":"%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)"},{"p":"software.amazon.lambda.durable.exception","c":"WaitForConditionFailedException","l":"WaitForConditionFailedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"software.amazon.lambda.durable.operation","c":"WaitForConditionOperation","l":"WaitForConditionOperation(String, String, BiFunction<T, StepContext, WaitForConditionResult<T>>, TypeToken<T>, WaitForConditionConfig<T>, DurableContextImpl)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.model","c":"WaitForConditionResult","l":"WaitForConditionResult(T, boolean)","u":"%3Cinit%3E(T,boolean)"},{"p":"software.amazon.lambda.durable.operation","c":"BaseDurableOperation","l":"waitForOperationCompletion()"},{"p":"software.amazon.lambda.durable.operation","c":"WaitOperation","l":"WaitOperation(OperationIdentifier, Duration, DurableContextImpl)","u":"%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)"},{"p":"software.amazon.lambda.durable.retry","c":"WaitStrategies","l":"WaitStrategies()","u":"%3Cinit%3E()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig","l":"waitStrategy()"},{"p":"software.amazon.lambda.durable.config","c":"WaitForConditionConfig.Builder","l":"waitStrategy(WaitForConditionWaitStrategy<T>)","u":"waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)"},{"p":"software.amazon.lambda.durable.logging","c":"DurableLogger","l":"warn(String, Object...)","u":"warn(java.lang.String,java.lang.Object...)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withCheckpointDelay(Duration)","u":"withCheckpointDelay(java.time.Duration)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"withDurableConfig(DurableConfig)","u":"withDurableConfig(software.amazon.lambda.durable.DurableConfig)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withDurableExecutionClient(DurableExecutionClient)","u":"withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withExecutorService(ExecutorService)","u":"withExecutorService(java.util.concurrent.ExecutorService)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"withInvocationType(InvocationType)","u":"withInvocationType(software.amazon.awssdk.services.lambda.model.InvocationType)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"withLambdaClient(LambdaClient)","u":"withLambdaClient(software.amazon.awssdk.services.lambda.LambdaClient)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withLambdaClientBuilder(LambdaClientBuilder)","u":"withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withLoggerConfig(LoggerConfig)","u":"withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"withOutputType(Class<O>)","u":"withOutputType(java.lang.Class)"},{"p":"software.amazon.lambda.durable.testing","c":"LocalDurableTestRunner","l":"withOutputType(TypeToken<O>)","u":"withOutputType(software.amazon.lambda.durable.TypeToken)"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withPollingStrategy(PollingStrategy)","u":"withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"withPollInterval(Duration)","u":"withPollInterval(java.time.Duration)"},{"p":"software.amazon.lambda.durable.logging","c":"LoggerConfig","l":"withReplayLogging()"},{"p":"software.amazon.lambda.durable","c":"DurableConfig.Builder","l":"withSerDes(SerDes)","u":"withSerDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"withSerDes(SerDes)","u":"withSerDes(software.amazon.lambda.durable.serde.SerDes)"},{"p":"software.amazon.lambda.durable.testing","c":"CloudDurableTestRunner","l":"withTimeout(Duration)","u":"withTimeout(java.time.Duration)"},{"p":"software.amazon.lambda.durable.execution","c":"DurableExecutor","l":"wrap(TypeToken<I>, BiFunction<I, DurableContext, O>, DurableConfig)","u":"wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/javadoc/module-search-index.js b/javadoc/module-search-index.js
    new file mode 100644
    index 000000000..0d59754fc
    --- /dev/null
    +++ b/javadoc/module-search-index.js
    @@ -0,0 +1 @@
    +moduleSearchIndex = [];updateSearchResults();
    \ No newline at end of file
    diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html
    new file mode 100644
    index 000000000..b00359cbb
    --- /dev/null
    +++ b/javadoc/overview-summary.html
    @@ -0,0 +1,26 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="index redirect">
    +<meta name="generator" content="javadoc/IndexRedirectWriter">
    +<link rel="canonical" href="index.html">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<script type="text/javascript">window.location.replace('index.html')</script>
    +<noscript>
    +<meta http-equiv="Refresh" content="0;index.html">
    +</noscript>
    +</head>
    +<body class="index-redirect-page">
    +<main role="main">
    +<noscript>
    +<p>JavaScript is disabled on your browser.</p>
    +</noscript>
    +<p><a href="index.html">index.html</a></p>
    +</main>
    +</body>
    +</html>
    diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html
    new file mode 100644
    index 000000000..863580a76
    --- /dev/null
    +++ b/javadoc/overview-tree.html
    @@ -0,0 +1,349 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="class tree">
    +<meta name="generator" content="javadoc/TreeWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="tree-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For All Packages</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="software/amazon/lambda/durable/package-tree.html">software.amazon.lambda.durable</a>, </li>
    +<li><a href="software/amazon/lambda/durable/client/package-tree.html">software.amazon.lambda.durable.client</a>, </li>
    +<li><a href="software/amazon/lambda/durable/config/package-tree.html">software.amazon.lambda.durable.config</a>, </li>
    +<li><a href="software/amazon/lambda/durable/context/package-tree.html">software.amazon.lambda.durable.context</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/callback/package-tree.html">software.amazon.lambda.durable.examples.callback</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/child/package-tree.html">software.amazon.lambda.durable.examples.child</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/general/package-tree.html">software.amazon.lambda.durable.examples.general</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/invoke/package-tree.html">software.amazon.lambda.durable.examples.invoke</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/map/package-tree.html">software.amazon.lambda.durable.examples.map</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/parallel/package-tree.html">software.amazon.lambda.durable.examples.parallel</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/step/package-tree.html">software.amazon.lambda.durable.examples.step</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/types/package-tree.html">software.amazon.lambda.durable.examples.types</a>, </li>
    +<li><a href="software/amazon/lambda/durable/examples/wait/package-tree.html">software.amazon.lambda.durable.examples.wait</a>, </li>
    +<li><a href="software/amazon/lambda/durable/exception/package-tree.html">software.amazon.lambda.durable.exception</a>, </li>
    +<li><a href="software/amazon/lambda/durable/execution/package-tree.html">software.amazon.lambda.durable.execution</a>, </li>
    +<li><a href="software/amazon/lambda/durable/logging/package-tree.html">software.amazon.lambda.durable.logging</a>, </li>
    +<li><a href="software/amazon/lambda/durable/model/package-tree.html">software.amazon.lambda.durable.model</a>, </li>
    +<li><a href="software/amazon/lambda/durable/operation/package-tree.html">software.amazon.lambda.durable.operation</a>, </li>
    +<li><a href="software/amazon/lambda/durable/retry/package-tree.html">software.amazon.lambda.durable.retry</a>, </li>
    +<li><a href="software/amazon/lambda/durable/serde/package-tree.html">software.amazon.lambda.durable.serde</a>, </li>
    +<li><a href="software/amazon/lambda/durable/testing/package-tree.html">software.amazon.lambda.durable.testing</a>, </li>
    +<li><a href="software/amazon/lambda/durable/testing/cloud/package-tree.html">software.amazon.lambda.durable.testing.cloud</a>, </li>
    +<li><a href="software/amazon/lambda/durable/testing/local/package-tree.html">software.amazon.lambda.durable.testing.local</a>, </li>
    +<li><a href="software/amazon/lambda/durable/util/package-tree.html">software.amazon.lambda.durable.util</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/AsyncExecution.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>, software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a> (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a> (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/BaseDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/SerializableDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;)</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a> (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="software/amazon/lambda/durable/operation/WaitOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitOperation</a> (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/CloudDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/CompletedDurableFuture.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/DurableExecutor.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/CallbackExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/ComplexMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomConfigExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/CustomPollingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/LoggingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/NoopExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/RetryInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.invoke.<a href="software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="software/amazon/lambda/durable/examples/map/SimpleMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/SimpleStepExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.callback.<a href="software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a> (implements software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/DurableLogger.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></li>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ExceptionHelper.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ExecutionManager.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/GreetingRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.cloud.<a href="software/amazon/lambda/durable/testing/cloud/HistoryPoller.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/InvokeConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/JacksonSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a> (implements software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a> (implements software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/LocalDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a> (implements software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/MapConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></li>
    +<li class="circle">com.fasterxml.jackson.databind.Module (implements com.fasterxml.jackson.core.Versioned)
    +<ul>
    +<li class="circle">com.fasterxml.jackson.databind.module.SimpleModule (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/OperationIdGenerator.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/ParallelConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="software/amazon/lambda/durable/util/ParameterValidator.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.types.<a href="software/amazon/lambda/durable/examples/types/ApprovalRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/CompletionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionInput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/DurableExecutionOutput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></li>
    +<li class="circle">software.amazon.lambda.durable.logging.<a href="software/amazon/lambda/durable/logging/LoggerConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapError.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationIdentifier.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.local.<a href="software/amazon/lambda/durable/testing/local/OperationResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ParallelResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">ParallelResult</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadContext.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/WaitForConditionResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryDecision.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestOperation</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="software/amazon/lambda/durable/testing/TestResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/SerDesException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">SerDesException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/TypeToken.html" class="type-name-link" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" class="type-name-link external-link" title="class or interface in java.lang">AutoCloseable</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="software/amazon/lambda/durable/context/BaseContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable.context">BaseContext</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/StepContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">StepContext</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> (also extends software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableContext.MapFunction.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.client.<a href="software/amazon/lambda/durable/client/DurableExecutionClient.html" class="type-name-link" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/DurableCallbackFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="software/amazon/lambda/durable/ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> (also extends java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/PollingStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/RetryStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></li>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="software/amazon/lambda/durable/serde/SerDes.html" class="type-name-link" title="interface in software.amazon.lambda.durable.serde">SerDes</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/ExecutionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="software/amazon/lambda/durable/retry/JitterStrategy.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="software/amazon/lambda/durable/model/OperationSubType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="software/amazon/lambda/durable/config/StepSemantics.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="software/amazon/lambda/durable/execution/ThreadType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/package-search-index.js b/javadoc/package-search-index.js
    new file mode 100644
    index 000000000..b2efd4db0
    --- /dev/null
    +++ b/javadoc/package-search-index.js
    @@ -0,0 +1 @@
    +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"software.amazon.lambda.durable"},{"l":"software.amazon.lambda.durable.client"},{"l":"software.amazon.lambda.durable.config"},{"l":"software.amazon.lambda.durable.context"},{"l":"software.amazon.lambda.durable.examples.callback"},{"l":"software.amazon.lambda.durable.examples.child"},{"l":"software.amazon.lambda.durable.examples.general"},{"l":"software.amazon.lambda.durable.examples.invoke"},{"l":"software.amazon.lambda.durable.examples.map"},{"l":"software.amazon.lambda.durable.examples.parallel"},{"l":"software.amazon.lambda.durable.examples.step"},{"l":"software.amazon.lambda.durable.examples.types"},{"l":"software.amazon.lambda.durable.examples.wait"},{"l":"software.amazon.lambda.durable.exception"},{"l":"software.amazon.lambda.durable.execution"},{"l":"software.amazon.lambda.durable.logging"},{"l":"software.amazon.lambda.durable.model"},{"l":"software.amazon.lambda.durable.operation"},{"l":"software.amazon.lambda.durable.retry"},{"l":"software.amazon.lambda.durable.serde"},{"l":"software.amazon.lambda.durable.testing"},{"l":"software.amazon.lambda.durable.testing.cloud"},{"l":"software.amazon.lambda.durable.testing.local"},{"l":"software.amazon.lambda.durable.util"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/javadoc/resources/glass.png b/javadoc/resources/glass.png
    new file mode 100644
    index 000000000..a7f591f46
    Binary files /dev/null and b/javadoc/resources/glass.png differ
    diff --git a/javadoc/resources/x.png b/javadoc/resources/x.png
    new file mode 100644
    index 000000000..30548a756
    Binary files /dev/null and b/javadoc/resources/x.png differ
    diff --git a/javadoc/script-dir/jquery-3.7.1.min.js b/javadoc/script-dir/jquery-3.7.1.min.js
    new file mode 100644
    index 000000000..7f37b5d99
    --- /dev/null
    +++ b/javadoc/script-dir/jquery-3.7.1.min.js
    @@ -0,0 +1,2 @@
    +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
    +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});
    diff --git a/javadoc/script-dir/jquery-ui.min.css b/javadoc/script-dir/jquery-ui.min.css
    new file mode 100644
    index 000000000..7e0692dc9
    --- /dev/null
    +++ b/javadoc/script-dir/jquery-ui.min.css
    @@ -0,0 +1,6 @@
    +/*! jQuery UI - v1.14.1 - 2025-01-13
    +* https://jqueryui.com
    +* Includes: core.css, autocomplete.css, menu.css
    +* Copyright OpenJS Foundation and other contributors; Licensed MIT */
    +
    +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
    \ No newline at end of file
    diff --git a/javadoc/script-dir/jquery-ui.min.js b/javadoc/script-dir/jquery-ui.min.js
    new file mode 100644
    index 000000000..e362bc03c
    --- /dev/null
    +++ b/javadoc/script-dir/jquery-ui.min.js
    @@ -0,0 +1,6 @@
    +/*! jQuery UI - v1.14.1 - 2025-01-13
    +* https://jqueryui.com
    +* Includes: widget.js, position.js, keycode.js, unique-id.js, widgets/autocomplete.js, widgets/menu.js
    +* Copyright OpenJS Foundation and other contributors; Licensed MIT */
    +
    +(t=>{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(x){x.ui=x.ui||{};x.ui.version="1.14.1";var n,s,C,k,o,l,a,r,u,i,h=0,c=Array.prototype.hasOwnProperty,d=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l,a={},r=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?x.error("Invalid widget name: "+t):(l=r+"-"+t,e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[l.toLowerCase()]=function(t){return!!x.data(t,l)},x[r]=x[r]||{},s=x[r][t],n=x[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n)},x.widget.extend=function(t){for(var e,i,s=d.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],c.call(s[n],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(o,e){var l=e.prototype.widgetFullName||o;x.fn[o]=function(i){var t="string"==typeof i,s=d.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,l);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=x.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=x.data(this,l);t?(t.option(i||{}),t._init&&t._init()):x.data(this,l,new e(i,this))})),n}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=x(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],l=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=l.classesElementLookup[t[s]]||x(),i=n.add?((()=>{var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})})(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+a.eventNamespace,t=t[2];t?l.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}}),x.widget;function E(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function T(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,r=/^\w+/,u=/%$/,i=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=W(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(c){var d,m,f,p,v,g,_,y,b,w,t,e;return c&&c.of?(g="string"==typeof(c=x.extend({},c)).of?x(document).find(c.of):x(c.of),_=x.position.getWithinInfo(c.within),y=x.position.getScrollInfo(_),b=(c.collision||"flip").split(" "),w={},e=9===(e=(t=g)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:W(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},g[0].preventDefault&&(c.at="left top"),m=e.width,f=e.height,v=x.extend({},p=e.offset),x.each(["my","at"],function(){var t,e,i=(c[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=a.exec(i[0]),e=a.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],c[this]=[r.exec(i[0])[0],r.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===c.at[0]?v.left+=m:"center"===c.at[0]&&(v.left+=m/2),"bottom"===c.at[1]?v.top+=f:"center"===c.at[1]&&(v.top+=f/2),d=E(w.at,m,f),v.left+=d[0],v.top+=d[1],this.each(function(){var i,t,l=x(this),a=l.outerWidth(),r=l.outerHeight(),e=T(this,"marginLeft"),s=T(this,"marginTop"),n=a+e+T(this,"marginRight")+y.width,o=r+s+T(this,"marginBottom")+y.height,u=x.extend({},v),h=E(w.my,l.outerWidth(),l.outerHeight());"right"===c.my[0]?u.left-=a:"center"===c.my[0]&&(u.left-=a/2),"bottom"===c.my[1]?u.top-=r:"center"===c.my[1]&&(u.top-=r/2),u.left+=h[0],u.top+=h[1],i={marginLeft:e,marginTop:s},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](u,{targetWidth:m,targetHeight:f,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+h[0],d[1]+h[1]],my:c.my,at:c.at,within:_,elem:l})}),c.using&&(t=function(t){var e=p.left-u.left,i=e+m-a,s=p.top-u.top,n=s+f-r,o={target:{element:g,left:p.left,top:p.top,width:m,height:f},element:{element:l,left:u.left,top:u.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};m<a&&k(e+i)<m&&(o.horizontal="center"),f<r&&k(s+n)<f&&(o.vertical="middle"),C(k(e),k(i))>C(k(s),k(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})):i.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,l=n-o,a=o+e.collisionWidth-s-n;s<e.collisionWidth?0<l&&a<=0?(i=t.left+l+e.collisionWidth-s-n,t.left+=l-i):t.left=!(0<a&&l<=0)&&a<l?n+s-e.collisionWidth:n:0<l?t.left+=l:0<a?t.left-=a:t.left=C(t.left-o,t.left)},top:function(t,e){var i,s=e.within,s=s.isWindow?s.scrollTop:s.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,l=s-o,a=o+e.collisionHeight-n-s;n<e.collisionHeight?0<l&&a<=0?(i=t.top+l+e.collisionHeight-n-s,t.top+=l-i):t.top=!(0<a&&l<=0)&&a<l?s+n-e.collisionHeight:s:0<l?t.top+=l:0<a?t.top-=a:t.top=C(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,o=t.left-e.collisionPosition.marginLeft,l=o-i,o=o+e.collisionWidth-n-i,a="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,r="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,u=-2*e.offset[0];l<0?((n=t.left+a+r+u+e.collisionWidth-n-s)<0||n<k(l))&&(t.left+=a+r+u):0<o&&(0<(s=t.left-e.collisionPosition.marginLeft+a+r+u-i)||k(s)<o)&&(t.left+=a+r+u)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,i=i.isWindow?i.scrollTop:i.offset.top,o=t.top-e.collisionPosition.marginTop,l=o-i,o=o+e.collisionHeight-n-i,a="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,r="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,u=-2*e.offset[1];l<0?((n=t.top+a+r+u+e.collisionHeight-n-s)<0||n<k(l))&&(t.top+=a+r+u):0<o&&(0<(s=t.top-e.collisionPosition.marginTop+a+r+u-i)||k(s)<o)&&(t.top+=a+r+u)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}};var t;x.ui.position,x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}}),x.widget("ui.menu",{version:"1.14.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=x.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:x(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!x(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=x(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=x(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||x(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(x(this).children(".ui-menu-item-wrapper").text()))})}}),x.widget("ui.autocomplete",{version:"1.14.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=x("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:x.map(t,function(t){return"string"==typeof t?{label:t,value:t}:x.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(x.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;x.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return x("<li>").append(x("<div>").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(e))},100))}}),x.ui.autocomplete});
    \ No newline at end of file
    diff --git a/javadoc/script.js b/javadoc/script.js
    new file mode 100644
    index 000000000..73cd8faac
    --- /dev/null
    +++ b/javadoc/script.js
    @@ -0,0 +1,132 @@
    +/*
    + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +var moduleSearchIndex;
    +var packageSearchIndex;
    +var typeSearchIndex;
    +var memberSearchIndex;
    +var tagSearchIndex;
    +function loadScripts(doc, tag) {
    +    createElem(doc, tag, 'search.js');
    +
    +    createElem(doc, tag, 'module-search-index.js');
    +    createElem(doc, tag, 'package-search-index.js');
    +    createElem(doc, tag, 'type-search-index.js');
    +    createElem(doc, tag, 'member-search-index.js');
    +    createElem(doc, tag, 'tag-search-index.js');
    +}
    +
    +function createElem(doc, tag, path) {
    +    var script = doc.createElement(tag);
    +    var scriptElement = doc.getElementsByTagName(tag)[0];
    +    script.src = pathtoroot + path;
    +    scriptElement.parentNode.insertBefore(script, scriptElement);
    +}
    +
    +function show(tableId, selected, columns) {
    +    if (tableId !== selected) {
    +        document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
    +            .forEach(function(elem) {
    +                elem.style.display = 'none';
    +            });
    +    }
    +    document.querySelectorAll('div.' + selected)
    +        .forEach(function(elem, index) {
    +            elem.style.display = '';
    +            var isEvenRow = index % (columns * 2) < columns;
    +            elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
    +            elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
    +        });
    +    updateTabs(tableId, selected);
    +}
    +
    +function updateTabs(tableId, selected) {
    +    document.getElementById(tableId + '.tabpanel')
    +        .setAttribute('aria-labelledby', selected);
    +    document.querySelectorAll('button[id^="' + tableId + '"]')
    +        .forEach(function(tab, index) {
    +            if (selected === tab.id || (tableId === selected && index === 0)) {
    +                tab.className = activeTableTab;
    +                tab.setAttribute('aria-selected', true);
    +                tab.setAttribute('tabindex',0);
    +            } else {
    +                tab.className = tableTab;
    +                tab.setAttribute('aria-selected', false);
    +                tab.setAttribute('tabindex',-1);
    +            }
    +        });
    +}
    +
    +function switchTab(e) {
    +    var selected = document.querySelector('[aria-selected=true]');
    +    if (selected) {
    +        if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
    +            // left or up arrow key pressed: move focus to previous tab
    +            selected.previousSibling.click();
    +            selected.previousSibling.focus();
    +            e.preventDefault();
    +        } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
    +            // right or down arrow key pressed: move focus to next tab
    +            selected.nextSibling.click();
    +            selected.nextSibling.focus();
    +            e.preventDefault();
    +        }
    +    }
    +}
    +
    +var updateSearchResults = function() {};
    +
    +function indexFilesLoaded() {
    +    return moduleSearchIndex
    +        && packageSearchIndex
    +        && typeSearchIndex
    +        && memberSearchIndex
    +        && tagSearchIndex;
    +}
    +
    +// Workaround for scroll position not being included in browser history (8249133)
    +document.addEventListener("DOMContentLoaded", function(e) {
    +    var contentDiv = document.querySelector("div.flex-content");
    +    window.addEventListener("popstate", function(e) {
    +        if (e.state !== null) {
    +            contentDiv.scrollTop = e.state;
    +        }
    +    });
    +    window.addEventListener("hashchange", function(e) {
    +        history.replaceState(contentDiv.scrollTop, document.title);
    +    });
    +    contentDiv.addEventListener("scroll", function(e) {
    +        var timeoutID;
    +        if (!timeoutID) {
    +            timeoutID = setTimeout(function() {
    +                history.replaceState(contentDiv.scrollTop, document.title);
    +                timeoutID = null;
    +            }, 100);
    +        }
    +    });
    +    if (!location.hash) {
    +        history.replaceState(contentDiv.scrollTop, document.title);
    +    }
    +});
    diff --git a/javadoc/search.js b/javadoc/search.js
    new file mode 100644
    index 000000000..db3b2f4a6
    --- /dev/null
    +++ b/javadoc/search.js
    @@ -0,0 +1,354 @@
    +/*
    + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +var noResult = {l: "No results found"};
    +var loading = {l: "Loading search index..."};
    +var catModules = "Modules";
    +var catPackages = "Packages";
    +var catTypes = "Classes and Interfaces";
    +var catMembers = "Members";
    +var catSearchTags = "Search Tags";
    +var highlight = "<span class=\"result-highlight\">$&</span>";
    +var searchPattern = "";
    +var fallbackPattern = "";
    +var RANKING_THRESHOLD = 2;
    +var NO_MATCH = 0xffff;
    +var MIN_RESULTS = 3;
    +var MAX_RESULTS = 500;
    +var UNNAMED = "<Unnamed>";
    +function escapeHtml(str) {
    +    return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
    +}
    +function getHighlightedText(item, matcher, fallbackMatcher) {
    +    var escapedItem = escapeHtml(item);
    +    var highlighted = escapedItem.replace(matcher, highlight);
    +    if (highlighted === escapedItem) {
    +        highlighted = escapedItem.replace(fallbackMatcher, highlight)
    +    }
    +    return highlighted;
    +}
    +function getURLPrefix(ui) {
    +    var urlPrefix="";
    +    var slash = "/";
    +    if (ui.item.category === catModules) {
    +        return ui.item.l + slash;
    +    } else if (ui.item.category === catPackages && ui.item.m) {
    +        return ui.item.m + slash;
    +    } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
    +        if (ui.item.m) {
    +            urlPrefix = ui.item.m + slash;
    +        } else {
    +            $.each(packageSearchIndex, function(index, item) {
    +                if (item.m && ui.item.p === item.l) {
    +                    urlPrefix = item.m + slash;
    +                }
    +            });
    +        }
    +    }
    +    return urlPrefix;
    +}
    +function createSearchPattern(term) {
    +    var pattern = "";
    +    var isWordToken = false;
    +    term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
    +        if (index > 0) {
    +            // whitespace between identifiers is significant
    +            pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
    +        }
    +        var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
    +        for (var i = 0; i < tokens.length; i++) {
    +            var s = tokens[i];
    +            if (s === "") {
    +                continue;
    +            }
    +            pattern += $.ui.autocomplete.escapeRegex(s);
    +            isWordToken =  /\w$/.test(s);
    +            if (isWordToken) {
    +                pattern += "([a-z0-9_$<>\\[\\]]*?)";
    +            }
    +        }
    +    });
    +    return pattern;
    +}
    +function createMatcher(pattern, flags) {
    +    var isCamelCase = /[A-Z]/.test(pattern);
    +    return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
    +}
    +var watermark = 'Search';
    +$(function() {
    +    var search = $("#search-input");
    +    var reset = $("#reset-button");
    +    search.val('');
    +    search.prop("disabled", false);
    +    reset.prop("disabled", false);
    +    search.val(watermark).addClass('watermark');
    +    search.blur(function() {
    +        if ($(this).val().length === 0) {
    +            $(this).val(watermark).addClass('watermark');
    +        }
    +    });
    +    search.on('click keydown paste', function() {
    +        if ($(this).val() === watermark) {
    +            $(this).val('').removeClass('watermark');
    +        }
    +    });
    +    reset.click(function() {
    +        search.val('').focus();
    +    });
    +    search.focus()[0].setSelectionRange(0, 0);
    +});
    +$.widget("custom.catcomplete", $.ui.autocomplete, {
    +    _create: function() {
    +        this._super();
    +        this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
    +    },
    +    _renderMenu: function(ul, items) {
    +        var rMenu = this;
    +        var currentCategory = "";
    +        rMenu.menu.bindings = $();
    +        $.each(items, function(index, item) {
    +            var li;
    +            if (item.category && item.category !== currentCategory) {
    +                ul.append("<li class=\"ui-autocomplete-category\">" + item.category + "</li>");
    +                currentCategory = item.category;
    +            }
    +            li = rMenu._renderItemData(ul, item);
    +            if (item.category) {
    +                li.attr("aria-label", item.category + " : " + item.l);
    +                li.attr("class", "result-item");
    +            } else {
    +                li.attr("aria-label", item.l);
    +                li.attr("class", "result-item");
    +            }
    +        });
    +    },
    +    _renderItem: function(ul, item) {
    +        var label = "";
    +        var matcher = createMatcher(escapeHtml(searchPattern), "g");
    +        var fallbackMatcher = new RegExp(fallbackPattern, "gi")
    +        if (item.category === catModules) {
    +            label = getHighlightedText(item.l, matcher, fallbackMatcher);
    +        } else if (item.category === catPackages) {
    +            label = getHighlightedText(item.l, matcher, fallbackMatcher);
    +        } else if (item.category === catTypes) {
    +            label = (item.p && item.p !== UNNAMED)
    +                    ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher)
    +                    : getHighlightedText(item.l, matcher, fallbackMatcher);
    +        } else if (item.category === catMembers) {
    +            label = (item.p && item.p !== UNNAMED)
    +                    ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher)
    +                    : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher);
    +        } else if (item.category === catSearchTags) {
    +            label = getHighlightedText(item.l, matcher, fallbackMatcher);
    +        } else {
    +            label = item.l;
    +        }
    +        var li = $("<li/>").appendTo(ul);
    +        var div = $("<div/>").appendTo(li);
    +        if (item.category === catSearchTags && item.h) {
    +            if (item.d) {
    +                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span><br><span class=\"search-tag-desc-result\">"
    +                                + item.d + "</span><br>");
    +            } else {
    +                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span>");
    +            }
    +        } else {
    +            if (item.m) {
    +                div.html(item.m + "/" + label);
    +            } else {
    +                div.html(label);
    +            }
    +        }
    +        return li;
    +    }
    +});
    +function rankMatch(match, category) {
    +    if (!match) {
    +        return NO_MATCH;
    +    }
    +    var index = match.index;
    +    var input = match.input;
    +    var leftBoundaryMatch = 2;
    +    var periferalMatch = 0;
    +    // make sure match is anchored on a left word boundary
    +    if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) {
    +        leftBoundaryMatch = 0;
    +    } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) {
    +        leftBoundaryMatch = 1;
    +    }
    +    var matchEnd = index + match[0].length;
    +    var leftParen = input.indexOf("(");
    +    var endOfName = leftParen > -1 ? leftParen : input.length;
    +    // exclude peripheral matches
    +    if (category !== catModules && category !== catSearchTags) {
    +        var delim = category === catPackages ? "/" : ".";
    +        if (leftParen > -1 && leftParen < index) {
    +            periferalMatch += 2;
    +        } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) {
    +            periferalMatch += 2;
    +        }
    +    }
    +    var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match
    +    for (var i = 1; i < match.length; i++) {
    +        // lower ranking if parts of the name are missing
    +        if (match[i])
    +            delta += match[i].length;
    +    }
    +    if (category === catTypes) {
    +        // lower ranking if a type name contains unmatched camel-case parts
    +        if (/[A-Z]/.test(input.substring(matchEnd)))
    +            delta += 5;
    +        if (/[A-Z]/.test(input.substring(0, index)))
    +            delta += 5;
    +    }
    +    return leftBoundaryMatch + periferalMatch + (delta / 200);
    +
    +}
    +function doSearch(request, response) {
    +    var result = [];
    +    searchPattern = createSearchPattern(request.term);
    +    fallbackPattern = createSearchPattern(request.term.toLowerCase());
    +    if (searchPattern === "") {
    +        return this.close();
    +    }
    +    var camelCaseMatcher = createMatcher(searchPattern, "");
    +    var fallbackMatcher = new RegExp(fallbackPattern, "i");
    +
    +    function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) {
    +        if (indexArray) {
    +            var newResults = [];
    +            $.each(indexArray, function (i, item) {
    +                item.category = category;
    +                var ranking = rankMatch(matcher.exec(nameFunc(item)), category);
    +                if (ranking < RANKING_THRESHOLD) {
    +                    newResults.push({ranking: ranking, item: item});
    +                }
    +                return newResults.length <= MAX_RESULTS;
    +            });
    +            return newResults.sort(function(e1, e2) {
    +                return e1.ranking - e2.ranking;
    +            }).map(function(e) {
    +                return e.item;
    +            });
    +        }
    +        return [];
    +    }
    +    function searchIndex(indexArray, category, nameFunc) {
    +        var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc);
    +        result = result.concat(primaryResults);
    +        if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) {
    +            var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc);
    +            result = result.concat(secondaryResults.filter(function (item) {
    +                return primaryResults.indexOf(item) === -1;
    +            }));
    +        }
    +    }
    +
    +    searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; });
    +    searchIndex(packageSearchIndex, catPackages, function(item) {
    +        return (item.m && request.term.indexOf("/") > -1)
    +            ? (item.m + "/" + item.l) : item.l;
    +    });
    +    searchIndex(typeSearchIndex, catTypes, function(item) {
    +        return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l;
    +    });
    +    searchIndex(memberSearchIndex, catMembers, function(item) {
    +        return request.term.indexOf(".") > -1
    +            ? item.p + "." + item.c + "." + item.l : item.l;
    +    });
    +    searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; });
    +
    +    if (!indexFilesLoaded()) {
    +        updateSearchResults = function() {
    +            doSearch(request, response);
    +        }
    +        result.unshift(loading);
    +    } else {
    +        updateSearchResults = function() {};
    +    }
    +    response(result);
    +}
    +$(function() {
    +    $("#search-input").catcomplete({
    +        minLength: 1,
    +        delay: 300,
    +        source: doSearch,
    +        response: function(event, ui) {
    +            if (!ui.content.length) {
    +                ui.content.push(noResult);
    +            } else {
    +                $("#search-input").empty();
    +            }
    +        },
    +        autoFocus: true,
    +        focus: function(event, ui) {
    +            return false;
    +        },
    +        position: {
    +            collision: "flip"
    +        },
    +        select: function(event, ui) {
    +            if (ui.item.category) {
    +                var url = getURLPrefix(ui);
    +                if (ui.item.category === catModules) {
    +                    url += "module-summary.html";
    +                } else if (ui.item.category === catPackages) {
    +                    if (ui.item.u) {
    +                        url = ui.item.u;
    +                    } else {
    +                        url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
    +                    }
    +                } else if (ui.item.category === catTypes) {
    +                    if (ui.item.u) {
    +                        url = ui.item.u;
    +                    } else if (ui.item.p === UNNAMED) {
    +                        url += ui.item.l + ".html";
    +                    } else {
    +                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
    +                    }
    +                } else if (ui.item.category === catMembers) {
    +                    if (ui.item.p === UNNAMED) {
    +                        url += ui.item.c + ".html" + "#";
    +                    } else {
    +                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#";
    +                    }
    +                    if (ui.item.u) {
    +                        url += ui.item.u;
    +                    } else {
    +                        url += ui.item.l;
    +                    }
    +                } else if (ui.item.category === catSearchTags) {
    +                    url += ui.item.u;
    +                }
    +                if (top !== window) {
    +                    parent.classFrame.location = pathtoroot + url;
    +                } else {
    +                    window.location.href = pathtoroot + url;
    +                }
    +                $("#search-input").focus();
    +            }
    +        }
    +    });
    +});
    diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html
    new file mode 100644
    index 000000000..83b2bbdb0
    --- /dev/null
    +++ b/javadoc/serialized-form.html
    @@ -0,0 +1,293 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Serialized Form (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="serialized forms">
    +<meta name="generator" content="javadoc/SerializedFormWriterImpl">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="serialized-form-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li>Use</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="deprecated-list.html">Deprecated</a></li>
    +<li><a href="index-all.html">Index</a></li>
    +<li><a href="help-doc.html#serialized-form">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Serialized Form" class="title">Serialized Form</h1>
    +</div>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="software/amazon/lambda/durable/examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException</a></h3>
    +<div class="type-signature">class ServiceUnavailableException extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>serviceName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> serviceName</pre>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="software/amazon/lambda/durable/exception/package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.CallbackException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackException</a></h3>
    +<div class="type-signature">class CallbackException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>callbackId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> callbackId</pre>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.CallbackFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackFailedException</a></h3>
    +<div class="type-signature">class CallbackFailedException extends <a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.CallbackSubmitterException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackSubmitterException</a></h3>
    +<div class="type-signature">class CallbackSubmitterException extends <a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.CallbackTimeoutException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackTimeoutException</a></h3>
    +<div class="type-signature">class CallbackTimeoutException extends <a href="software/amazon/lambda/durable/exception/CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.ChildContextFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.ChildContextFailedException</a></h3>
    +<div class="type-signature">class ChildContextFailedException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.DurableExecutionException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a></h3>
    +<div class="type-signature">class DurableExecutionException extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.DurableOperationException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a></h3>
    +<div class="type-signature">class DurableOperationException extends <a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>errorObject</h5>
    +<pre>software.amazon.awssdk.services.lambda.model.ErrorObject errorObject</pre>
    +</li>
    +<li class="block-list">
    +<h5>operation</h5>
    +<pre>software.amazon.awssdk.services.lambda.model.Operation operation</pre>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.IllegalDurableOperationException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.IllegalDurableOperationException</a></h3>
    +<div class="type-signature">class IllegalDurableOperationException extends <a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.InvokeException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeException</a></h3>
    +<div class="type-signature">class InvokeException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.InvokeFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeFailedException</a></h3>
    +<div class="type-signature">class InvokeFailedException extends <a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.InvokeStoppedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeStoppedException</a></h3>
    +<div class="type-signature">class InvokeStoppedException extends <a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.InvokeTimedOutException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeTimedOutException</a></h3>
    +<div class="type-signature">class InvokeTimedOutException extends <a href="software/amazon/lambda/durable/exception/InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.MapIterationFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.MapIterationFailedException</a></h3>
    +<div class="type-signature">class MapIterationFailedException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.NonDeterministicExecutionException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.NonDeterministicExecutionException</a></h3>
    +<div class="type-signature">class NonDeterministicExecutionException extends <a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.ParallelBranchFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.ParallelBranchFailedException</a></h3>
    +<div class="type-signature">class ParallelBranchFailedException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.SerDesException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/SerDesException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.SerDesException</a></h3>
    +<div class="type-signature">class SerDesException extends <a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.StepException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/StepException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.StepException</a></h3>
    +<div class="type-signature">class StepException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.StepFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/StepFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.StepFailedException</a></h3>
    +<div class="type-signature">class StepFailedException extends <a href="software/amazon/lambda/durable/exception/StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.StepInterruptedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.StepInterruptedException</a></h3>
    +<div class="type-signature">class StepInterruptedException extends <a href="software/amazon/lambda/durable/exception/StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</a></h3>
    +<div class="type-signature">class UnrecoverableDurableExecutionException extends <a href="software/amazon/lambda/durable/exception/DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>errorObject</h5>
    +<pre>software.amazon.awssdk.services.lambda.model.ErrorObject errorObject</pre>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.exception.WaitForConditionFailedException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.WaitForConditionFailedException</a></h3>
    +<div class="type-signature">class WaitForConditionFailedException extends <a href="software/amazon/lambda/durable/exception/DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="software/amazon/lambda/durable/execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.execution.SuspendExecutionException">
    +<h3>Exception&nbsp;<a href="software/amazon/lambda/durable/execution/SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution.SuspendExecutionException</a></h3>
    +<div class="type-signature">class SuspendExecutionException extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="software/amazon/lambda/durable/serde/package-summary.html">software.amazon.lambda.durable.serde</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="software.amazon.lambda.durable.serde.AwsSdkV2Module">
    +<h3>Class&nbsp;<a href="software/amazon/lambda/durable/serde/AwsSdkV2Module.html" title="class in software.amazon.lambda.durable.serde">software.amazon.lambda.durable.serde.AwsSdkV2Module</a></h3>
    +<div class="type-signature">class AwsSdkV2Module extends com.fasterxml.jackson.databind.module.SimpleModule implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableCallbackFuture.html b/javadoc/software/amazon/lambda/durable/DurableCallbackFuture.html
    new file mode 100644
    index 000000000..b7a7211e6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableCallbackFuture.html
    @@ -0,0 +1,153 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableCallbackFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: DurableCallbackFuture">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableCallbackFuture.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface DurableCallbackFuture" class="title">Interface DurableCallbackFuture&lt;T&gt;</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">DurableCallbackFuture&lt;T&gt;</span><span class="extends-implements">
    +extends <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span></div>
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result. Extends DurableFuture
    + so callbacks can be processed the same way as other futures.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#callbackId()" class="member-name-link">callbackId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns the unique identifier for this callback.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableFuture">Methods inherited from interface&nbsp;software.amazon.lambda.durable.<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></h3>
    +<code><a href="DurableFuture.html#get()">get</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="callbackId()">
    +<h3>callbackId</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">callbackId</span>()</div>
    +<div class="block">Returns the unique identifier for this callback.
    +
    + <p>External systems use this ID to send callback results back to the durable execution.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the callback ID</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableConfig.Builder.html b/javadoc/software/amazon/lambda/durable/DurableConfig.Builder.html
    new file mode 100644
    index 000000000..81debcc10
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableConfig.Builder.html
    @@ -0,0 +1,330 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, class: DurableConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Class DurableConfig.Builder" class="title">Class DurableConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.DurableConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static final class </span><span class="element-name type-name-label">DurableConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for DurableConfig. Provides fluent API for configuring SDK components.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Builder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the DurableConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withCheckpointDelay(java.time.Duration)" class="member-name-link">withCheckpointDelay</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets how often the SDK checkpoints updates to backend.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)" class="member-name-link">withDurableExecutionClient</a><wbr>(<a href="client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>&nbsp;durableExecutionClient)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom DurableExecutionClient.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withExecutorService(java.util.concurrent.ExecutorService)" class="member-name-link">withExecutorService</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a>&nbsp;executorService)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom ExecutorService for running user-defined operations.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)" class="member-name-link">withLambdaClientBuilder</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClientBuilder&nbsp;lambdaClientBuilder)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom LambdaClient for production use.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)" class="member-name-link">withLoggerConfig</a><wbr>(<a href="logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a>&nbsp;loggerConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom LoggerConfig.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)" class="member-name-link">withPollingStrategy</a><wbr>(<a href="retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a>&nbsp;pollingStrategy)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the polling strategy.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom SerDes implementation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)">
    +<h3>withLambdaClientBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withLambdaClientBuilder</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.LambdaClientBuilder&nbsp;lambdaClientBuilder)</span></div>
    +<div class="block">Sets a custom LambdaClient for production use. Use this method to customize the AWS SDK client with specific
    + regions, credentials, timeouts, or retry policies.
    +
    + <p>Example:
    +
    + <pre><code>
    + LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
    +     .region(Region.US_WEST_2)
    +     .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
    +
    + DurableConfig.builder()
    +     .withLambdaClientBuilder(lambdaClientBuilder)
    +     .build();
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>lambdaClientBuilder</code> - Custom LambdaClientBuilder instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if lambdaClient is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)">
    +<h3>withDurableExecutionClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withDurableExecutionClient</span><wbr><span class="parameters">(<a href="client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>&nbsp;durableExecutionClient)</span></div>
    +<div class="block">Sets a custom DurableExecutionClient.
    +
    + <p><b>Note:</b> This method is primarily intended for testing with mock clients (e.g.,
    + <code>LocalMemoryExecutionClient</code>). For production use with a custom AWS SDK client, prefer
    + <a href="#withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)"><code>withLambdaClientBuilder(LambdaClientBuilder)</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>durableExecutionClient</code> - Custom DurableExecutionClient instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if durableExecutionClient is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withSerDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>withSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withSerDes</span><wbr><span class="parameters">(<a href="serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom SerDes implementation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - Custom SerDes instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if serDes is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withExecutorService(java.util.concurrent.ExecutorService)">
    +<h3>withExecutorService</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withExecutorService</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a>&nbsp;executorService)</span></div>
    +<div class="block">Sets a custom ExecutorService for running user-defined operations. If not set, a default cached thread pool
    + will be created.
    +
    + <p>This executor is used exclusively for running user-defined operations. Internal SDK coordination (polling,
    + checkpointing) uses the SDK InternalExecutor thread pool and is not affected by this setting.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>executorService</code> - Custom ExecutorService instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)">
    +<h3>withLoggerConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withLoggerConfig</span><wbr><span class="parameters">(<a href="logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a>&nbsp;loggerConfig)</span></div>
    +<div class="block">Sets a custom LoggerConfig. If not set, defaults to suppressing replay logs.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>loggerConfig</code> - Custom LoggerConfig instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)">
    +<h3>withPollingStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withPollingStrategy</span><wbr><span class="parameters">(<a href="retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a>&nbsp;pollingStrategy)</span></div>
    +<div class="block">Sets the polling strategy. If not set, defaults to 1 second with full jitter and 2x backoff.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pollingStrategy</code> - Custom PollingStrategy instance</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withCheckpointDelay(java.time.Duration)">
    +<h3>withCheckpointDelay</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">withCheckpointDelay</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</span></div>
    +<div class="block">Sets how often the SDK checkpoints updates to backend. If not set, defaults to 0, SDK will checkpoint the
    + updates as soon as possible.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>duration</code> - the checkpoint delay in Duration</dd>
    +<dt>Returns:</dt>
    +<dd>This builder</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the DurableConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>Immutable DurableConfig instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableConfig.html b/javadoc/software/amazon/lambda/durable/DurableConfig.html
    new file mode 100644
    index 000000000..c12947b34
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableConfig.html
    @@ -0,0 +1,314 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, class: DurableConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Class DurableConfig" class="title">Class DurableConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.DurableConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">DurableConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for DurableHandler initialization. This class provides a builder pattern for configuring SDK components
    + including LambdaClient, SerDes, and ExecutorService.
    +
    + <p>Configuration is initialized once during Lambda cold start and remains immutable throughout the execution
    + lifecycle.
    +
    + <p>Example usage with default settings:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(customClient)
    +         .withSerDes(customSerDes)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Example usage with custom Lambda client:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
    +
    +     return DurableConfig.builder()
    +         .withLambdaClientBuilder(lambdaClientBuilder)
    +         .build();
    + }
    + </code></pre></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="DurableConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for DurableConfig.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for DurableConfig.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#defaultConfig()" class="member-name-link">defaultConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a DurableConfig with default settings.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCheckpointDelay()" class="member-name-link">getCheckpointDelay</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configured checkpoint delay.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDurableExecutionClient()" class="member-name-link">getDurableExecutionClient</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configured DurableExecutionClient.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutorService()" class="member-name-link">getExecutorService</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configured ExecutorService.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLoggerConfig()" class="member-name-link">getLoggerConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configured LoggerConfig.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPollingStrategy()" class="member-name-link">getPollingStrategy</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the polling strategy.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSerDes()" class="member-name-link">getSerDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configured SerDes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateConfiguration()" class="member-name-link">validateConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="defaultConfig()">
    +<h3>defaultConfig</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">defaultConfig</span>()</div>
    +<div class="block">Creates a DurableConfig with default settings. Uses default DurableExecutionClient and JacksonSerDes.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>DurableConfig with default configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for DurableConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>Builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDurableExecutionClient()">
    +<h3>getDurableExecutionClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span>&nbsp;<span class="element-name">getDurableExecutionClient</span>()</div>
    +<div class="block">Gets the configured DurableExecutionClient.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>DurableExecutionClient instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSerDes()">
    +<h3>getSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">getSerDes</span>()</div>
    +<div class="block">Gets the configured SerDes.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>SerDes instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutorService()">
    +<h3>getExecutorService</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a></span>&nbsp;<span class="element-name">getExecutorService</span>()</div>
    +<div class="block">Gets the configured ExecutorService.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>ExecutorService instance (never null)</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getLoggerConfig()">
    +<h3>getLoggerConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span>&nbsp;<span class="element-name">getLoggerConfig</span>()</div>
    +<div class="block">Gets the configured LoggerConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>LoggerConfig instance (never null)</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPollingStrategy()">
    +<h3>getPollingStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span>&nbsp;<span class="element-name">getPollingStrategy</span>()</div>
    +<div class="block">Gets the polling strategy.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>PollingStrategy instance (never null)</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCheckpointDelay()">
    +<h3>getCheckpointDelay</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">getCheckpointDelay</span>()</div>
    +<div class="block">Gets the configured checkpoint delay.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the checkpoint delay duration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateConfiguration()">
    +<h3>validateConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateConfiguration</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableContext.MapFunction.html b/javadoc/software/amazon/lambda/durable/DurableContext.MapFunction.html
    new file mode 100644
    index 000000000..00401647a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableContext.MapFunction.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableContext.MapFunction (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: DurableContext, interface: MapFunction">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableContext.MapFunction.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface DurableContext.MapFunction" class="title">Interface DurableContext.MapFunction&lt;I,<wbr>O&gt;</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the input item type</dd>
    +<dd><code>O</code> - the output result type</dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing interface:</dt>
    +<dd><a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public static interface </span><span class="element-name type-name-label">DurableContext.MapFunction&lt;I,<wbr>O&gt;</span></div>
    +<div class="block">Function applied to each item in a map operation.
    +
    + <p>Each invocation receives its own <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a>, allowing the use of durable operations like
    + <code>step()</code> and <code>wait()</code> within the function body. The index parameter indicates the item's position in
    + the input collection.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#apply(I,int,software.amazon.lambda.durable.DurableContext)" class="member-name-link">apply</a><wbr>(<a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>&nbsp;item,
    + int&nbsp;index,
    + <a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Applies this function to the given item.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="apply(I,int,software.amazon.lambda.durable.DurableContext)">
    +<h3 id="apply(java.lang.Object,int,software.amazon.lambda.durable.DurableContext)">apply</h3>
    +<div class="member-signature"><span class="return-type"><a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a></span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>&nbsp;item,
    + int&nbsp;index,
    + <a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block">Applies this function to the given item.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>item</code> - the input item to process</dd>
    +<dd><code>index</code> - the zero-based index of the item in the input collection</dd>
    +<dd><code>context</code> - the durable context for this item's execution</dd>
    +<dt>Returns:</dt>
    +<dd>the result of processing the item</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableContext.html b/javadoc/software/amazon/lambda/durable/DurableContext.html
    new file mode 100644
    index 000000000..165cbf435
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableContext.html
    @@ -0,0 +1,1600 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: DurableContext">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableContext.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface DurableContext" class="title">Interface DurableContext</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">DurableContext</span><span class="extends-implements">
    +extends <a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Interface</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="DurableContext.MapFunction.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>,<wbr><a href="DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a>&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#createCallback(java.lang.String,java.lang.Class)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Creates a callback with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Creates a callback with custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Creates a callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invoke(java.lang.String,java.lang.String,U,java.lang.Class)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Invokes another Lambda function by name and blocks until the result is available.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Invokes another Lambda function with custom configuration, blocking until the result is available.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously invokes another Lambda function, returning a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#parallel(java.lang.String)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Creates a <a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently with default config</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Creates a <a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#step(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a durable step with the given name and blocks until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a durable step with the given name and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#step(java.lang.String,java.lang.Class,java.util.function.Supplier)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a durable step, returning a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that can be composed or blocked on.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a durable step using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Asynchronously executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#wait(java.lang.String,java.time.Duration)" class="member-name-link">wait</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Suspends execution for the specified duration without consuming compute resources.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a submitter function and waits for an external callback, blocking until the callback completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a submitter and waits for an external callback with custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Polls a condition function until it signals done, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.context.<a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></h3>
    +<code><a href="context/BaseContext.html#close()">close</a>, <a href="context/BaseContext.html#getContextId()">getContextId</a>, <a href="context/BaseContext.html#getContextName()">getContextName</a>, <a href="context/BaseContext.html#getDurableConfig()">getDurableConfig</a>, <a href="context/BaseContext.html#getExecutionArn()">getExecutionArn</a>, <a href="context/BaseContext.html#getLambdaContext()">getLambdaContext</a>, <a href="context/BaseContext.html#getLogger()">getLogger</a>, <a href="context/BaseContext.html#isReplaying()">isReplaying</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="step(java.lang.String,java.lang.Class,java.util.function.Function)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Executes a durable step with the given name and blocks until it completes.
    +
    + <p>On first execution, runs <code>func</code> and checkpoints the result. On replay, returns the cached result without
    + re-executing.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="block">Executes a durable step with the given name and configuration, blocking until it completes.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>config</code> - the step configuration (retry strategy, semantics, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until it completes.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="block">Executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>config</code> - the step configuration (retry strategy, semantics, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Asynchronously executes a durable step, returning a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that can be composed or blocked on.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="block">Asynchronously executes a durable step using custom configuration.
    +
    + <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>config</code> - the step configuration (retry strategy, semantics, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Asynchronously executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.
    +
    + <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="block">Asynchronously executes a durable step using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.
    +
    + <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>config</code> - the step configuration (retry strategy, semantics, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,java.lang.Class,java.util.function.Supplier)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>step</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">step</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
    +</span><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="wait(java.lang.String,java.time.Duration)">
    +<h3>wait</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></span>&nbsp;<span class="element-name">wait</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</span></div>
    +<div class="block">Suspends execution for the specified duration without consuming compute resources.
    +
    + <p>On first execution, checkpoints a wait operation and suspends the Lambda. On replay after the duration has
    + elapsed, returns immediately.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>duration</code> - the duration to wait</dd>
    +<dt>Returns:</dt>
    +<dd>always <code>null</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitAsync(java.lang.String,java.time.Duration)">
    +<h3>waitAsync</h3>
    +<div class="member-signature"><span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp;<span class="element-name">waitAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</span></div>
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>duration</code> - the duration to wait</dd>
    +<dt>Returns:</dt>
    +<dd>a future that completes when the wait duration has elapsed</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invoke(java.lang.String,java.lang.String,U,java.lang.Class)">
    +<h3 id="invoke(java.lang.String,java.lang.String,java.lang.Object,java.lang.Class)">invoke</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">invoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Invokes another Lambda function by name and blocks until the result is available.
    +
    + <p>On first execution, checkpoints a chained invoke operation that triggers the target function. On replay,
    + returns the cached result without re-invoking.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dd><code>U</code> - the payload type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>functionName</code> - the ARN or name of the Lambda function to invoke</dd>
    +<dd><code>payload</code> - the input payload to send to the target function</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dt>Returns:</dt>
    +<dd>the invocation result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">
    +<h3 id="invoke(java.lang.String,java.lang.String,java.lang.Object,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">invoke</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">invoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</span></div>
    +<div class="block">Invokes another Lambda function with custom configuration, blocking until the result is available.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)">
    +<h3 id="invoke(java.lang.String,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken)">invoke</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">invoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">
    +<h3 id="invoke(java.lang.String,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">invoke</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">invoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</span></div>
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">
    +<h3 id="invokeAsync(java.lang.String,java.lang.String,java.lang.Object,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">invokeAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">invokeAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</span></div>
    +<div class="block">Invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)">
    +<h3 id="invokeAsync(java.lang.String,java.lang.String,java.lang.Object,java.lang.Class)">invokeAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">invokeAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Asynchronously invokes another Lambda function, returning a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a>.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)">
    +<h3 id="invokeAsync(java.lang.String,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken)">invokeAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">invokeAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">
    +<h3 id="invokeAsync(java.lang.String,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">invokeAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">invokeAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</span></div>
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.
    +
    + <p>This is the core invokeAsync implementation. All other invoke/invokeAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dd><code>U</code> - the payload type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>functionName</code> - the ARN or name of the Lambda function to invoke</dd>
    +<dd><code>payload</code> - the input payload to send to the target function</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>config</code> - the invoke configuration (custom SerDes for result and payload)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the invocation result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)">
    +<h3>createCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">createCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</span></div>
    +<div class="block">Creates a callback with custom configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)">
    +<h3>createCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">createCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Creates a callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createCallback(java.lang.String,java.lang.Class)">
    +<h3>createCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">createCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Creates a callback with default configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)">
    +<h3>createCallback</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">createCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</span></div>
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.
    +
    + <p>This is the core createCallback implementation. Returns a <a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableCallbackFuture</code></a> containing a callback
    + ID that external systems use to report completion via the Lambda Durable API.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>config</code> - the callback configuration (custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future containing the callback ID and eventual result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)">
    +<h3>runInChildContext</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">runInChildContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">
    +<h3>runInChildContext</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">runInChildContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Runs a function in a child context using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)">
    +<h3>runInChildContextAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runInChildContextAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the DurableFuture of the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">
    +<h3>runInChildContextAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runInChildContextAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the DurableFuture of the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">
    +<h3>runInChildContext</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">runInChildContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">
    +<h3>runInChildContext</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">runInChildContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dd><code>config</code> - the configuration for the child context</dd>
    +<dt>Returns:</dt>
    +<dd>the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">
    +<h3>runInChildContextAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runInChildContextAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dd><code>config</code> - the configuration for the child context</dd>
    +<dt>Returns:</dt>
    +<dd>the DurableFuture wrapping the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">
    +<h3>runInChildContextAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runInChildContextAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dd><code>config</code> - the configuration for the child context</dd>
    +<dt>Returns:</dt>
    +<dd>the DurableFuture wrapping the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)">
    +<h3>map</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">map</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">
    +<h3>map</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">map</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)">
    +<h3>map</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">map</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">
    +<h3>map</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">map</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)">
    +<h3>mapAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span>&nbsp;<span class="element-name">mapAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">
    +<h3>mapAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span>&nbsp;<span class="element-name">mapAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)">
    +<h3>mapAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span>&nbsp;<span class="element-name">mapAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">
    +<h3>mapAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span>&nbsp;<span class="element-name">mapAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="parallel(java.lang.String)">
    +<h3>parallel</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span>&nbsp;<span class="element-name">parallel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Creates a <a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently with default config</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new ParallelDurableFuture for registering and executing branches</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)">
    +<h3>parallel</h3>
    +<div class="member-signature"><span class="return-type"><a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span>&nbsp;<span class="element-name">parallel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</span></div>
    +<div class="block">Creates a <a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>config</code> - the parallel execution configuration</dd>
    +<dt>Returns:</dt>
    +<dd>a new ParallelDurableFuture for registering and executing branches</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)">
    +<h3>waitForCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</span></div>
    +<div class="block">Executes a submitter function and waits for an external callback, blocking until the callback completes.
    +
    + <p>Combines a step (to run the submitter) and a callback (to receive the external result) in a child context. The
    + submitter receives a callback ID that external systems use to report completion.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the submitter function, receiving the callback ID and a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the callback result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)">
    +<h3>waitForCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</span></div>
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">
    +<h3>waitForCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</span></div>
    +<div class="block">Executes a submitter and waits for an external callback with custom configuration, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">
    +<h3>waitForCallback</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</span></div>
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)">
    +<h3>waitForCallbackAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForCallbackAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</span></div>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)">
    +<h3>waitForCallbackAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForCallbackAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</span></div>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">
    +<h3>waitForCallbackAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForCallbackAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</span></div>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">
    +<h3>waitForCallbackAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForCallbackAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</span></div>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.
    +
    + <p>This is the core waitForCallbackAsync implementation. All other waitForCallback/waitForCallbackAsync overloads
    + delegate here. Internally creates a child context containing a callback operation and a step that runs the
    + submitter function.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>func</code> - the submitter function, receiving the callback ID and a <a href="StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>waitForCallbackConfig</code> - the configuration for both the callback and submitter step</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the callback result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)">
    +<h3>waitForCondition</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCondition</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</span></div>
    +<div class="block">Polls a condition function until it signals done, blocking until complete.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>checkFunc</code> - the function that evaluates the condition and returns a <a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model"><code>WaitForConditionResult</code></a></dd>
    +<dt>Returns:</dt>
    +<dd>the final state value when the condition is met</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">
    +<h3>waitForCondition</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCondition</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</span></div>
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)">
    +<h3>waitForCondition</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCondition</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</span></div>
    +<div class="block">Polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">
    +<h3>waitForCondition</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">waitForCondition</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</span></div>
    +<div class="block">Polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)">
    +<h3>waitForConditionAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForConditionAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</span></div>
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">
    +<h3>waitForConditionAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForConditionAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</span></div>
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)">
    +<h3>waitForConditionAsync</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForConditionAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</span></div>
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">
    +<h3>waitForConditionAsync</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForConditionAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</span></div>
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.
    +
    + <p>This is the core waitForConditionAsync implementation. All other waitForCondition/waitForConditionAsync
    + overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>checkFunc</code> - the function that evaluates the condition and returns a <a href="model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model"><code>WaitForConditionResult</code></a></dd>
    +<dd><code>config</code> - the waitForCondition configuration (wait strategy, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the final state value</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableFuture.html b/javadoc/software/amazon/lambda/durable/DurableFuture.html
    new file mode 100644
    index 000000000..bcefdbc4f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableFuture.html
    @@ -0,0 +1,221 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: DurableFuture">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableFuture.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface DurableFuture" class="title">Interface DurableFuture&lt;T&gt;</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Subinterfaces:</dt>
    +<dd><code><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code>, <code><a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="operation/CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></code>, <code><a href="operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></code>, <code><a href="util/CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a></code>, <code><a href="operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></code>, <code><a href="operation/InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></code>, <code><a href="operation/MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></code>, <code><a href="operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code>, <code><a href="operation/SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></code>, <code><a href="operation/StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></code>, <code><a href="operation/WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></code>, <code><a href="operation/WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">DurableFuture&lt;T&gt;</span></div>
    +<div class="block">A future representing the result of an asynchronous durable operation.
    +
    + <p>Calling <a href="#get()"><code>get()</code></a> blocks the current thread until the operation completes, which may involve suspension and
    + replay across Lambda invocations.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1"><code><a href="#allOf(java.util.List)" class="member-name-link">allOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;&gt;&nbsp;futures)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1">
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1"><code><a href="#allOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">allOf</a><wbr>(<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;...&nbsp;futures)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1">
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1"><code><a href="#anyOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">anyOf</a><wbr>(<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;?&gt;...&nbsp;futures)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1">
    +<div class="block">Waits for any of the provided futures to complete and returns its result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="DurableFuture.html" title="type parameter in DurableFuture">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="return-type"><a href="DurableFuture.html" title="type parameter in DurableFuture">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="allOf(software.amazon.lambda.durable.DurableFuture...)">
    +<h3>allOf</h3>
    +<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/SafeVarargs.html" title="class or interface in java.lang" class="external-link">@SafeVarargs</a>
    +</span><span class="modifiers">static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</span>&nbsp;<span class="element-name">allOf</span><wbr><span class="parameters">(<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;...&nbsp;futures)</span></div>
    +<div class="block">Waits for all provided futures to complete and returns their results in order.
    +
    + <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
    + waits for all operations to complete. During replay, completed operations return immediately.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type of the futures</dd>
    +<dt>Parameters:</dt>
    +<dd><code>futures</code> - the futures to wait for</dd>
    +<dt>Returns:</dt>
    +<dd>a list of results in the same order as the input futures</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="allOf(java.util.List)">
    +<h3>allOf</h3>
    +<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</span>&nbsp;<span class="element-name">allOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;&gt;&nbsp;futures)</span></div>
    +<div class="block">Waits for all provided futures to complete and returns their results in order.
    +
    + <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
    + waits for all operations to complete. During replay, completed operations return immediately.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type of the futures</dd>
    +<dt>Parameters:</dt>
    +<dd><code>futures</code> - the list of futures to wait for</dd>
    +<dt>Returns:</dt>
    +<dd>a list of results in the same order as the input futures</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="anyOf(software.amazon.lambda.durable.DurableFuture...)">
    +<h3>anyOf</h3>
    +<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span>&nbsp;<span class="element-name">anyOf</span><wbr><span class="parameters">(<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;?&gt;...&nbsp;futures)</span></div>
    +<div class="block">Waits for any of the provided futures to complete and returns its result.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>futures</code> - the futures to wait for</dd>
    +<dt>Returns:</dt>
    +<dd>the result of the first future to complete</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/DurableHandler.html b/javadoc/software/amazon/lambda/durable/DurableHandler.html
    new file mode 100644
    index 000000000..a62c80579
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/DurableHandler.html
    @@ -0,0 +1,319 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableHandler (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, class: DurableHandler">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableHandler.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Class DurableHandler" class="title">Class DurableHandler&lt;I,<wbr>O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.DurableHandler&lt;I,<wbr>O&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the input type</dd>
    +<dd><code>O</code> - the output type</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="examples/callback/CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></code>, <code><a href="examples/child/ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></code>, <code><a href="examples/map/ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></code>, <code><a href="examples/wait/ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></code>, <code><a href="examples/general/CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></code>, <code><a href="examples/general/CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></code>, <code><a href="examples/map/DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></code>, <code><a href="examples/parallel/DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></code>, <code><a href="examples/step/DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></code>, <code><a href="examples/general/ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></code>, <code><a href="examples/general/GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></code>, <code><a href="examples/general/GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></code>, <code><a href="examples/general/LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></code>, <code><a href="examples/child/ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></code>, <code><a href="examples/step/ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></code>, <code><a href="examples/general/NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></code>, <code><a href="examples/parallel/ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></code>, <code><a href="examples/parallel/ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></code>, <code><a href="examples/parallel/ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></code>, <code><a href="examples/step/RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></code>, <code><a href="examples/step/RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></code>, <code><a href="examples/invoke/SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></code>, <code><a href="examples/map/SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></code>, <code><a href="examples/step/SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></code>, <code><a href="examples/wait/WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></code>, <code><a href="examples/wait/WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></code>, <code><a href="examples/wait/WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></code>, <code><a href="examples/wait/WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></code>, <code><a href="examples/callback/WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></code>, <code><a href="examples/wait/WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">DurableHandler&lt;I,<wbr>O&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements com.amazonaws.services.lambda.runtime.RequestStreamHandler</span></div>
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.
    +
    + <p>Extend this class and implement <a href="#handleRequest(I,software.amazon.lambda.durable.DurableContext)"><code>handleRequest(Object, DurableContext)</code></a> to build resilient, multi-step
    + workflows. The handler automatically manages checkpoint-and-replay, input deserialization, and communication with the
    + Lambda Durable Functions backend.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DurableHandler</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConfiguration()" class="member-name-link">getConfiguration</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the configuration used by this handler.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="DurableHandler.html" title="type parameter in DurableHandler">O</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#handleRequest(I,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="DurableHandler.html" title="type parameter in DurableHandler">I</a>&nbsp;input,
    + <a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inputStream,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outputStream,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Reads the request, executes the durable function handler and writes the response</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>DurableHandler</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">DurableHandler</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getConfiguration()">
    +<h3>getConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">getConfiguration</span>()</div>
    +<div class="block">Gets the configuration used by this handler. This allows test frameworks and other tools to access the handler's
    + configuration for testing purposes.
    +
    + <p>DurableConfig is immutable.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The DurableConfig instance used by this handler</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createConfiguration()">
    +<h3>createConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">createConfiguration</span>()</div>
    +<div class="block">Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    + SerDes, or other configuration.
    +
    + <p>The <a href="client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client"><code>LambdaDurableFunctionsClient</code></a> is a wrapper that customers
    + should use to inject their own configured <code>LambdaClient</code>. This
    + allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    +
    + <p>Basic example with custom region and credentials:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Create custom Lambda client with specific configuration
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    +         .build();
    +
    +     // Wrap the Lambda client with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Configure AWS CRT HTTP Client for optimal performance
    +     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    +         .maxConcurrency(50)
    +         .connectionTimeout(Duration.ofSeconds(30))
    +         .connectionMaxIdleTime(Duration.ofSeconds(60))
    +         .build();
    +
    +     // Create Lambda client with CRT HTTP client
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_EAST_1)
    +         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    +         .httpClient(crtHttpClient)
    +         .overrideConfiguration(ClientOverrideConfiguration.builder()
    +             .retryPolicy(RetryPolicy.builder()
    +                 .numRetries(5)
    +                 .build())
    +             .build())
    +         .build();
    +
    +     // Wrap with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    +         .withExecutorService(customExecutor)  // Optional: custom thread pool
    +         .build();
    + }
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>DurableConfig with desired configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inputStream,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outputStream,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;context)</span>
    +                         throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
    +<div class="block">Reads the request, executes the durable function handler and writes the response</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code>handleRequest</code>&nbsp;in interface&nbsp;<code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputStream</code> - the input stream</dd>
    +<dd><code>outputStream</code> - the output stream</dd>
    +<dd><code>context</code> - the Lambda context</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - thrown when serialize/deserialize fails</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleRequest(I,software.amazon.lambda.durable.DurableContext)">
    +<h3 id="handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)">handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="DurableHandler.html" title="type parameter in DurableHandler">O</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="DurableHandler.html" title="type parameter in DurableHandler">I</a>&nbsp;input,
    + <a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/ParallelDurableFuture.html b/javadoc/software/amazon/lambda/durable/ParallelDurableFuture.html
    new file mode 100644
    index 000000000..b3668ed69
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/ParallelDurableFuture.html
    @@ -0,0 +1,266 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelDurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: ParallelDurableFuture">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelDurableFuture.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface ParallelDurableFuture" class="title">Interface ParallelDurableFuture</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="operation/ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">ParallelDurableFuture</span><span class="extends-implements">
    +extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>, <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</span></div>
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#branch(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default &lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Calls <a href="DurableFuture.html#get()"><code>DurableFuture.get()</code></a> if not already called.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableFuture">Methods inherited from interface&nbsp;software.amazon.lambda.durable.<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></h3>
    +<code><a href="DurableFuture.html#get()">get</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="branch(java.lang.String,java.lang.Class,java.util.function.Function)">
    +<h3>branch</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">branch</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the branch name</dd>
    +<dd><code>resultType</code> - the result type token for generic types</dd>
    +<dd><code>func</code> - the function to execute in the branch's child context</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that will contain the branch result</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if called after <a href="#close()"><code>close()</code></a></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">
    +<h3>branch</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">branch</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</span></div>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the branch name</dd>
    +<dd><code>resultType</code> - the result type token for generic types</dd>
    +<dd><code>func</code> - the function to execute in the branch's child context</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that will contain the branch result</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if called after <a href="#close()"><code>close()</code></a></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">
    +<h3>branch</h3>
    +<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">branch</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</span></div>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the branch name</dd>
    +<dd><code>resultType</code> - the result type token for generic types</dd>
    +<dd><code>func</code> - the function to execute in the branch's child context</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that will contain the branch result</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if called after <a href="#close()"><code>close()</code></a></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">
    +<h3>branch</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">branch</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</span></div>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the branch name</dd>
    +<dd><code>resultType</code> - the result type token for generic types</dd>
    +<dd><code>func</code> - the function to execute in the branch's child context</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that will contain the branch result</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if called after <a href="#close()"><code>close()</code></a></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Calls <a href="DurableFuture.html#get()"><code>DurableFuture.get()</code></a> if not already called. Guarantees that the context is closed.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/StepContext.html b/javadoc/software/amazon/lambda/durable/StepContext.html
    new file mode 100644
    index 000000000..2bf3924aa
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/StepContext.html
    @@ -0,0 +1,145 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, interface: StepContext">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepContext.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Interface StepContext" class="title">Interface StepContext</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="context/StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">StepContext</span><span class="extends-implements">
    +extends <a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getAttempt()" class="member-name-link">getAttempt</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.context.<a href="context/BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></h3>
    +<code><a href="context/BaseContext.html#close()">close</a>, <a href="context/BaseContext.html#getContextId()">getContextId</a>, <a href="context/BaseContext.html#getContextName()">getContextName</a>, <a href="context/BaseContext.html#getDurableConfig()">getDurableConfig</a>, <a href="context/BaseContext.html#getExecutionArn()">getExecutionArn</a>, <a href="context/BaseContext.html#getLambdaContext()">getLambdaContext</a>, <a href="context/BaseContext.html#getLogger()">getLogger</a>, <a href="context/BaseContext.html#isReplaying()">isReplaying</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getAttempt()">
    +<h3>getAttempt</h3>
    +<div class="member-signature"><span class="return-type">int</span>&nbsp;<span class="element-name">getAttempt</span>()</div>
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/TypeToken.html b/javadoc/software/amazon/lambda/durable/TypeToken.html
    new file mode 100644
    index 000000000..9ddd95275
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/TypeToken.html
    @@ -0,0 +1,260 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>TypeToken (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable, class: TypeToken">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/TypeToken.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable</a></div>
    +<h1 title="Class TypeToken" class="title">Class TypeToken&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.TypeToken&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type being captured</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">TypeToken&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.
    +
    + <p>This class enables type-safe deserialization of complex generic types like <code>List&lt;MyObject&gt;</code> or
    + <code>Map&lt;String, MyObject&gt;</code> that would otherwise lose their type information due to Java's type erasure.
    +
    + <p>Usage example:
    +
    + <pre><code>
    + // Capture generic type information
    + TypeToken&lt;List&lt;String&gt;&gt; token = new TypeToken&lt;List&lt;String&gt;&gt;() {};
    +
    + // Use with DurableContext
    + List&lt;String&gt; items = context.step("fetch-items",
    +     new TypeToken&lt;List&lt;String&gt;&gt;() {},
    +     stepCtx -&gt; fetchItems());
    + </code></pre></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">TypeToken</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new TypeToken.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;U&gt;&nbsp;<a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;U&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#get(java.lang.Class)" class="member-name-link">get</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;U&gt;&nbsp;clazz)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a TypeToken for a simple (non-generic) class.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getType()" class="member-name-link">getType</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the captured type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>TypeToken</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">TypeToken</span>()</div>
    +<div class="block">Constructs a new TypeToken. This constructor must be called from an anonymous subclass to capture the type
    + parameter.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if created without a type parameter</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="get(java.lang.Class)">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;U&gt;</span>&nbsp;<span class="return-type"><a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;U&gt;</span>&nbsp;<span class="element-name">get</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;U&gt;&nbsp;clazz)</span></div>
    +<div class="block">Creates a TypeToken for a simple (non-generic) class.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>U</code> - the type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>clazz</code> - the class to create a token for</dd>
    +<dt>Returns:</dt>
    +<dd>a TypeToken representing the given class</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getType()">
    +<h3>getType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a></span>&nbsp;<span class="element-name">getType</span>()</div>
    +<div class="block">Returns the captured type.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the type represented by this token</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableCallbackFuture.html b/javadoc/software/amazon/lambda/durable/class-use/DurableCallbackFuture.html
    new file mode 100644
    index 000000000..10673cdb4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableCallbackFuture.html
    @@ -0,0 +1,147 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.DurableCallbackFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: DurableCallbackFuture">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.DurableCallbackFuture" class="title">Uses of Interface<br>software.amazon.lambda.durable.DurableCallbackFuture</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,java.lang.Class)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a callback with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a callback with custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Classes in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that implement <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.Builder.html b/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.Builder.html
    new file mode 100644
    index 000000000..a2bb2563d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.Builder.html
    @@ -0,0 +1,125 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.DurableConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, class: DurableConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.DurableConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.DurableConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../DurableConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for DurableConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withCheckpointDelay(java.time.Duration)" class="member-name-link">withCheckpointDelay</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets how often the SDK checkpoints updates to backend.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)" class="member-name-link">withDurableExecutionClient</a><wbr>(<a href="../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>&nbsp;durableExecutionClient)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom DurableExecutionClient.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withExecutorService(java.util.concurrent.ExecutorService)" class="member-name-link">withExecutorService</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a>&nbsp;executorService)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom ExecutorService for running user-defined operations.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withLambdaClientBuilder(software.amazon.awssdk.services.lambda.LambdaClientBuilder)" class="member-name-link">withLambdaClientBuilder</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClientBuilder&nbsp;lambdaClientBuilder)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom LambdaClient for production use.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)" class="member-name-link">withLoggerConfig</a><wbr>(<a href="../logging/LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a>&nbsp;loggerConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom LoggerConfig.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)" class="member-name-link">withPollingStrategy</a><wbr>(<a href="../retry/PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a>&nbsp;pollingStrategy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the polling strategy.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom SerDes implementation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.html b/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.html
    new file mode 100644
    index 000000000..714707532
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableConfig.html
    @@ -0,0 +1,291 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.DurableConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, class: DurableConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.DurableConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.DurableConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../DurableConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the DurableConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableHandler.</span><code><a href="../DurableHandler.html#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../DurableConfig.html#defaultConfig()" class="member-name-link">defaultConfig</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a DurableConfig with default settings.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableHandler.</span><code><a href="../DurableHandler.html#getConfiguration()" class="member-name-link">getConfiguration</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Gets the configuration used by this handler.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseContext.</span><code><a href="../context/BaseContext.html#getDurableConfig()" class="member-name-link">getDurableConfig</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">BaseContextImpl.</span><code><a href="../context/BaseContextImpl.html#getDurableConfig()" class="member-name-link">getDurableConfig</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">createRootContext</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a root context (contextId = null)</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../context/BaseContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">BaseContextImpl</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextName,
    + <a href="../execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new BaseContext instance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../context/StepContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)" class="member-name-link">StepContextImpl</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a new StepContext instance for use in step operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a> that return <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncChildContextExample.</span><code><a href="../examples/child/ManyAsyncChildContextExample.html#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a> that return <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CustomConfigExample.</span><code><a href="../examples/general/CustomConfigExample.html#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>protected <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CustomPollingExample.</span><code><a href="../examples/general/CustomPollingExample.html#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a> that return <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncStepsExample.</span><code><a href="../examples/step/ManyAsyncStepsExample.html#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../execution/ExecutionManager.html#%3Cinit%3E(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">ExecutionManager</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a> in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="../testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="../testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#withDurableConfig(software.amazon.lambda.durable.DurableConfig)" class="member-name-link">withDurableConfig</a><wbr>(<a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Overrides the DurableConfig for this test runner.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableContext.MapFunction.html b/javadoc/software/amazon/lambda/durable/class-use/DurableContext.MapFunction.html
    new file mode 100644
    index 000000000..65c3b83d4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableContext.MapFunction.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.DurableContext.MapFunction (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: DurableContext, interface: MapFunction">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.DurableContext.MapFunction" class="title">Uses of Interface<br>software.amazon.lambda.durable.DurableContext.MapFunction</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableContext.html b/javadoc/software/amazon/lambda/durable/class-use/DurableContext.html
    new file mode 100644
    index 000000000..97c4c92de
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableContext.html
    @@ -0,0 +1,582 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.DurableContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: DurableContext">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.DurableContext" class="title">Uses of Interface<br>software.amazon.lambda.durable.DurableContext</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.callback">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.invoke">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.map">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.MapFunction.</span><code><a href="../DurableContext.MapFunction.html#apply(I,int,software.amazon.lambda.durable.DurableContext)" class="member-name-link">apply</a><wbr>(<a href="../DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>&nbsp;item,
    + int&nbsp;index,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Applies this function to the given item.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>abstract <a href="../DurableHandler.html" title="type parameter in DurableHandler">O</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableHandler.</span><code><a href="../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../DurableHandler.html" title="type parameter in DurableHandler">I</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Method parameters in <a href="../package-summary.html">software.amazon.lambda.durable</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Classes in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that implement <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../context/DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Method parameters in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.callback">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackExample.</span><code><a href="../examples/callback/CallbackExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackFailedExample.</span><code><a href="../examples/callback/WaitForCallbackFailedExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ChildContextExample.</span><code><a href="../examples/child/ChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../examples/child/ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ManyAsyncChildContextExample.</span><code><a href="../examples/child/ManyAsyncChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/child/ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CustomConfigExample.</span><code><a href="../examples/general/CustomConfigExample.html#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CustomPollingExample.</span><code><a href="../examples/general/CustomPollingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ErrorHandlingExample.</span><code><a href="../examples/general/ErrorHandlingExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">GenericInputOutputExample.</span><code><a href="../examples/general/GenericInputOutputExample.html#handleRequest(java.util.Map,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../examples/general/GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">GenericTypesExample.</span><code><a href="../examples/general/GenericTypesExample.html#handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/general/GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LoggingExample.</span><code><a href="../examples/general/LoggingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">NoopExample.</span><code><a href="../examples/general/NoopExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.invoke">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SimpleInvokeExample.</span><code><a href="../examples/invoke/SimpleInvokeExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.map">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ComplexMapExample.</span><code><a href="../examples/map/ComplexMapExample.html#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DeserializationFailedMapExample.</span><code><a href="../examples/map/DeserializationFailedMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SimpleMapExample.</span><code><a href="../examples/map/SimpleMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DeserializationFailedParallelExample.</span><code><a href="../examples/parallel/DeserializationFailedParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/parallel/DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../examples/parallel/ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelExample.</span><code><a href="../examples/parallel/ParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/parallel/ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../examples/parallel/ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelFailureToleranceExample.</span><code><a href="../examples/parallel/ParallelFailureToleranceExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/parallel/ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../examples/parallel/ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelWithWaitExample.</span><code><a href="../examples/parallel/ParallelWithWaitExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/parallel/ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DeserializationFailureExample.</span><code><a href="../examples/step/DeserializationFailureExample.html#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../examples/step/ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ManyAsyncStepsExample.</span><code><a href="../examples/step/ManyAsyncStepsExample.html#handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/step/ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RetryExample.</span><code><a href="../examples/step/RetryExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RetryInProcessExample.</span><code><a href="../examples/step/RetryInProcessExample.html#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SimpleStepExample.</span><code><a href="../examples/step/SimpleStepExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></h2>
    +<div class="caption"><span>Methods in <a href="../examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a> with parameters of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrentWaitForConditionExample.</span><code><a href="../examples/wait/ConcurrentWaitForConditionExample.html#handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/wait/ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitAsyncExample.</span><code><a href="../examples/wait/WaitAsyncExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitAtLeastExample.</span><code><a href="../examples/wait/WaitAtLeastExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitAtLeastInProcessExample.</span><code><a href="../examples/wait/WaitAtLeastInProcessExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitExample.</span><code><a href="../examples/wait/WaitExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../examples/types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionExample.</span><code><a href="../examples/wait/WaitForConditionExample.html#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;threshold,
    + <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../operation/ParallelOperation.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../operation/ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructor parameters in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a> in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with type arguments of type <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableFuture.html b/javadoc/software/amazon/lambda/durable/class-use/DurableFuture.html
    new file mode 100644
    index 000000000..fbdecd74e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableFuture.html
    @@ -0,0 +1,546 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.DurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: DurableFuture">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.DurableFuture" class="title">Uses of Interface<br>software.amazon.lambda.durable.DurableFuture</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.util">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Subinterfaces of <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Interface</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>interface&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../DurableCallbackFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>interface&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously invokes another Lambda function, returning a <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step, returning a <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that can be composed or blocked on.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a durable step using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableFuture.</span><code><a href="../DurableFuture.html#allOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">allOf</a><wbr>(<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;...&nbsp;futures)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableFuture.</span><code><a href="../DurableFuture.html#anyOf(software.amazon.lambda.durable.DurableFuture...)" class="member-name-link">anyOf</a><wbr>(<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;?&gt;...&nbsp;futures)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Waits for any of the provided futures to complete and returns its result.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Method parameters in <a href="../package-summary.html">software.amazon.lambda.durable</a> with type arguments of type <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableFuture.</span><code><a href="../DurableFuture.html#allOf(java.util.List)" class="member-name-link">allOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;&gt;&nbsp;futures)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Waits for all provided futures to complete and returns their results in order.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Classes in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that implement <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/SerializableDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/WaitOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../operation/ParallelOperation.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.util">
    +<h2>Uses of <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a> in <a href="../util/package-summary.html">software.amazon.lambda.durable.util</a></h2>
    +<div class="caption"><span>Classes in <a href="../util/package-summary.html">software.amazon.lambda.durable.util</a> that implement <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../util/CompletedDurableFuture.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">A <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that is already completed with a value.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/DurableHandler.html b/javadoc/software/amazon/lambda/durable/class-use/DurableHandler.html
    new file mode 100644
    index 000000000..f4d429952
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/DurableHandler.html
    @@ -0,0 +1,349 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.DurableHandler (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, class: DurableHandler">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.DurableHandler" class="title">Uses of Class<br>software.amazon.lambda.durable.DurableHandler</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.callback">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.invoke">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.map">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.callback">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/callback/CallbackExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating callback operations for external system integration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/callback/WaitForCallbackFailedExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/child/ChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating child context workflows with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/child/ManyAsyncChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Performance test example demonstrating concurrent async child contexts.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/general/CustomConfigExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating custom configuration with both custom HTTP client and custom SerDes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/general/CustomPollingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating custom polling strategy configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/general/ErrorHandlingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating error handling patterns with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/general/GenericInputOutputExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating a durable Lambda function that uses generic types in input and output.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/general/GenericTypesExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating TypeToken support for complex generic types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/general/LoggingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating DurableLogger usage for structured logging with execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/general/NoopExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Simple example demonstrating a durable function doesn't have any durable operation</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.invoke">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/invoke/SimpleInvokeExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Simple example demonstrating basic invoke execution with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.map">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/map/ComplexMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/map/DeserializationFailedMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/map/SimpleMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/parallel/DeserializationFailedParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/parallel/ParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/parallel/ParallelFailureToleranceExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating parallel execution with failure tolerance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/parallel/ParallelWithWaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating parallel branches where some branches include wait operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/step/DeserializationFailureExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/step/ManyAsyncStepsExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Performance test example demonstrating concurrent async steps.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/step/RetryExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Simple example demonstrating retry strategies with a flaky API.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/step/RetryInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating in-process retry behavior with concurrent operations.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/step/SimpleStepExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Simple example demonstrating basic step execution with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/wait/ConcurrentWaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating concurrent waitForCondition operations using map.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/wait/WaitAsyncExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating non-blocking wait with waitAsync().</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/wait/WaitAtLeastExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/wait/WaitAtLeastInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../examples/wait/WaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Example demonstrating step execution with wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../examples/wait/WaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Example demonstrating the waitForCondition operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a> in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/ParallelDurableFuture.html b/javadoc/software/amazon/lambda/durable/class-use/ParallelDurableFuture.html
    new file mode 100644
    index 000000000..122d9a2b1
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/ParallelDurableFuture.html
    @@ -0,0 +1,131 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.ParallelDurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: ParallelDurableFuture">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.ParallelDurableFuture" class="title">Uses of Interface<br>software.amazon.lambda.durable.ParallelDurableFuture</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#parallel(java.lang.String)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently with default config</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Classes in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that implement <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/StepContext.html b/javadoc/software/amazon/lambda/durable/class-use/StepContext.html
    new file mode 100644
    index 000000000..afc567e3e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/StepContext.html
    @@ -0,0 +1,338 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.StepContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, interface: StepContext">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.StepContext" class="title">Uses of Interface<br>software.amazon.lambda.durable.StepContext</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../package-summary.html">software.amazon.lambda.durable</a> with type arguments of type <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a durable step with the given name and blocks until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a durable step with the given name and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step, returning a <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that can be composed or blocked on.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a durable step using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a submitter function and waits for an external callback, blocking until the callback completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a submitter and waits for an external callback with custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Classes in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> that implement <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../context/StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Method parameters in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with type arguments of type <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructor parameters in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with type arguments of type <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/class-use/TypeToken.html b/javadoc/software/amazon/lambda/durable/class-use/TypeToken.html
    new file mode 100644
    index 000000000..42fd6397b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/class-use/TypeToken.html
    @@ -0,0 +1,722 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.TypeToken (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable, class: TypeToken">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../TypeToken.html" title="class in software.amazon.lambda.durable">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.TypeToken" class="title">Uses of Class<br>software.amazon.lambda.durable.TypeToken</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.serde">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;U&gt;&nbsp;<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;U&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">TypeToken.</span><code><a href="../TypeToken.html#get(java.lang.Class)" class="member-name-link">get</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;U&gt;&nbsp;clazz)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a TypeToken for a simple (non-generic) class.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> for generic result types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../operation/ParallelOperation.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../operation/ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/CallbackOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/ConcurrencyOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/InvokeOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="../operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.serde">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../serde/package-summary.html">software.amazon.lambda.durable.serde</a></h2>
    +<div class="caption"><span>Methods in <a href="../serde/package-summary.html">software.amazon.lambda.durable.serde</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableInputOutputSerDes.</span><code><a href="../serde/DurableInputOutputSerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Deserializes a JSON string to DurableExecutionInput object</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">JacksonSerDes.</span><code><a href="../serde/JacksonSerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SerDes.</span><code><a href="../serde/SerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../testing/CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a runner for the given function ARN with TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../testing/CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">TestResult.</span><code><a href="../testing/TestResult.html#getResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getResult</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Deserializes and returns the execution output using a TypeToken for generic types.</div>
    +</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">TestOperation.</span><code><a href="../testing/TestOperation.html#getStepResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getStepResult</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;type)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Deserializes and returns the step result using a TypeToken for generic types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../testing/LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="../testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="../testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../testing/LocalDurableTestRunner.html#withOutputType(software.amazon.lambda.durable.TypeToken)" class="member-name-link">withOutputType</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../testing/LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Overrides the output type for this test runner.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../testing/AsyncExecution.html#%3Cinit%3E(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)" class="member-name-link">AsyncExecution</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../testing/AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&nbsp;outputType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../testing/TestResult.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult</a><wbr>(<a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../testing/TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></h2>
    +<div class="caption"><span>Methods in <a href="../testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">HistoryEventProcessor.</span><code><a href="../testing/cloud/HistoryEventProcessor.html#processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">processEvents</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Processes a list of execution history events into a structured <a href="../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a> in <a href="../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Methods in <a href="../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a> with parameters of type <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../testing/local/LocalMemoryExecutionClient.html#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult</a><wbr>(<a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Build TestResult from current state.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/DurableExecutionClient.html b/javadoc/software/amazon/lambda/durable/client/DurableExecutionClient.html
    new file mode 100644
    index 000000000..8e4969ed8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/DurableExecutionClient.html
    @@ -0,0 +1,176 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableExecutionClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.client, interface: DurableExecutionClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableExecutionClient.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.client</a></div>
    +<h1 title="Interface DurableExecutionClient" class="title">Interface DurableExecutionClient</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></code>, <code><a href="../testing/local/LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">DurableExecutionClient</span></div>
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.
    +
    + <p>Provides checkpoint and state-retrieval operations used internally by the SDK.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="checkpoint(java.lang.String,java.lang.String,java.util.List)">
    +<h3>checkpoint</h3>
    +<div class="member-signature"><span class="return-type">software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</span>&nbsp;<span class="element-name">checkpoint</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</span></div>
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>token</code> - the checkpoint token</dd>
    +<dd><code>updates</code> - the operation updates to send</dd>
    +<dt>Returns:</dt>
    +<dd>the checkpoint response</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionState(java.lang.String,java.lang.String,java.lang.String)">
    +<h3>getExecutionState</h3>
    +<div class="member-signature"><span class="return-type">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</span>&nbsp;<span class="element-name">getExecutionState</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</span></div>
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>checkpointToken</code> - the checkpoint token</dd>
    +<dd><code>marker</code> - pagination marker, or null for the first page</dd>
    +<dt>Returns:</dt>
    +<dd>the execution state response</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html b/javadoc/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html
    new file mode 100644
    index 000000000..107e1f3a8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.html
    @@ -0,0 +1,227 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>LambdaDurableFunctionsClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.client, class: LambdaDurableFunctionsClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/LambdaDurableFunctionsClient.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.client</a></div>
    +<h1 title="Class LambdaDurableFunctionsClient" class="title">Class LambdaDurableFunctionsClient</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.client.LambdaDurableFunctionsClient</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LambdaDurableFunctionsClient</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="block">Default implementation of <a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> backed by the AWS Lambda SDK client.
    +
    + <p>Translates SDK-level checkpoint and state-retrieval calls into the corresponding <code>LambdaClient</code> API
    + requests.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">LambdaDurableFunctionsClient</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LambdaDurableFunctionsClient with the provided LambdaClient.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.LambdaClient)">
    +<h3>LambdaDurableFunctionsClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LambdaDurableFunctionsClient</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</span></div>
    +<div class="block">Creates a LambdaDurableFunctionsClient with the provided LambdaClient.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>lambdaClient</code> - LambdaClient instance to use for backend communication</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if lambdaClient is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="checkpoint(java.lang.String,java.lang.String,java.util.List)">
    +<h3>checkpoint</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</span>&nbsp;<span class="element-name">checkpoint</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="DurableExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)">DurableExecutionClient</a></code></span></div>
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="DurableExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)">checkpoint</a></code>&nbsp;in interface&nbsp;<code><a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>token</code> - the checkpoint token</dd>
    +<dd><code>updates</code> - the operation updates to send</dd>
    +<dt>Returns:</dt>
    +<dd>the checkpoint response</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionState(java.lang.String,java.lang.String,java.lang.String)">
    +<h3>getExecutionState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</span>&nbsp;<span class="element-name">getExecutionState</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="DurableExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)">DurableExecutionClient</a></code></span></div>
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="DurableExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)">getExecutionState</a></code>&nbsp;in interface&nbsp;<code><a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>checkpointToken</code> - the checkpoint token</dd>
    +<dd><code>marker</code> - pagination marker, or null for the first page</dd>
    +<dt>Returns:</dt>
    +<dd>the execution state response</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/class-use/DurableExecutionClient.html b/javadoc/software/amazon/lambda/durable/client/class-use/DurableExecutionClient.html
    new file mode 100644
    index 000000000..ab25b17a6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/class-use/DurableExecutionClient.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.client.DurableExecutionClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.client, interface: DurableExecutionClient">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.client.DurableExecutionClient" class="title">Uses of Interface<br>software.amazon.lambda.durable.client.DurableExecutionClient</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.client">software.amazon.lambda.durable.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../../DurableConfig.html#getDurableExecutionClient()" class="member-name-link">getDurableExecutionClient</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the configured DurableExecutionClient.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../../DurableConfig.Builder.html#withDurableExecutionClient(software.amazon.lambda.durable.client.DurableExecutionClient)" class="member-name-link">withDurableExecutionClient</a><wbr>(<a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>&nbsp;durableExecutionClient)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom DurableExecutionClient.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.client">
    +<h2>Uses of <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a> in <a href="../package-summary.html">software.amazon.lambda.durable.client</a></h2>
    +<div class="caption"><span>Classes in <a href="../package-summary.html">software.amazon.lambda.durable.client</a> that implement <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../LambdaDurableFunctionsClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default implementation of <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> backed by the AWS Lambda SDK client.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a> in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Classes in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a> that implement <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../testing/local/LocalMemoryExecutionClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">In-memory implementation of <a href="../DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> for local testing.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/class-use/LambdaDurableFunctionsClient.html b/javadoc/software/amazon/lambda/durable/client/class-use/LambdaDurableFunctionsClient.html
    new file mode 100644
    index 000000000..b6cba7081
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/class-use/LambdaDurableFunctionsClient.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.client.LambdaDurableFunctionsClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.client, class: LambdaDurableFunctionsClient">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.client.LambdaDurableFunctionsClient" class="title">Uses of Class<br>software.amazon.lambda.durable.client.LambdaDurableFunctionsClient</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.client.LambdaDurableFunctionsClient</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/package-summary.html b/javadoc/software/amazon/lambda/durable/client/package-summary.html
    new file mode 100644
    index 000000000..0df893b15
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/package-summary.html
    @@ -0,0 +1,111 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.client (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.client">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.client" class="title">Package software.amazon.lambda.durable.client</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.client</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Default implementation of <a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> backed by the AWS Lambda SDK client.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/package-tree.html b/javadoc/software/amazon/lambda/durable/client/package-tree.html
    new file mode 100644
    index 000000000..f3e72edea
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/package-tree.html
    @@ -0,0 +1,83 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.client Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.client">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.client</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.client.<a href="LambdaDurableFunctionsClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.client">LambdaDurableFunctionsClient</a> (implements software.amazon.lambda.durable.client.<a href="DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.client.<a href="DurableExecutionClient.html" class="type-name-link" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/client/package-use.html b/javadoc/software/amazon/lambda/durable/client/package-use.html
    new file mode 100644
    index 000000000..9204b85b4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/client/package-use.html
    @@ -0,0 +1,117 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.client (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.client">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.client" class="title">Uses of Package<br>software.amazon.lambda.durable.client</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.client</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.client">software.amazon.lambda.durable.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.client</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableExecutionClient.html#software.amazon.lambda.durable">DurableExecutionClient</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.client">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.client</a> used by <a href="package-summary.html">software.amazon.lambda.durable.client</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableExecutionClient.html#software.amazon.lambda.durable.client">DurableExecutionClient</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.client</a> used by <a href="../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableExecutionClient.html#software.amazon.lambda.durable.testing.local">DurableExecutionClient</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Client interface for communicating with the Lambda Durable Functions backend.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/CallbackConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/CallbackConfig.Builder.html
    new file mode 100644
    index 000000000..4758fd666
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/CallbackConfig.Builder.html
    @@ -0,0 +1,234 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: CallbackConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class CallbackConfig.Builder" class="title">Class CallbackConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.CallbackConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">CallbackConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.time.Duration,java.time.Duration,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a> instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#heartbeatTimeout(java.time.Duration)" class="member-name-link">heartbeatTimeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the maximum duration between heartbeats before the callback is considered failed.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the callback.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#timeout(java.time.Duration)" class="member-name-link">timeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the maximum duration to wait for the callback to complete before timing out.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.time.Duration,java.time.Duration,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="timeout(java.time.Duration)">
    +<h3>timeout</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span>&nbsp;<span class="element-name">timeout</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span></div>
    +<div class="block">Sets the maximum duration to wait for the callback to complete before timing out.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>timeout</code> - the timeout duration</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="heartbeatTimeout(java.time.Duration)">
    +<h3>heartbeatTimeout</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span>&nbsp;<span class="element-name">heartbeatTimeout</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout)</span></div>
    +<div class="block">Sets the maximum duration between heartbeats before the callback is considered failed.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>heartbeatTimeout</code> - the heartbeat timeout duration</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom serializer for the callback.
    +
    + <p>If not specified, the callback will use the default SerDes configured for the handler. This allows
    + per-callback customization of serialization behavior, useful for callbacks that need special handling (e.g.,
    + custom date formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a> instance.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/CallbackConfig.html b/javadoc/software/amazon/lambda/durable/config/CallbackConfig.html
    new file mode 100644
    index 000000000..4802c0eda
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/CallbackConfig.html
    @@ -0,0 +1,214 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: CallbackConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class CallbackConfig" class="title">Class CallbackConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.CallbackConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for callback operations.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="CallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder with default values.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#heartbeatTimeout()" class="member-name-link">heartbeatTimeout</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the maximum duration between heartbeats before the callback is considered failed.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the custom serializer for this callback, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#timeout()" class="member-name-link">timeout</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the maximum duration to wait for the callback to complete.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a new builder pre-populated with this config's values.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="timeout()">
    +<h3>timeout</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">timeout</span>()</div>
    +<div class="block">Returns the maximum duration to wait for the callback to complete.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the timeout duration, or null if not specified</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="heartbeatTimeout()">
    +<h3>heartbeatTimeout</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">heartbeatTimeout</span>()</div>
    +<div class="block">Returns the maximum duration between heartbeats before the callback is considered failed.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the heartbeat timeout duration, or null if not specified</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<div class="block">Returns the custom serializer for this callback, or null if not specified (uses default SerDes).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder with default values.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +<div class="block">Creates a new builder pre-populated with this config's values.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/CompletionConfig.html b/javadoc/software/amazon/lambda/durable/config/CompletionConfig.html
    new file mode 100644
    index 000000000..aa27f3793
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/CompletionConfig.html
    @@ -0,0 +1,350 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CompletionConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, record: CompletionConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CompletionConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Record Class CompletionConfig" class="title">Record Class CompletionConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.CompletionConfig</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">CompletionConfig</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html" title="class or interface in java.lang" class="external-link">Double</a>&nbsp;toleratedFailurePercentage)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Controls when a concurrent operation (map or parallel) completes.
    +
    + <p>Provides factory methods for common completion strategies and fine-grained control via <code>minSuccessful</code>,
    + <code>toleratedFailureCount</code>, and <code>toleratedFailurePercentage</code>.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Double)" class="member-name-link">CompletionConfig</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html" title="class or interface in java.lang" class="external-link">Double</a>&nbsp;toleratedFailurePercentage)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>CompletionConfig</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#allCompleted()" class="member-name-link">allCompleted</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">All items run regardless of failures.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#allSuccessful()" class="member-name-link">allSuccessful</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">All items must succeed.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#firstSuccessful()" class="member-name-link">firstSuccessful</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Complete as soon as the first item succeeds.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#minSuccessful()" class="member-name-link">minSuccessful</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#minSuccessful(int)" class="member-name-link">minSuccessful</a><wbr>(int&nbsp;count)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Complete when the specified number of items have succeeded.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toleratedFailureCount()" class="member-name-link">toleratedFailureCount</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>toleratedFailureCount</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toleratedFailureCount(int)" class="member-name-link">toleratedFailureCount</a><wbr>(int&nbsp;count)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Complete when more than the specified number of failures have occurred.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html" title="class or interface in java.lang" class="external-link">Double</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toleratedFailurePercentage()" class="member-name-link">toleratedFailurePercentage</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>toleratedFailurePercentage</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toleratedFailurePercentage(double)" class="member-name-link">toleratedFailurePercentage</a><wbr>(double&nbsp;percentage)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.Integer,java.lang.Double)">
    +<h3>CompletionConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CompletionConfig</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html" title="class or interface in java.lang" class="external-link">Double</a>&nbsp;toleratedFailurePercentage)</span></div>
    +<div class="block">Creates an instance of a <code>CompletionConfig</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>minSuccessful</code> - the value for the <code>minSuccessful</code> record component</dd>
    +<dd><code>toleratedFailureCount</code> - the value for the <code>toleratedFailureCount</code> record component</dd>
    +<dd><code>toleratedFailurePercentage</code> - the value for the <code>toleratedFailurePercentage</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="allSuccessful()">
    +<h3>allSuccessful</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">allSuccessful</span>()</div>
    +<div class="block">All items must succeed. Zero failures tolerated.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="allCompleted()">
    +<h3>allCompleted</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">allCompleted</span>()</div>
    +<div class="block">All items run regardless of failures. Failures captured per-item.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="firstSuccessful()">
    +<h3>firstSuccessful</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">firstSuccessful</span>()</div>
    +<div class="block">Complete as soon as the first item succeeds.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="minSuccessful(int)">
    +<h3>minSuccessful</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">minSuccessful</span><wbr><span class="parameters">(int&nbsp;count)</span></div>
    +<div class="block">Complete when the specified number of items have succeeded.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toleratedFailureCount(int)">
    +<h3>toleratedFailureCount</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">toleratedFailureCount</span><wbr><span class="parameters">(int&nbsp;count)</span></div>
    +<div class="block">Complete when more than the specified number of failures have occurred.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toleratedFailurePercentage(double)">
    +<h3>toleratedFailurePercentage</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">toleratedFailurePercentage</span><wbr><span class="parameters">(double&nbsp;percentage)</span></div>
    +<div class="block">Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="minSuccessful()">
    +<h3>minSuccessful</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">minSuccessful</span>()</div>
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>minSuccessful</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toleratedFailureCount()">
    +<h3>toleratedFailureCount</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">toleratedFailureCount</span>()</div>
    +<div class="block">Returns the value of the <code>toleratedFailureCount</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>toleratedFailureCount</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toleratedFailurePercentage()">
    +<h3>toleratedFailurePercentage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html" title="class or interface in java.lang" class="external-link">Double</a></span>&nbsp;<span class="element-name">toleratedFailurePercentage</span>()</div>
    +<div class="block">Returns the value of the <code>toleratedFailurePercentage</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>toleratedFailurePercentage</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/InvokeConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/InvokeConfig.Builder.html
    new file mode 100644
    index 000000000..8254dfffa
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/InvokeConfig.Builder.html
    @@ -0,0 +1,214 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: InvokeConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class InvokeConfig.Builder" class="title">Class InvokeConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.InvokeConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">InvokeConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the InvokeConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#payloadSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">payloadSerDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;payloadSerDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the invoke operation payload.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the invoke result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tenantId(java.lang.String)" class="member-name-link">tenantId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenantId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the tenant ID for the invoke operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="tenantId(java.lang.String)">
    +<h3>tenantId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span>&nbsp;<span class="element-name">tenantId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenantId)</span></div>
    +<div class="block">Sets the tenant ID for the invoke operation.
    +
    + <p>The tenant ID is used to isolate execution state for different tenants. It's required when invoking
    + multi-tenant functions.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>tenantId</code> - the tenant ID to use</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="payloadSerDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>payloadSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span>&nbsp;<span class="element-name">payloadSerDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;payloadSerDes)</span></div>
    +<div class="block">Sets a custom serializer for the invoke operation payload.
    +
    + <p>If not specified, the invoke operation will use the default SerDes configured for the handler. This allows
    + per-invoke customization of serialization behavior, useful for invoke operations that need special handling
    + (e.g., custom date formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>payloadSerDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes)</span></div>
    +<div class="block">Sets a custom serializer for the invoke result.
    +
    + <p>If not specified, the invoke will use the default SerDes configured for the handler. This allows
    + per-invoke customization of serialization behavior, useful for invoke operations that need special handling
    + (e.g., custom date formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>resultSerDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the InvokeConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new InvokeConfig with the configured options</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/InvokeConfig.html b/javadoc/software/amazon/lambda/durable/config/InvokeConfig.html
    new file mode 100644
    index 000000000..667981f30
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/InvokeConfig.html
    @@ -0,0 +1,220 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: InvokeConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class InvokeConfig" class="title">Class InvokeConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.InvokeConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for chained invoke operations.
    +
    + <p>Controls serialization of the invoke payload and result, and optionally specifies a tenant ID.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="InvokeConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.config.InvokeConfig.Builder)" class="member-name-link">InvokeConfig</a><wbr>(<a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a>&nbsp;builder)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#payloadSerDes()" class="member-name-link">payloadSerDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tenantId()" class="member-name-link">tenantId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.config.InvokeConfig.Builder)">
    +<h3>InvokeConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeConfig</span><wbr><span class="parameters">(<a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a>&nbsp;builder)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="payloadSerDes()">
    +<h3>payloadSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">payloadSerDes</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tenantId()">
    +<h3>tenantId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tenantId</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/MapConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/MapConfig.Builder.html
    new file mode 100644
    index 000000000..eeb768775
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/MapConfig.Builder.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: MapConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class MapConfig.Builder" class="title">Class MapConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.MapConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">MapConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the completion criteria for the map operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the custom serializer to use for serializing map items and results.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="maxConcurrency(java.lang.Integer)">
    +<h3>maxConcurrency</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span>&nbsp;<span class="element-name">maxConcurrency</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionConfig(software.amazon.lambda.durable.config.CompletionConfig)">
    +<h3>completionConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span>&nbsp;<span class="element-name">completionConfig</span><wbr><span class="parameters">(<a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</span></div>
    +<div class="block">Sets the completion criteria for the map operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>completionConfig</code> - the completion configuration (default: <a href="CompletionConfig.html#allCompleted()"><code>CompletionConfig.allCompleted()</code></a>)</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets the custom serializer to use for serializing map items and results.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the serializer to use</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/MapConfig.html b/javadoc/software/amazon/lambda/durable/config/MapConfig.html
    new file mode 100644
    index 000000000..3bc498d63
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/MapConfig.html
    @@ -0,0 +1,205 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: MapConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class MapConfig" class="title">Class MapConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.MapConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MapConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for map operations.
    +
    + <p>Defaults to lenient completion (all items run regardless of failures) and unlimited concurrency.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="MapConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionConfig()" class="member-name-link">completionConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#maxConcurrency()" class="member-name-link">maxConcurrency</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="maxConcurrency()">
    +<h3>maxConcurrency</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">maxConcurrency</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>max concurrent items, or null for unlimited</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionConfig()">
    +<h3>completionConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">completionConfig</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>completion criteria, defaults to <a href="CompletionConfig.html#allCompleted()"><code>CompletionConfig.allCompleted()</code></a></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the custom serializer, or null to use the default</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html
    new file mode 100644
    index 000000000..5c2d49667
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.Builder.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelBranchConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: ParallelBranchConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelBranchConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class ParallelBranchConfig.Builder" class="title">Class ParallelBranchConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.ParallelBranchConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">ParallelBranchConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the ParallelBranchConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom serializer for the step.
    +
    + <p>If not specified, the parallel branch will use the default SerDes configured for the handler. This allows
    + per-branch customization of serialization behavior, useful for branches that need special handling (e.g.,
    + custom date formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the ParallelBranchConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new StepConfig with the configured options</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.html b/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.html
    new file mode 100644
    index 000000000..131b64e3c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/ParallelBranchConfig.html
    @@ -0,0 +1,185 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelBranchConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: ParallelBranchConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelBranchConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class ParallelBranchConfig" class="title">Class ParallelBranchConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.ParallelBranchConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelBranchConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration options for parallel branch in durable executions.
    +
    + <p>This class provides a builder pattern for configuring various aspects of parallel branch execution</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ParallelBranchConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for ParallelBranchConfig.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for ParallelBranchConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new Builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/ParallelConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/ParallelConfig.Builder.html
    new file mode 100644
    index 000000000..8f9a163e7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/ParallelConfig.Builder.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: ParallelConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class ParallelConfig.Builder" class="title">Class ParallelConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.ParallelConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">ParallelConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the ParallelConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="maxConcurrency(java.lang.Integer)">
    +<h3>maxConcurrency</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></span>&nbsp;<span class="element-name">maxConcurrency</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</span></div>
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxConcurrency</code> - the concurrency limit (default: unlimited)</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionConfig(software.amazon.lambda.durable.config.CompletionConfig)">
    +<h3>completionConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></span>&nbsp;<span class="element-name">completionConfig</span><wbr><span class="parameters">(<a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</span></div>
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>completionConfig</code> - the completion configuration for the parallel operation</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the ParallelConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new ParallelConfig with the configured options</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if any configuration values are invalid</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/ParallelConfig.html b/javadoc/software/amazon/lambda/durable/config/ParallelConfig.html
    new file mode 100644
    index 000000000..589f9edb9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/ParallelConfig.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: ParallelConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class ParallelConfig" class="title">Class ParallelConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.ParallelConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration options for parallel operations in durable executions.
    +
    + <p>This class provides a builder pattern for configuring concurrency limits and completion semantics for parallel
    + branch execution.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ParallelConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for ParallelConfig.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionConfig()" class="member-name-link">completionConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#maxConcurrency()" class="member-name-link">maxConcurrency</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="maxConcurrency()">
    +<h3>maxConcurrency</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">maxConcurrency</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the maximum number of branches running simultaneously, or -1 for unlimited</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionConfig()">
    +<h3>completionConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span>&nbsp;<span class="element-name">completionConfig</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for ParallelConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new Builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html
    new file mode 100644
    index 000000000..2f4e74e81
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.Builder.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RunInChildContextConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: RunInChildContextConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RunInChildContextConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class RunInChildContextConfig.Builder" class="title">Class RunInChildContextConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.RunInChildContextConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">RunInChildContextConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the RunInChildContextConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom serializer for the step.
    +
    + <p>If not specified, the RunInChildContext operation will use the default SerDes configured for the handler.
    + This allows per-operation customization of serialization behavior, useful for operations that need special
    + handling (e.g., custom date formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the RunInChildContextConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new StepConfig with the configured options</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.html b/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.html
    new file mode 100644
    index 000000000..ffc18e6d8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/RunInChildContextConfig.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RunInChildContextConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: RunInChildContextConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RunInChildContextConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class RunInChildContextConfig" class="title">Class RunInChildContextConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.RunInChildContextConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RunInChildContextConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.
    +
    + <p>This class provides a builder pattern for configuring various aspects of RunInChildContext execution.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="RunInChildContextConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for RunInChildContextConfig.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
    + SerDes).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<div class="block">Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
    + SerDes).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for RunInChildContextConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new Builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/StepConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/StepConfig.Builder.html
    new file mode 100644
    index 000000000..81cf2588f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/StepConfig.Builder.html
    @@ -0,0 +1,238 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: StepConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class StepConfig.Builder" class="title">Class StepConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.StepConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">StepConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy,
    + <a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the StepConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)" class="member-name-link">retryStrategy</a><wbr>(<a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the retry strategy for the step.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#semantics(software.amazon.lambda.durable.config.StepSemantics)" class="member-name-link">semantics</a><wbr>(<a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the delivery semantics for the step.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span><wbr><span class="parameters">(<a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy,
    + <a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)">
    +<h3>retryStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span>&nbsp;<span class="element-name">retryStrategy</span><wbr><span class="parameters">(<a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy)</span></div>
    +<div class="block">Sets the retry strategy for the step.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>retryStrategy</code> - the retry strategy to use, or null for default behavior</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="semantics(software.amazon.lambda.durable.config.StepSemantics)">
    +<h3>semantics</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span>&nbsp;<span class="element-name">semantics</span><wbr><span class="parameters">(<a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics)</span></div>
    +<div class="block">Sets the delivery semantics for the step.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>semantics</code> - the delivery semantics to use, defaults to AT_LEAST_ONCE_PER_RETRY if not specified</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom serializer for the step.
    +
    + <p>If not specified, the step will use the default SerDes configured for the handler. This allows per-step
    + customization of serialization behavior, useful for steps that need special handling (e.g., custom date
    + formats, encryption, compression).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the StepConfig instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new StepConfig with the configured options</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/StepConfig.html b/javadoc/software/amazon/lambda/durable/config/StepConfig.html
    new file mode 100644
    index 000000000..421c33df3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/StepConfig.html
    @@ -0,0 +1,210 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: StepConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class StepConfig" class="title">Class StepConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.StepConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration options for step operations in durable executions.
    +
    + <p>This class provides a builder pattern for configuring various aspects of step execution, including retry behavior
    + and delivery semantics.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="StepConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for StepConfig.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#retryStrategy()" class="member-name-link">retryStrategy</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the retry strategy for this step, or the default strategy if not specified.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#semantics()" class="member-name-link">semantics</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="retryStrategy()">
    +<h3>retryStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span>&nbsp;<span class="element-name">retryStrategy</span>()</div>
    +<div class="block">Returns the retry strategy for this step, or the default strategy if not specified.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="semantics()">
    +<h3>semantics</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span>&nbsp;<span class="element-name">semantics</span>()</div>
    +<div class="block">Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for StepConfig.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new Builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/StepSemantics.html b/javadoc/software/amazon/lambda/durable/config/StepSemantics.html
    new file mode 100644
    index 000000000..b362d4391
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/StepSemantics.html
    @@ -0,0 +1,235 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepSemantics (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, enum: StepSemantics">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepSemantics.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Enum Class StepSemantics" class="title">Enum Class StepSemantics</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.config.StepSemantics</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">StepSemantics</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&gt;</span></div>
    +<div class="block">Delivery semantics for step operations.
    +
    + <p>Controls how the SDK handles step execution and interruption recovery.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#AT_LEAST_ONCE_PER_RETRY" class="member-name-link">AT_LEAST_ONCE_PER_RETRY</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">At-least-once delivery (default).</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#AT_MOST_ONCE_PER_RETRY" class="member-name-link">AT_MOST_ONCE_PER_RETRY</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">At-most-once delivery per retry attempt.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="AT_LEAST_ONCE_PER_RETRY">
    +<h3>AT_LEAST_ONCE_PER_RETRY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span>&nbsp;<span class="element-name">AT_LEAST_ONCE_PER_RETRY</span></div>
    +<div class="block">At-least-once delivery (default). The step may be re-executed if interrupted. START checkpoint is
    + fire-and-forget.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="AT_MOST_ONCE_PER_RETRY">
    +<h3>AT_MOST_ONCE_PER_RETRY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span>&nbsp;<span class="element-name">AT_MOST_ONCE_PER_RETRY</span></div>
    +<div class="block">At-most-once delivery per retry attempt. The step will not be re-executed if interrupted. START checkpoint is
    + awaited before user code runs. If interrupted, throws
    + <a href="../exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception"><code>StepInterruptedException</code></a>.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html
    new file mode 100644
    index 000000000..6a54b033b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.Builder.html
    @@ -0,0 +1,208 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForCallbackConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: WaitForCallbackConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForCallbackConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class WaitForCallbackConfig.Builder" class="title">Class WaitForCallbackConfig.Builder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.WaitForCallbackConfig.Builder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">WaitForCallbackConfig.Builder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Builder for <a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Builder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Builds the WaitForCallbackConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">callbackConfig</a><wbr>(<a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;callbackConfig)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the callback configuration for the composite operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stepConfig(software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepConfig</a><wbr>(<a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;stepConfig)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the step configuration for the composite operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Builder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Builder</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="stepConfig(software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span>&nbsp;<span class="element-name">stepConfig</span><wbr><span class="parameters">(<a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;stepConfig)</span></div>
    +<div class="block">Sets the step configuration for the composite operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>stepConfig</code> - the step configuration</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)">
    +<h3>callbackConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span>&nbsp;<span class="element-name">callbackConfig</span><wbr><span class="parameters">(<a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;callbackConfig)</span></div>
    +<div class="block">Sets the callback configuration for the composite operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>callbackConfig</code> - the callback configuration</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></span>&nbsp;<span class="element-name">build</span>()</div>
    +<div class="block">Builds the WaitForCallbackConfig instance.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.html b/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.html
    new file mode 100644
    index 000000000..15c4e4b85
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/WaitForCallbackConfig.html
    @@ -0,0 +1,197 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForCallbackConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: WaitForCallbackConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForCallbackConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class WaitForCallbackConfig" class="title">Class WaitForCallbackConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.WaitForCallbackConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForCallbackConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.
    +
    + <p>Combines a <a href="StepConfig.html" title="class in software.amazon.lambda.durable.config"><code>StepConfig</code></a> (for the step that produces the callback) and a <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a> (for the
    + callback wait itself).</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="WaitForCallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for <a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#callbackConfig()" class="member-name-link">callbackConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the callback configuration for the composite operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stepConfig()" class="member-name-link">stepConfig</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the step configuration for the composite operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a builder pre-populated with this instance's values.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="stepConfig()">
    +<h3>stepConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span>&nbsp;<span class="element-name">stepConfig</span>()</div>
    +<div class="block">Returns the step configuration for the composite operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="callbackConfig()">
    +<h3>callbackConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span>&nbsp;<span class="element-name">callbackConfig</span>()</div>
    +<div class="block">Returns the callback configuration for the composite operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +<div class="block">Creates a builder pre-populated with this instance's values.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html
    new file mode 100644
    index 000000000..42422de95
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.Builder.html
    @@ -0,0 +1,200 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: WaitForConditionConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionConfig.Builder.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class WaitForConditionConfig.Builder" class="title">Class WaitForConditionConfig.Builder&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.WaitForConditionConfig.Builder&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">WaitForConditionConfig.Builder&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#initialState(T)" class="member-name-link">initialState</a><wbr>(<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&nbsp;initialState)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the initial state for the waitForCondition operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets a custom serializer for the waitForCondition operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)" class="member-name-link">waitStrategy</a><wbr>(<a href="../retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;&nbsp;waitStrategy)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the wait strategy for the waitForCondition operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)">
    +<h3>waitStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</span>&nbsp;<span class="element-name">waitStrategy</span><wbr><span class="parameters">(<a href="../retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;&nbsp;waitStrategy)</span></div>
    +<div class="block">Sets the wait strategy for the waitForCondition operation.
    +
    + <p>If not specified, the default exponential backoff strategy from <a href="../retry/WaitStrategies.html#defaultStrategy()"><code>WaitStrategies.defaultStrategy()</code></a>
    + is used.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>waitStrategy</code> - the strategy controlling polling intervals and termination</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</span>&nbsp;<span class="element-name">serDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Sets a custom serializer for the waitForCondition operation.
    +
    + <p>If not specified, the operation will use the default SerDes configured for the handler.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serDes</code> - the custom serializer to use, or null to use the default</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="initialState(T)">
    +<h3 id="initialState(java.lang.Object)">initialState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</span>&nbsp;<span class="element-name">initialState</span><wbr><span class="parameters">(<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&nbsp;initialState)</span></div>
    +<div class="block">Sets the initial state for the waitForCondition operation. The initial state will be null if it's not set.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>initialState</code> - the initial state object to pass to the condition function</dd>
    +<dt>Returns:</dt>
    +<dd>this builder for method chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="build()">
    +<h3>build</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</span>&nbsp;<span class="element-name">build</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.html b/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.html
    new file mode 100644
    index 000000000..e6d6df461
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/WaitForConditionConfig.html
    @@ -0,0 +1,222 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config, class: WaitForConditionConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<h1 title="Class WaitForConditionConfig" class="title">Class WaitForConditionConfig&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.config.WaitForConditionConfig&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForConditionConfig&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Configuration for <code>waitForCondition</code> operations.
    +
    + <p>Holds only optional parameters for a waitForCondition call. Use <a href="#builder()"><code>builder()</code></a> to create instances.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="WaitForConditionConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a new builder for <code>WaitForConditionConfig</code>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#initialState()" class="member-name-link">initialState</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the initial state object, or null if not specified.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the custom serializer, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a new builder initialized with the values from this config.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitStrategy()" class="member-name-link">waitStrategy</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the wait strategy that controls polling behavior.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="waitStrategy()">
    +<h3>waitStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</span>&nbsp;<span class="element-name">waitStrategy</span>()</div>
    +<div class="block">Returns the wait strategy that controls polling behavior. If no strategy was explicitly set, returns the default
    + strategy from <a href="../retry/WaitStrategies.html#defaultStrategy()"><code>WaitStrategies.defaultStrategy()</code></a>.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serDes()">
    +<h3>serDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span>&nbsp;<span class="element-name">serDes</span>()</div>
    +<div class="block">Returns the custom serializer, or null if not specified (uses default SerDes).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="initialState()">
    +<h3>initialState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a></span>&nbsp;<span class="element-name">initialState</span>()</div>
    +<div class="block">Returns the initial state object, or null if not specified.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toBuilder()">
    +<h3>toBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</span>&nbsp;<span class="element-name">toBuilder</span>()</div>
    +<div class="block">Returns a new builder initialized with the values from this config. Useful internally for injecting default
    + SerDes.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a new builder pre-populated with this config's values</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="builder()">
    +<h3>builder</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</span>&nbsp;<span class="element-name">builder</span>()</div>
    +<div class="block">Creates a new builder for <code>WaitForConditionConfig</code>. All fields are optional.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Returns:</dt>
    +<dd>a new builder instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.Builder.html
    new file mode 100644
    index 000000000..be20c5ad2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.Builder.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.CallbackConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: CallbackConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.CallbackConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.CallbackConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackConfig.</span><code><a href="../CallbackConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder with default values.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CallbackConfig.Builder.</span><code><a href="../CallbackConfig.Builder.html#heartbeatTimeout(java.time.Duration)" class="member-name-link">heartbeatTimeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the maximum duration between heartbeats before the callback is considered failed.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackConfig.Builder.</span><code><a href="../CallbackConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the callback.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CallbackConfig.Builder.</span><code><a href="../CallbackConfig.Builder.html#timeout(java.time.Duration)" class="member-name-link">timeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the maximum duration to wait for the callback to complete before timing out.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackConfig.</span><code><a href="../CallbackConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder pre-populated with this config's values.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.html
    new file mode 100644
    index 000000000..f27b7fe41
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/CallbackConfig.html
    @@ -0,0 +1,170 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.CallbackConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: CallbackConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.CallbackConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.CallbackConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a callback with custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackConfig.Builder.</span><code><a href="../CallbackConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a> instance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackConfig.</span><code><a href="../WaitForCallbackConfig.html#callbackConfig()" class="member-name-link">callbackConfig</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the callback configuration for the composite operation.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForCallbackConfig.Builder.</span><code><a href="../WaitForCallbackConfig.Builder.html#callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">callbackConfig</a><wbr>(<a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;callbackConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the callback configuration for the composite operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/CallbackOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/CompletionConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/CompletionConfig.html
    new file mode 100644
    index 000000000..3dabac4d0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/CompletionConfig.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.config.CompletionConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, record: CompletionConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.config.CompletionConfig" class="title">Uses of Record Class<br>software.amazon.lambda.durable.config.CompletionConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#allCompleted()" class="member-name-link">allCompleted</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">All items run regardless of failures.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#allSuccessful()" class="member-name-link">allSuccessful</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">All items must succeed.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.</span><code><a href="../MapConfig.html#completionConfig()" class="member-name-link">completionConfig</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelConfig.</span><code><a href="../ParallelConfig.html#completionConfig()" class="member-name-link">completionConfig</a>()</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#firstSuccessful()" class="member-name-link">firstSuccessful</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Complete as soon as the first item succeeds.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#minSuccessful(int)" class="member-name-link">minSuccessful</a><wbr>(int&nbsp;count)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Complete when the specified number of items have succeeded.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#toleratedFailureCount(int)" class="member-name-link">toleratedFailureCount</a><wbr>(int&nbsp;count)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Complete when more than the specified number of failures have occurred.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CompletionConfig.</span><code><a href="../CompletionConfig.html#toleratedFailurePercentage(double)" class="member-name-link">toleratedFailurePercentage</a><wbr>(double&nbsp;percentage)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0).</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../MapConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the completion criteria for the map operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelConfig.Builder.</span><code><a href="../ParallelConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.Builder.html
    new file mode 100644
    index 000000000..5d8d5f82d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.Builder.html
    @@ -0,0 +1,115 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.InvokeConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: InvokeConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.InvokeConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.InvokeConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.</span><code><a href="../InvokeConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../InvokeConfig.Builder.html#payloadSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">payloadSerDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;payloadSerDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the invoke operation payload.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../InvokeConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the invoke result.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../InvokeConfig.Builder.html#tenantId(java.lang.String)" class="member-name-link">tenantId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenantId)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the tenant ID for the invoke operation.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.</span><code><a href="../InvokeConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeConfig.html#%3Cinit%3E(software.amazon.lambda.durable.config.InvokeConfig.Builder)" class="member-name-link">InvokeConfig</a><wbr>(<a href="../InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a>&nbsp;builder)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.html
    new file mode 100644
    index 000000000..794272665
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/InvokeConfig.html
    @@ -0,0 +1,185 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.InvokeConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: InvokeConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.InvokeConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.InvokeConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Invokes another Lambda function with custom configuration, blocking until the result is available.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Invokes another Lambda function using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T,<wbr>
    +U&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Invokes another Lambda function using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../InvokeConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the InvokeConfig instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/InvokeOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.Builder.html
    new file mode 100644
    index 000000000..96ee59d30
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.Builder.html
    @@ -0,0 +1,104 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.MapConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: MapConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.MapConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.MapConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.</span><code><a href="../MapConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../MapConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the completion criteria for the map operation.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../MapConfig.Builder.html#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../MapConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the custom serializer to use for serializing map items and results.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.</span><code><a href="../MapConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.html
    new file mode 100644
    index 000000000..0b768679e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/MapConfig.html
    @@ -0,0 +1,175 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.MapConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: MapConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.MapConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.MapConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../MapConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.Builder.html
    new file mode 100644
    index 000000000..83ba9ef2e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.Builder.html
    @@ -0,0 +1,98 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.ParallelBranchConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: ParallelBranchConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.ParallelBranchConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.ParallelBranchConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelBranchConfig.</span><code><a href="../ParallelBranchConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for ParallelBranchConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelBranchConfig.Builder.</span><code><a href="../ParallelBranchConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelBranchConfig.</span><code><a href="../ParallelBranchConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.html
    new file mode 100644
    index 000000000..3518b0551
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelBranchConfig.html
    @@ -0,0 +1,138 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.ParallelBranchConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: ParallelBranchConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.ParallelBranchConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.ParallelBranchConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelDurableFuture.</span><code><a href="../../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelBranchConfig.Builder.</span><code><a href="../ParallelBranchConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the ParallelBranchConfig instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../../operation/ParallelOperation.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.Builder.html
    new file mode 100644
    index 000000000..77d920ec9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.Builder.html
    @@ -0,0 +1,100 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.ParallelConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: ParallelConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.ParallelConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.ParallelConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelConfig.</span><code><a href="../ParallelConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for ParallelConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelConfig.Builder.</span><code><a href="../ParallelConfig.Builder.html#completionConfig(software.amazon.lambda.durable.config.CompletionConfig)" class="member-name-link">completionConfig</a><wbr>(<a href="../CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a>&nbsp;completionConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelConfig.Builder.</span><code><a href="../ParallelConfig.Builder.html#maxConcurrency(java.lang.Integer)" class="member-name-link">maxConcurrency</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConcurrency)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the maximum number of branches that can run simultaneously.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.html
    new file mode 100644
    index 000000000..88c63b67f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/ParallelConfig.html
    @@ -0,0 +1,145 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.ParallelConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: ParallelConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.ParallelConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.ParallelConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a <a href="../../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelConfig.Builder.</span><code><a href="../ParallelConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the ParallelConfig instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ParallelOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.Builder.html
    new file mode 100644
    index 000000000..829238088
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.Builder.html
    @@ -0,0 +1,98 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.RunInChildContextConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: RunInChildContextConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.RunInChildContextConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.RunInChildContextConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RunInChildContextConfig.</span><code><a href="../RunInChildContextConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for RunInChildContextConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RunInChildContextConfig.Builder.</span><code><a href="../RunInChildContextConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RunInChildContextConfig.</span><code><a href="../RunInChildContextConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.html
    new file mode 100644
    index 000000000..4a8ff37c4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/RunInChildContextConfig.html
    @@ -0,0 +1,184 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.RunInChildContextConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: RunInChildContextConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.RunInChildContextConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.RunInChildContextConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RunInChildContextConfig.Builder.</span><code><a href="../RunInChildContextConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the RunInChildContextConfig instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.Builder.html
    new file mode 100644
    index 000000000..dc510f463
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.Builder.html
    @@ -0,0 +1,108 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.StepConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: StepConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.StepConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.StepConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.</span><code><a href="../StepConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for StepConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../StepConfig.Builder.html#retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)" class="member-name-link">retryStrategy</a><wbr>(<a href="../../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the retry strategy for the step.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../StepConfig.Builder.html#semantics(software.amazon.lambda.durable.config.StepSemantics)" class="member-name-link">semantics</a><wbr>(<a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the delivery semantics for the step.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../StepConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.</span><code><a href="../StepConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.html
    new file mode 100644
    index 000000000..0ae62f38f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/StepConfig.html
    @@ -0,0 +1,230 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.StepConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: StepConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.StepConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.StepConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a durable step with the given name and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a durable step using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and configuration, blocking until it completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">step</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step using custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a durable step using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><span class="deprecated-label">Deprecated.</span>
    +<div class="deprecation-comment">use the variants accepting StepContext instead</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../StepConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the StepConfig instance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackConfig.</span><code><a href="../WaitForCallbackConfig.html#stepConfig()" class="member-name-link">stepConfig</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the step configuration for the composite operation.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForCallbackConfig.Builder.</span><code><a href="../WaitForCallbackConfig.Builder.html#stepConfig(software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepConfig</a><wbr>(<a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;stepConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the step configuration for the composite operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/StepSemantics.html b/javadoc/software/amazon/lambda/durable/config/class-use/StepSemantics.html
    new file mode 100644
    index 000000000..c050d2340
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/StepSemantics.html
    @@ -0,0 +1,123 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.config.StepSemantics (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, enum: StepSemantics">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.config.StepSemantics" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.config.StepSemantics</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.</span><code><a href="../StepConfig.html#semantics()" class="member-name-link">semantics</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">StepSemantics.</span><code><a href="../StepSemantics.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>[]</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepSemantics.</span><code><a href="../StepSemantics.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../StepConfig.Builder.html#semantics(software.amazon.lambda.durable.config.StepSemantics)" class="member-name-link">semantics</a><wbr>(<a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the delivery semantics for the step.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy,
    + <a href="../StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.Builder.html
    new file mode 100644
    index 000000000..2c53da6a7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.Builder.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.WaitForCallbackConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: WaitForCallbackConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.WaitForCallbackConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.WaitForCallbackConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForCallbackConfig.</span><code><a href="../WaitForCallbackConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackConfig.Builder.</span><code><a href="../WaitForCallbackConfig.Builder.html#callbackConfig(software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">callbackConfig</a><wbr>(<a href="../CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;callbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the callback configuration for the composite operation.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForCallbackConfig.Builder.</span><code><a href="../WaitForCallbackConfig.Builder.html#stepConfig(software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepConfig</a><wbr>(<a href="../StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;stepConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the step configuration for the composite operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackConfig.</span><code><a href="../WaitForCallbackConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a builder pre-populated with this instance's values.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.html
    new file mode 100644
    index 000000000..fc774a35b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForCallbackConfig.html
    @@ -0,0 +1,155 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.WaitForCallbackConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: WaitForCallbackConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.WaitForCallbackConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.WaitForCallbackConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a submitter and waits for an external callback with custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Executes a submitter and waits for an external callback using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback with custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForCallbackConfig.Builder.</span><code><a href="../WaitForCallbackConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builds the WaitForCallbackConfig instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.Builder.html b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.Builder.html
    new file mode 100644
    index 000000000..77607ccb9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.Builder.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.WaitForConditionConfig.Builder (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: WaitForConditionConfig, class: Builder">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.WaitForConditionConfig.Builder" class="title">Uses of Class<br>software.amazon.lambda.durable.config.WaitForConditionConfig.Builder</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.</span><code><a href="../WaitForConditionConfig.html#builder()" class="member-name-link">builder</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new builder for <code>WaitForConditionConfig</code>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../WaitForConditionConfig.Builder.html#initialState(T)" class="member-name-link">initialState</a><wbr>(<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&nbsp;initialState)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the initial state for the waitForCondition operation.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../WaitForConditionConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the waitForCondition operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionConfig.</span><code><a href="../WaitForConditionConfig.html#toBuilder()" class="member-name-link">toBuilder</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns a new builder initialized with the values from this config.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../WaitForConditionConfig.Builder.html#waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)" class="member-name-link">waitStrategy</a><wbr>(<a href="../../retry/WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;&nbsp;waitStrategy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the wait strategy for the waitForCondition operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.html b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.html
    new file mode 100644
    index 000000000..8306de70a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/class-use/WaitForConditionConfig.html
    @@ -0,0 +1,175 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.config.WaitForConditionConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config, class: WaitForConditionConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.config.WaitForConditionConfig" class="title">Uses of Class<br>software.amazon.lambda.durable.config.WaitForConditionConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../WaitForConditionConfig.Builder.html#build()" class="member-name-link">build</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/package-summary.html b/javadoc/software/amazon/lambda/durable/config/package-summary.html
    new file mode 100644
    index 000000000..2ec7813c6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/package-summary.html
    @@ -0,0 +1,181 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.config (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.config">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.config" class="title">Package software.amazon.lambda.durable.config</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.config</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="CompletionConfig.html" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Controls when a concurrent operation (map or parallel) completes.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParallelConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Delivery semantics for step operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitForCallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for <a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/package-tree.html b/javadoc/software/amazon/lambda/durable/config/package-tree.html
    new file mode 100644
    index 000000000..024f3adf2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/package-tree.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.config Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.config">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.config</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="CallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="CallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="InvokeConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="InvokeConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="MapConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="MapConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="ParallelBranchConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="ParallelBranchConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="ParallelConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="ParallelConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">ParallelConfig.Builder</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="CompletionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">CompletionConfig</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="RunInChildContextConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="RunInChildContextConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="StepConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="StepConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="WaitForCallbackConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="WaitForCallbackConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="WaitForConditionConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="WaitForConditionConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.config.<a href="StepSemantics.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/config/package-use.html b/javadoc/software/amazon/lambda/durable/config/package-use.html
    new file mode 100644
    index 000000000..881d65fcf
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/config/package-use.html
    @@ -0,0 +1,294 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.config (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.config">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.config" class="title">Uses of Package<br>software.amazon.lambda.durable.config</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.config</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.config</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/CallbackConfig.html#software.amazon.lambda.durable">CallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/InvokeConfig.html#software.amazon.lambda.durable">InvokeConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapConfig.html#software.amazon.lambda.durable">MapConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelBranchConfig.html#software.amazon.lambda.durable">ParallelBranchConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelConfig.html#software.amazon.lambda.durable">ParallelConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/RunInChildContextConfig.html#software.amazon.lambda.durable">RunInChildContextConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/StepConfig.html#software.amazon.lambda.durable">StepConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForCallbackConfig.html#software.amazon.lambda.durable">WaitForCallbackConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/WaitForConditionConfig.html#software.amazon.lambda.durable">WaitForConditionConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.config</a> used by <a href="package-summary.html">software.amazon.lambda.durable.config</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/CallbackConfig.html#software.amazon.lambda.durable.config">CallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/CallbackConfig.Builder.html#software.amazon.lambda.durable.config">CallbackConfig.Builder</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Builder for <a href="CallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>CallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/CompletionConfig.html#software.amazon.lambda.durable.config">CompletionConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Controls when a concurrent operation (map or parallel) completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/InvokeConfig.html#software.amazon.lambda.durable.config">InvokeConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/InvokeConfig.Builder.html#software.amazon.lambda.durable.config">InvokeConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating InvokeConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/MapConfig.html#software.amazon.lambda.durable.config">MapConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapConfig.Builder.html#software.amazon.lambda.durable.config">MapConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating MapConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelBranchConfig.html#software.amazon.lambda.durable.config">ParallelBranchConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelBranchConfig.Builder.html#software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelConfig.html#software.amazon.lambda.durable.config">ParallelConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelConfig.Builder.html#software.amazon.lambda.durable.config">ParallelConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating ParallelConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/RunInChildContextConfig.html#software.amazon.lambda.durable.config">RunInChildContextConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/RunInChildContextConfig.Builder.html#software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepConfig.html#software.amazon.lambda.durable.config">StepConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/StepConfig.Builder.html#software.amazon.lambda.durable.config">StepConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for creating StepConfig instances.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepSemantics.html#software.amazon.lambda.durable.config">StepSemantics</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Delivery semantics for step operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/WaitForCallbackConfig.html#software.amazon.lambda.durable.config">WaitForCallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForCallbackConfig.Builder.html#software.amazon.lambda.durable.config">WaitForCallbackConfig.Builder</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Builder for <a href="WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config"><code>WaitForCallbackConfig</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/WaitForConditionConfig.html#software.amazon.lambda.durable.config">WaitForConditionConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionConfig.Builder.html#software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.config</a> used by <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/CallbackConfig.html#software.amazon.lambda.durable.context">CallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/InvokeConfig.html#software.amazon.lambda.durable.context">InvokeConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapConfig.html#software.amazon.lambda.durable.context">MapConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelConfig.html#software.amazon.lambda.durable.context">ParallelConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/RunInChildContextConfig.html#software.amazon.lambda.durable.context">RunInChildContextConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepConfig.html#software.amazon.lambda.durable.context">StepConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/WaitForCallbackConfig.html#software.amazon.lambda.durable.context">WaitForCallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for the <code>waitForCallback</code> composite operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionConfig.html#software.amazon.lambda.durable.context">WaitForConditionConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.config</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/CallbackConfig.html#software.amazon.lambda.durable.operation">CallbackConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for callback operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/InvokeConfig.html#software.amazon.lambda.durable.operation">InvokeConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for chained invoke operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapConfig.html#software.amazon.lambda.durable.operation">MapConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelBranchConfig.html#software.amazon.lambda.durable.operation">ParallelBranchConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for parallel branch in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelConfig.html#software.amazon.lambda.durable.operation">ParallelConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration options for parallel operations in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/RunInChildContextConfig.html#software.amazon.lambda.durable.operation">RunInChildContextConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration options for RunInChildContext operations in durable executions.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/StepConfig.html#software.amazon.lambda.durable.operation">StepConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration options for step operations in durable executions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionConfig.html#software.amazon.lambda.durable.operation">WaitForConditionConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for <code>waitForCondition</code> operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/BaseContext.html b/javadoc/software/amazon/lambda/durable/context/BaseContext.html
    new file mode 100644
    index 000000000..17cd11de3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/BaseContext.html
    @@ -0,0 +1,251 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>BaseContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.context, interface: BaseContext">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/BaseContext.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<h1 title="Interface BaseContext" class="title">Interface BaseContext</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Subinterfaces:</dt>
    +<dd><code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code>, <code><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></code>, <code><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code>, <code><a href="StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">BaseContext</span><span class="extends-implements">
    +extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Closes this context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getContextId()" class="member-name-link">getContextId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Gets the context ID for this context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getContextName()" class="member-name-link">getContextName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Gets the context name for this context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getDurableConfig()" class="member-name-link">getDurableConfig</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getExecutionArn()" class="member-name-link">getExecutionArn</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns the current durable execution arn</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>com.amazonaws.services.lambda.runtime.Context</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getLambdaContext()" class="member-name-link">getLambdaContext</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isReplaying()" class="member-name-link">isReplaying</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getLogger()">
    +<h3>getLogger</h3>
    +<div class="member-signature"><span class="return-type"><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></span>&nbsp;<span class="element-name">getLogger</span>()</div>
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a DurableLogger instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getLambdaContext()">
    +<h3>getLambdaContext</h3>
    +<div class="member-signature"><span class="return-type">com.amazonaws.services.lambda.runtime.Context</span>&nbsp;<span class="element-name">getLambdaContext</span>()</div>
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the Lambda context</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionArn()">
    +<h3>getExecutionArn</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getExecutionArn</span>()</div>
    +<div class="block">Returns the current durable execution arn</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the execution arn</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDurableConfig()">
    +<h3>getDurableConfig</h3>
    +<div class="member-signature"><span class="return-type"><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">getDurableConfig</span>()</div>
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the durable configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContextId()">
    +<h3>getContextId</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getContextId</span>()</div>
    +<div class="block">Gets the context ID for this context. Null for root context, operationId of the context operation for child
    + contexts.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContextName()">
    +<h3>getContextName</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getContextName</span>()</div>
    +<div class="block">Gets the context name for this context. Null for root context.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isReplaying()">
    +<h3>isReplaying</h3>
    +<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">isReplaying</span>()</div>
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Closes this context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/BaseContextImpl.html b/javadoc/software/amazon/lambda/durable/context/BaseContextImpl.html
    new file mode 100644
    index 000000000..8f6951a33
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/BaseContextImpl.html
    @@ -0,0 +1,318 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>BaseContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.context, class: BaseContextImpl">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/BaseContextImpl.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<h1 title="Class BaseContextImpl" class="title">Class BaseContextImpl</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.context.BaseContextImpl</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code>, <code><a href="StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">BaseContextImpl</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>, <a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">BaseContextImpl</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextName,
    + <a href="../execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new BaseContext instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getContextId()" class="member-name-link">getContextId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the context ID for this context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getContextName()" class="member-name-link">getContextName</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the context name for this context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDurableConfig()" class="member-name-link">getDurableConfig</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionArn()" class="member-name-link">getExecutionArn</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns metadata about the current durable execution.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionManager()" class="member-name-link">getExecutionManager</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.amazonaws.services.lambda.runtime.Context</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLambdaContext()" class="member-name-link">getLambdaContext</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isReplaying()" class="member-name-link">isReplaying</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setExecutionMode()" class="member-name-link">setExecutionMode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Transitions this context from replay to execution mode.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.context.<a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></h3>
    +<code><a href="BaseContext.html#close()">close</a>, <a href="BaseContext.html#getLogger()">getLogger</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)">
    +<h3>BaseContextImpl</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">BaseContextImpl</span><wbr><span class="parameters">(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextName,
    + <a href="../execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</span></div>
    +<div class="block">Creates a new BaseContext instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>executionManager</code> - the execution manager for thread coordination and state management</dd>
    +<dd><code>durableConfig</code> - the durable execution configuration</dd>
    +<dd><code>lambdaContext</code> - the AWS Lambda runtime context</dd>
    +<dd><code>contextId</code> - the context ID, null for root context, set for child contexts</dd>
    +<dd><code>contextName</code> - the human-readable name for this context</dd>
    +<dd><code>threadType</code> - the type of thread this context runs on</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getLambdaContext()">
    +<h3>getLambdaContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.amazonaws.services.lambda.runtime.Context</span>&nbsp;<span class="element-name">getLambdaContext</span>()</div>
    +<div class="block">Returns the AWS Lambda runtime context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getLambdaContext()">getLambdaContext</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>the Lambda context</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionArn()">
    +<h3>getExecutionArn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getExecutionArn</span>()</div>
    +<div class="block">Returns metadata about the current durable execution.
    +
    + <p>The execution context provides information that remains constant throughout the execution lifecycle, such as
    + the durable execution ARN. This is useful for tracking execution progress, correlating logs, and referencing this
    + execution in external systems.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getExecutionArn()">getExecutionArn</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>the execution context</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDurableConfig()">
    +<h3>getDurableConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">getDurableConfig</span>()</div>
    +<div class="block">Returns the configuration for durable execution behavior.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getDurableConfig()">getDurableConfig</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>the durable configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContextId()">
    +<h3>getContextId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getContextId</span>()</div>
    +<div class="block">Gets the context ID for this context. Null for root context, set for child contexts.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getContextId()">getContextId</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContextName()">
    +<h3>getContextName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getContextName</span>()</div>
    +<div class="block">Gets the context name for this context. Null for root context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getContextName()">getContextName</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionManager()">
    +<h3>getExecutionManager</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span>&nbsp;<span class="element-name">getExecutionManager</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isReplaying()">
    +<h3>isReplaying</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isReplaying</span>()</div>
    +<div class="block">Returns whether this context is currently in replay mode.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#isReplaying()">isReplaying</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setExecutionMode()">
    +<h3>setExecutionMode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setExecutionMode</span>()</div>
    +<div class="block">Transitions this context from replay to execution mode. Called when the first un-cached operation is encountered.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/DurableContextImpl.html b/javadoc/software/amazon/lambda/durable/context/DurableContextImpl.html
    new file mode 100644
    index 000000000..4b2414d42
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/DurableContextImpl.html
    @@ -0,0 +1,548 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.context, class: DurableContextImpl">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableContextImpl.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<h1 title="Class DurableContextImpl" class="title">Class DurableContextImpl</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">software.amazon.lambda.durable.context.BaseContextImpl</a>
    +<div class="inheritance">software.amazon.lambda.durable.context.DurableContextImpl</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code>, <code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableContextImpl</span>
    +<span class="extends-implements">extends <a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a>
    +implements <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></span></div>
    +<div class="block">User-facing API for defining durable operations within a workflow.
    +
    + <p>Provides methods for creating steps, waits, chained invokes, callbacks, and child contexts. Each method creates a
    + checkpoint-backed operation that survives Lambda interruptions.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-software.amazon.lambda.durable.DurableContext">Nested classes/interfaces inherited from interface&nbsp;software.amazon.lambda.durable.<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></h2>
    +<code><a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">I</a>,<wbr><a href="../DurableContext.MapFunction.html" title="type parameter in DurableContext.MapFunction">O</a>&gt;</code></div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Clears the logger's thread properties.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)" class="member-name-link">createCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createChildContext(java.lang.String,java.lang.String)" class="member-name-link">createChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a child context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">createRootContext</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a root context (contextId = null)</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createStepContext(java.lang.String,java.lang.String,int)" class="member-name-link">createStepContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a step context for executing step operations.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T,<wbr>
    +U&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)" class="member-name-link">invokeAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">parallel</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)" class="member-name-link">runInChildContextAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Runs a function in a child context, blocking until it completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)" class="member-name-link">stepAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitAsync(java.lang.String,java.time.Duration)" class="member-name-link">waitAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)" class="member-name-link">waitForCallbackAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContextImpl">Methods inherited from class&nbsp;software.amazon.lambda.durable.context.<a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></h3>
    +<code><a href="BaseContextImpl.html#getContextId()">getContextId</a>, <a href="BaseContextImpl.html#getContextName()">getContextName</a>, <a href="BaseContextImpl.html#getDurableConfig()">getDurableConfig</a>, <a href="BaseContextImpl.html#getExecutionArn()">getExecutionArn</a>, <a href="BaseContextImpl.html#getExecutionManager()">getExecutionManager</a>, <a href="BaseContextImpl.html#getLambdaContext()">getLambdaContext</a>, <a href="BaseContextImpl.html#isReplaying()">isReplaying</a>, <a href="BaseContextImpl.html#setExecutionMode()">setExecutionMode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.context.<a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></h3>
    +<code><a href="BaseContext.html#getContextId()">getContextId</a>, <a href="BaseContext.html#getContextName()">getContextName</a>, <a href="BaseContext.html#getDurableConfig()">getDurableConfig</a>, <a href="BaseContext.html#getExecutionArn()">getExecutionArn</a>, <a href="BaseContext.html#getLambdaContext()">getLambdaContext</a>, <a href="BaseContext.html#isReplaying()">isReplaying</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></h3>
    +<code><a href="../DurableContext.html#createCallback(java.lang.String,java.lang.Class)">createCallback</a>, <a href="../DurableContext.html#createCallback(java.lang.String,java.lang.Class,software.amazon.lambda.durable.config.CallbackConfig)">createCallback</a>, <a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken)">createCallback</a>, <a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,java.lang.Class)">invoke</a>, <a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">invoke</a>, <a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)">invoke</a>, <a href="../DurableContext.html#invoke(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">invoke</a>, <a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class)">invokeAsync</a>, <a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,java.lang.Class,software.amazon.lambda.durable.config.InvokeConfig)">invokeAsync</a>, <a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken)">invokeAsync</a>, <a href="../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)">map</a>, <a href="../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">map</a>, <a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)">map</a>, <a href="../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">map</a>, <a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)">mapAsync</a>, <a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">mapAsync</a>, <a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)">mapAsync</a>, <a href="../DurableContext.html#parallel(java.lang.String)">parallel</a>, <a href="../DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function)">runInChildContext</a>, <a href="../DurableContext.html#runInChildContext(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">runInChildContext</a>, <a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">runInChildContext</a>, <a href="../DurableContext.html#runInChildContext(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">runInChildContext</a>, <a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function)">runInChildContextAsync</a>, <a href="../DurableContext.html#runInChildContextAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">runInChildContextAsync</a>, <a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">runInChildContextAsync</a>, <a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function)">step</a>, <a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">step</a>, <a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier)">step</a>, <a href="../DurableContext.html#step(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">step</a>, <a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">step</a>, <a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">step</a>, <a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">step</a>, <a href="../DurableContext.html#step(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">step</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,java.lang.Class,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier)">stepAsync</a>, <a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Supplier,software.amazon.lambda.durable.config.StepConfig)">stepAsync</a>, <a href="../DurableContext.html#wait(java.lang.String,java.time.Duration)">wait</a>, <a href="../DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer)">waitForCallback</a>, <a href="../DurableContext.html#waitForCallback(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">waitForCallback</a>, <a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)">waitForCallback</a>, <a href="../DurableContext.html#waitForCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">waitForCallback</a>, <a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer)">waitForCallbackAsync</a>, <a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,java.lang.Class,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">waitForCallbackAsync</a>, <a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer)">waitForCallbackAsync</a>, <a href="../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)">waitForCondition</a>, <a href="../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">waitForCondition</a>, <a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)">waitForCondition</a>, <a href="../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">waitForCondition</a>, <a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)">waitForConditionAsync</a>, <a href="../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">waitForConditionAsync</a>, <a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)">waitForConditionAsync</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)">
    +<h3>createRootContext</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span>&nbsp;<span class="element-name">createRootContext</span><wbr><span class="parameters">(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext)</span></div>
    +<div class="block">Creates a root context (contextId = null)
    +
    + <p>The context itself always has a null contextId (making it a root context).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>executionManager</code> - the execution manager</dd>
    +<dd><code>durableConfig</code> - the durable configuration</dd>
    +<dd><code>lambdaContext</code> - the Lambda context</dd>
    +<dt>Returns:</dt>
    +<dd>a new root DurableContext</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createChildContext(java.lang.String,java.lang.String)">
    +<h3>createChildContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span>&nbsp;<span class="element-name">createChildContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextName)</span></div>
    +<div class="block">Creates a child context.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>childContextId</code> - the child context's ID (the CONTEXT operation's operation ID)</dd>
    +<dd><code>childContextName</code> - the name of the child context</dd>
    +<dt>Returns:</dt>
    +<dd>a new DurableContext for the child context</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createStepContext(java.lang.String,java.lang.String,int)">
    +<h3>createStepContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></span>&nbsp;<span class="element-name">createStepContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</span></div>
    +<div class="block">Creates a step context for executing step operations.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>stepOperationId</code> - the ID of the step operation (used for thread registration)</dd>
    +<dd><code>stepOperationName</code> - the name of the step operation</dd>
    +<dd><code>attempt</code> - the current retry attempt number (0-based)</dd>
    +<dt>Returns:</dt>
    +<dd>a new StepContext instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">
    +<h3>stepAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stepAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">DurableContext</a></code></span></div>
    +<div class="block">Asynchronously executes a durable step using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.
    +
    + <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#stepAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.StepConfig)">stepAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>func</code> - the function to execute, receiving a <a href="../StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>config</code> - the step configuration (retry strategy, semantics, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the step result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitAsync(java.lang.String,java.time.Duration)">
    +<h3>waitAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp;<span class="element-name">waitAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#waitAsync(java.lang.String,java.time.Duration)">DurableContext</a></code></span></div>
    +<div class="block">Asynchronously suspends execution for the specified duration.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#waitAsync(java.lang.String,java.time.Duration)">waitAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>duration</code> - the duration to wait</dd>
    +<dt>Returns:</dt>
    +<dd>a future that completes when the wait duration has elapsed</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">
    +<h3 id="invokeAsync(java.lang.String,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">invokeAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T,<wbr>
    +U&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">invokeAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + U&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">DurableContext</a></code></span></div>
    +<div class="block">Asynchronously invokes another Lambda function using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration.
    +
    + <p>This is the core invokeAsync implementation. All other invoke/invokeAsync overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#invokeAsync(java.lang.String,java.lang.String,U,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig)">invokeAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dd><code>U</code> - the payload type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>functionName</code> - the ARN or name of the Lambda function to invoke</dd>
    +<dd><code>payload</code> - the input payload to send to the target function</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>config</code> - the invoke configuration (custom SerDes for result and payload)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the invocation result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)">
    +<h3>createCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">createCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)">DurableContext</a></code></span></div>
    +<div class="block">Creates a callback operation that suspends execution until an external system completes it.
    +
    + <p>This is the core createCallback implementation. Returns a <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableCallbackFuture</code></a> containing a callback
    + ID that external systems use to report completion via the Lambda Durable API.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#createCallback(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig)">createCallback</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>config</code> - the callback configuration (custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future containing the callback ID and eventual result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">
    +<h3>runInChildContextAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runInChildContextAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config)</span></div>
    +<div class="block">Runs a function in a child context, blocking until it completes.
    +
    + <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    + collisions. On replay, the child context's operations are replayed independently.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#runInChildContextAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.RunInChildContextConfig)">runInChildContextAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the operation name within this context</dd>
    +<dd><code>resultType</code> - the result class for deserialization</dd>
    +<dd><code>func</code> - the function to execute, receiving a child <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a></dd>
    +<dd><code>config</code> - the configuration for the child context</dd>
    +<dt>Returns:</dt>
    +<dd>the DurableFuture wrapping the child context result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">
    +<h3>mapAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span>&nbsp;<span class="element-name">mapAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</span></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)">mapAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)">
    +<h3>parallel</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span>&nbsp;<span class="element-name">parallel</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)">DurableContext</a></code></span></div>
    +<div class="block">Creates a <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> for executing multiple branches concurrently.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#parallel(java.lang.String,software.amazon.lambda.durable.config.ParallelConfig)">parallel</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dd><code>config</code> - the parallel execution configuration</dd>
    +<dt>Returns:</dt>
    +<dd>a new ParallelDurableFuture for registering and executing branches</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">
    +<h3>waitForCallbackAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForCallbackAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiConsumer.html" title="class or interface in java.util.function" class="external-link">BiConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>&gt;&nbsp;func,
    + <a href="../config/WaitForCallbackConfig.html" title="class in software.amazon.lambda.durable.config">WaitForCallbackConfig</a>&nbsp;waitForCallbackConfig)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">DurableContext</a></code></span></div>
    +<div class="block">Asynchronously executes a submitter and waits for an external callback using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.
    +
    + <p>This is the core waitForCallbackAsync implementation. All other waitForCallback/waitForCallbackAsync overloads
    + delegate here. Internally creates a child context containing a callback operation and a step that runs the
    + submitter function.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#waitForCallbackAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiConsumer,software.amazon.lambda.durable.config.WaitForCallbackConfig)">waitForCallbackAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic result types</dd>
    +<dd><code>func</code> - the submitter function, receiving the callback ID and a <a href="../StepContext.html" title="interface in software.amazon.lambda.durable"><code>StepContext</code></a></dd>
    +<dd><code>waitForCallbackConfig</code> - the configuration for both the callback and submitter step</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the callback result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">
    +<h3>waitForConditionAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">waitForConditionAsync</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">DurableContext</a></code></span></div>
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.
    +
    + <p>This is the core waitForConditionAsync implementation. All other waitForCondition/waitForConditionAsync
    + overloads delegate here.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)">waitForConditionAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the unique operation name within this context</dd>
    +<dd><code>resultType</code> - the type token for deserialization of generic types</dd>
    +<dd><code>checkFunc</code> - the function that evaluates the condition and returns a <a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model"><code>WaitForConditionResult</code></a></dd>
    +<dd><code>config</code> - the waitForCondition configuration (wait strategy, custom SerDes)</dd>
    +<dt>Returns:</dt>
    +<dd>a future representing the final state value</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getLogger()">
    +<h3>getLogger</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></span>&nbsp;<span class="element-name">getLogger</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="BaseContext.html#getLogger()">BaseContext</a></code></span></div>
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getLogger()">getLogger</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a DurableLogger instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Clears the logger's thread properties. Called during context destruction to prevent memory leaks and ensure clean
    + state for subsequent executions.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#close()">close</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/StepContextImpl.html b/javadoc/software/amazon/lambda/durable/context/StepContextImpl.html
    new file mode 100644
    index 000000000..9bc5e36b2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/StepContextImpl.html
    @@ -0,0 +1,249 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.context, class: StepContextImpl">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepContextImpl.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<h1 title="Class StepContextImpl" class="title">Class StepContextImpl</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">software.amazon.lambda.durable.context.BaseContextImpl</a>
    +<div class="inheritance">software.amazon.lambda.durable.context.StepContextImpl</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code>, <code><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepContextImpl</span>
    +<span class="extends-implements">extends <a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a>
    +implements <a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></span></div>
    +<div class="block">Context available inside a step operation's user function.
    +
    + <p>Provides access to the current retry attempt number and a logger that includes execution metadata. Extends
    + <a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context"><code>BaseContext</code></a> for thread lifecycle management.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)" class="member-name-link">StepContextImpl</a><wbr>(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new StepContext instance for use in step operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Closes the logger for this context.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAttempt()" class="member-name-link">getAttempt</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContextImpl">Methods inherited from class&nbsp;software.amazon.lambda.durable.context.<a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></h3>
    +<code><a href="BaseContextImpl.html#getContextId()">getContextId</a>, <a href="BaseContextImpl.html#getContextName()">getContextName</a>, <a href="BaseContextImpl.html#getDurableConfig()">getDurableConfig</a>, <a href="BaseContextImpl.html#getExecutionArn()">getExecutionArn</a>, <a href="BaseContextImpl.html#getExecutionManager()">getExecutionManager</a>, <a href="BaseContextImpl.html#getLambdaContext()">getLambdaContext</a>, <a href="BaseContextImpl.html#isReplaying()">isReplaying</a>, <a href="BaseContextImpl.html#setExecutionMode()">setExecutionMode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.context.BaseContext">Methods inherited from interface&nbsp;software.amazon.lambda.durable.context.<a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></h3>
    +<code><a href="BaseContext.html#getContextId()">getContextId</a>, <a href="BaseContext.html#getContextName()">getContextName</a>, <a href="BaseContext.html#getDurableConfig()">getDurableConfig</a>, <a href="BaseContext.html#getExecutionArn()">getExecutionArn</a>, <a href="BaseContext.html#getLambdaContext()">getLambdaContext</a>, <a href="BaseContext.html#isReplaying()">isReplaying</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)">
    +<h3>StepContextImpl</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">StepContextImpl</span><wbr><span class="parameters">(<a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</span></div>
    +<div class="block">Creates a new StepContext instance for use in step operations.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>executionManager</code> - Manages durable execution state and operations</dd>
    +<dd><code>durableConfig</code> - Configuration for durable execution behavior</dd>
    +<dd><code>lambdaContext</code> - AWS Lambda runtime context</dd>
    +<dd><code>stepOperationId</code> - Unique identifier for this context instance that equals to step operation id</dd>
    +<dd><code>stepOperationName</code> - the name of the step operation</dd>
    +<dd><code>attempt</code> - the current retry attempt number (0-based)</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getAttempt()">
    +<h3>getAttempt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getAttempt</span>()</div>
    +<div class="block">Returns the current retry attempt number (0-based).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../StepContext.html#getAttempt()">getAttempt</a></code>&nbsp;in interface&nbsp;<code><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getLogger()">
    +<h3>getLogger</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../logging/DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></span>&nbsp;<span class="element-name">getLogger</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="BaseContext.html#getLogger()">BaseContext</a></code></span></div>
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#getLogger()">getLogger</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a DurableLogger instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Closes the logger for this context.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseContext.html#close()">close</a></code>&nbsp;in interface&nbsp;<code><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/class-use/BaseContext.html b/javadoc/software/amazon/lambda/durable/context/class-use/BaseContext.html
    new file mode 100644
    index 000000000..f66ed78ed
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/class-use/BaseContext.html
    @@ -0,0 +1,117 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.context.BaseContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.context, interface: BaseContext">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.context.BaseContext" class="title">Uses of Interface<br>software.amazon.lambda.durable.context.BaseContext</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Subinterfaces of <a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Interface</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>interface&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../DurableContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>interface&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../StepContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">StepContext</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a> in <a href="../package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Classes in <a href="../package-summary.html">software.amazon.lambda.durable.context</a> that implement <a href="../BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../BaseContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/class-use/BaseContextImpl.html b/javadoc/software/amazon/lambda/durable/context/class-use/BaseContextImpl.html
    new file mode 100644
    index 000000000..c33af6e9a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/class-use/BaseContextImpl.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.context.BaseContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.context, class: BaseContextImpl">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.context.BaseContextImpl" class="title">Uses of Class<br>software.amazon.lambda.durable.context.BaseContextImpl</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.logging">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> in <a href="../package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> in <a href="../package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.logging">
    +<h2>Uses of <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> in <a href="../../logging/package-summary.html">software.amazon.lambda.durable.logging</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../logging/package-summary.html">software.amazon.lambda.durable.logging</a> with parameters of type <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../logging/DurableLogger.html#%3Cinit%3E(org.slf4j.Logger,software.amazon.lambda.durable.context.BaseContextImpl)" class="member-name-link">DurableLogger</a><wbr>(org.slf4j.Logger&nbsp;delegate,
    + <a href="../BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/class-use/DurableContextImpl.html b/javadoc/software/amazon/lambda/durable/context/class-use/DurableContextImpl.html
    new file mode 100644
    index 000000000..a330919c8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/class-use/DurableContextImpl.html
    @@ -0,0 +1,233 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.context.DurableContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.context, class: DurableContextImpl">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.context.DurableContextImpl" class="title">Uses of Class<br>software.amazon.lambda.durable.context.DurableContextImpl</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a> in <a href="../package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../DurableContextImpl.html#createChildContext(java.lang.String,java.lang.String)" class="member-name-link">createChildContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;childContextName)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a child context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../DurableContextImpl.html#createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">createRootContext</a><wbr>(<a href="../../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a root context (contextId = null)</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#getContext()" class="member-name-link">getContext</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the parent context.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/BaseDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">BaseDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/CallbackOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ConcurrencyOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/InvokeOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ParallelOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/WaitOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="../DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/class-use/StepContextImpl.html b/javadoc/software/amazon/lambda/durable/context/class-use/StepContextImpl.html
    new file mode 100644
    index 000000000..cc8c4bce4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/class-use/StepContextImpl.html
    @@ -0,0 +1,92 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.context.StepContextImpl (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.context, class: StepContextImpl">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepContextImpl.html" title="class in software.amazon.lambda.durable.context">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.context.StepContextImpl" class="title">Uses of Class<br>software.amazon.lambda.durable.context.StepContextImpl</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a> in <a href="../package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../DurableContextImpl.html#createStepContext(java.lang.String,java.lang.String,int)" class="member-name-link">createStepContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a step context for executing step operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/package-summary.html b/javadoc/software/amazon/lambda/durable/context/package-summary.html
    new file mode 100644
    index 000000000..8fe26bf94
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/package-summary.html
    @@ -0,0 +1,115 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.context (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.context">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.context" class="title">Package software.amazon.lambda.durable.context</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.context</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="StepContextImpl.html" title="class in software.amazon.lambda.durable.context">StepContextImpl</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/package-tree.html b/javadoc/software/amazon/lambda/durable/context/package-tree.html
    new file mode 100644
    index 000000000..9dcfcd804
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/package-tree.html
    @@ -0,0 +1,92 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.context Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.context">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.context</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="BaseContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>, software.amazon.lambda.durable.context.<a href="BaseContext.html" title="interface in software.amazon.lambda.durable.context">BaseContext</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="DurableContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a> (implements software.amazon.lambda.durable.<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="StepContextImpl.html" class="type-name-link" title="class in software.amazon.lambda.durable.context">StepContextImpl</a> (implements software.amazon.lambda.durable.<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" class="type-name-link external-link" title="class or interface in java.lang">AutoCloseable</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="BaseContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable.context">BaseContext</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/context/package-use.html b/javadoc/software/amazon/lambda/durable/context/package-use.html
    new file mode 100644
    index 000000000..aabdd685d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/context/package-use.html
    @@ -0,0 +1,136 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.context (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.context">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.context" class="title">Uses of Package<br>software.amazon.lambda.durable.context</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.logging">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.context</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/BaseContext.html#software.amazon.lambda.durable">BaseContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.context</a> used by <a href="package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/BaseContext.html#software.amazon.lambda.durable.context">BaseContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/BaseContextImpl.html#software.amazon.lambda.durable.context">BaseContextImpl</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContextImpl.html#software.amazon.lambda.durable.context">DurableContextImpl</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepContextImpl.html#software.amazon.lambda.durable.context">StepContextImpl</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Context available inside a step operation's user function.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.logging">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.context</a> used by <a href="../logging/package-summary.html">software.amazon.lambda.durable.logging</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/BaseContextImpl.html#software.amazon.lambda.durable.logging">BaseContextImpl</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.context</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContextImpl.html#software.amazon.lambda.durable.operation">DurableContextImpl</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing API for defining durable operations within a workflow.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/CallbackExample.html b/javadoc/software/amazon/lambda/durable/examples/callback/CallbackExample.html
    new file mode 100644
    index 000000000..3274a16ac
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/CallbackExample.html
    @@ -0,0 +1,206 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.callback, class: CallbackExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.callback</a></div>
    +<h1 title="Class CallbackExample" class="title">Class CallbackExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.callback.CallbackExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating callback operations for external system integration.
    +
    + <p>This handler demonstrates a human approval workflow:
    +
    + <ol>
    +   <li>Prepare the request for approval
    +   <li>Create a callback and send the callback ID to an external approval system
    +   <li>Suspend execution until the external system responds
    +   <li>Process the approval result
    + </ol>
    +
    + <p>External systems respond using AWS Lambda APIs:
    +
    + <ul>
    +   <li><code>SendDurableExecutionCallbackSuccess</code> - approve with result
    +   <li><code>SendDurableExecutionCallbackFailure</code> - reject with error
    +   <li><code>SendDurableExecutionCallbackHeartbeat</code> - keep callback alive
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CallbackExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CallbackExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html b/javadoc/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html
    new file mode 100644
    index 000000000..3a88ddba7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/WaitForCallbackFailedExample.html
    @@ -0,0 +1,188 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForCallbackFailedExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.callback, class: WaitForCallbackFailedExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForCallbackFailedExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.callback</a></div>
    +<h1 title="Class WaitForCallbackFailedExample" class="title">Class WaitForCallbackFailedExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForCallbackFailedExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitForCallbackFailedExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitForCallbackFailedExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForCallbackFailedExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/class-use/CallbackExample.html b/javadoc/software/amazon/lambda/durable/examples/callback/class-use/CallbackExample.html
    new file mode 100644
    index 000000000..01fd3f350
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/class-use/CallbackExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.callback.CallbackExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.callback, class: CallbackExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.callback.CallbackExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.callback.CallbackExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.callback.CallbackExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/class-use/WaitForCallbackFailedExample.html b/javadoc/software/amazon/lambda/durable/examples/callback/class-use/WaitForCallbackFailedExample.html
    new file mode 100644
    index 000000000..eec411955
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/class-use/WaitForCallbackFailedExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.callback, class: WaitForCallbackFailedExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.callback.WaitForCallbackFailedExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/callback/package-summary.html
    new file mode 100644
    index 000000000..ee1c09091
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/package-summary.html
    @@ -0,0 +1,92 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.callback (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.callback">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.callback" class="title">Package software.amazon.lambda.durable.examples.callback</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.callback</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CallbackExample.html" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating callback operations for external system integration.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitForCallbackFailedExample.html" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/callback/package-tree.html
    new file mode 100644
    index 000000000..fa226e2ea
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/package-tree.html
    @@ -0,0 +1,82 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.callback Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.callback">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.callback</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.callback.<a href="CallbackExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">CallbackExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.callback.<a href="WaitForCallbackFailedExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.callback">WaitForCallbackFailedExample</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/callback/package-use.html b/javadoc/software/amazon/lambda/durable/examples/callback/package-use.html
    new file mode 100644
    index 000000000..3c7a741c0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/callback/package-use.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.callback (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.callback">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.callback" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.callback</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.callback</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/ChildContextExample.html b/javadoc/software/amazon/lambda/durable/examples/child/ChildContextExample.html
    new file mode 100644
    index 000000000..c00f1a3f2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/ChildContextExample.html
    @@ -0,0 +1,200 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ChildContextExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.child, class: ChildContextExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ChildContextExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<h1 title="Class ChildContextExample" class="title">Class ChildContextExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.child.ChildContextExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ChildContextExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating child context workflows with the Durable Execution SDK.
    +
    + <p>This handler runs three concurrent child contexts using <code>runInChildContextAsync</code>:
    +
    + <ol>
    +   <li><b>Order validation</b> β€” performs a step then suspends via <code>wait()</code> before completing
    +   <li><b>Inventory check</b> β€” performs a step then suspends via <code>wait()</code> before completing
    +   <li><b>Shipping estimate</b> β€” nests another child context inside it to demonstrate hierarchical contexts
    + </ol>
    +
    + <p>All three child contexts run concurrently. Results are collected with <a href="../../DurableFuture.html#allOf(software.amazon.lambda.durable.DurableFuture...)"><code>DurableFuture.allOf(software.amazon.lambda.durable.DurableFuture&lt;T&gt;...)</code></a> and combined
    + into a summary string.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ChildContextExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ChildContextExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChildContextExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html
    new file mode 100644
    index 000000000..a3531418f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Input.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncChildContextExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncChildContextExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<h1 title="Record Class ManyAsyncChildContextExample.Input" class="title">Record Class ManyAsyncChildContextExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ManyAsyncChildContextExample.Input</span>(int&nbsp;multiplier, int&nbsp;steps)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int)" class="member-name-link">Input</a><wbr>(int&nbsp;multiplier,
    + int&nbsp;steps)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#multiplier()" class="member-name-link">multiplier</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#steps()" class="member-name-link">steps</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(int&nbsp;multiplier,
    + int&nbsp;steps)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>multiplier</code> - the value for the <code>multiplier</code> record component</dd>
    +<dd><code>steps</code> - the value for the <code>steps</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="multiplier()">
    +<h3>multiplier</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">multiplier</span>()</div>
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>multiplier</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="steps()">
    +<h3>steps</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">steps</span>()</div>
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>steps</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html
    new file mode 100644
    index 000000000..3a56141f6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.Output.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncChildContextExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample, record: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncChildContextExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<h1 title="Record Class ManyAsyncChildContextExample.Output" class="title">Record Class ManyAsyncChildContextExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Output</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ManyAsyncChildContextExample.Output</span>(long&nbsp;result, long&nbsp;executionTimeMs, long&nbsp;replayTimeMs)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(long,long,long)" class="member-name-link">Output</a><wbr>(long&nbsp;result,
    + long&nbsp;executionTimeMs,
    + long&nbsp;replayTimeMs)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#executionTimeMs()" class="member-name-link">executionTimeMs</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replayTimeMs()" class="member-name-link">replayTimeMs</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#result()" class="member-name-link">result</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(long,long,long)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(long&nbsp;result,
    + long&nbsp;executionTimeMs,
    + long&nbsp;replayTimeMs)</span></div>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>result</code> - the value for the <code>result</code> record component</dd>
    +<dd><code>executionTimeMs</code> - the value for the <code>executionTimeMs</code> record component</dd>
    +<dd><code>replayTimeMs</code> - the value for the <code>replayTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="result()">
    +<h3>result</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">result</span>()</div>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>result</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="executionTimeMs()">
    +<h3>executionTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">executionTimeMs</span>()</div>
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>executionTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replayTimeMs()">
    +<h3>replayTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">replayTimeMs</span>()</div>
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>replayTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html
    new file mode 100644
    index 000000000..148f8a22f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/ManyAsyncChildContextExample.html
    @@ -0,0 +1,294 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncChildContextExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncChildContextExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></div>
    +<h1 title="Class ManyAsyncChildContextExample" class="title">Class ManyAsyncChildContextExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>,<wbr><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ManyAsyncChildContextExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>,<wbr><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a>&gt;</span></div>
    +<div class="block">Performance test example demonstrating concurrent async child contexts.
    +
    + <p>This example tests the SDK's ability to handle many concurrent operations:
    +
    + <ul>
    +   <li>Creates async child context in a loop
    +   <li>Each child context performs a simple computation in a step
    +   <li>All results are collected using <a href="../../DurableFuture.html#allOf(software.amazon.lambda.durable.DurableFuture...)"><code>DurableFuture.allOf(software.amazon.lambda.durable.DurableFuture&lt;T&gt;...)</code></a>
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ManyAsyncChildContextExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="ManyAsyncChildContextExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ManyAsyncChildContextExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ManyAsyncChildContextExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ManyAsyncChildContextExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>,<wbr><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createConfiguration()">
    +<h3>createConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">createConfiguration</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#createConfiguration()">DurableHandler</a></code></span></div>
    +<div class="block">Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    + SerDes, or other configuration.
    +
    + <p>The <a href="../../client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client"><code>LambdaDurableFunctionsClient</code></a> is a wrapper that customers
    + should use to inject their own configured <code>LambdaClient</code>. This
    + allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    +
    + <p>Basic example with custom region and credentials:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Create custom Lambda client with specific configuration
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    +         .build();
    +
    +     // Wrap the Lambda client with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Configure AWS CRT HTTP Client for optimal performance
    +     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    +         .maxConcurrency(50)
    +         .connectionTimeout(Duration.ofSeconds(30))
    +         .connectionMaxIdleTime(Duration.ofSeconds(60))
    +         .build();
    +
    +     // Create Lambda client with CRT HTTP client
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_EAST_1)
    +         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    +         .httpClient(crtHttpClient)
    +         .overrideConfiguration(ClientOverrideConfiguration.builder()
    +             .retryPolicy(RetryPolicy.builder()
    +                 .numRetries(5)
    +                 .build())
    +             .build())
    +         .build();
    +
    +     // Wrap with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    +         .withExecutorService(customExecutor)  // Optional: custom thread pool
    +         .build();
    + }
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>,<wbr><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>DurableConfig with desired configuration</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/class-use/ChildContextExample.html b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ChildContextExample.html
    new file mode 100644
    index 000000000..0406aeb52
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ChildContextExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.child.ChildContextExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.child, class: ChildContextExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.child.ChildContextExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.child.ChildContextExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.child.ChildContextExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Input.html
    new file mode 100644
    index 000000000..c3e76a6f4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.child</a> with parameters of type <a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncChildContextExample.</span><code><a href="../ManyAsyncChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Output.html
    new file mode 100644
    index 000000000..e90b4fe20
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample, record: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Output" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.child</a> that return <a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncChildContextExample.</span><code><a href="../ManyAsyncChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.html b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.html
    new file mode 100644
    index 000000000..0958bb6ae
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/class-use/ManyAsyncChildContextExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.child, class: ManyAsyncChildContextExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.child.ManyAsyncChildContextExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/child/package-summary.html
    new file mode 100644
    index 000000000..0b17b5152
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/package-summary.html
    @@ -0,0 +1,104 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.child (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.child">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.child" class="title">Package software.amazon.lambda.durable.examples.child</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.child</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating child context workflows with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ManyAsyncChildContextExample.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Performance test example demonstrating concurrent async child contexts.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ManyAsyncChildContextExample.Input.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ManyAsyncChildContextExample.Output.html" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/child/package-tree.html
    new file mode 100644
    index 000000000..47e2f4d4f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/package-tree.html
    @@ -0,0 +1,88 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.child Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.child">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.child</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="ChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ChildContextExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="ManyAsyncChildContextExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="ManyAsyncChildContextExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.child.<a href="ManyAsyncChildContextExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/child/package-use.html b/javadoc/software/amazon/lambda/durable/examples/child/package-use.html
    new file mode 100644
    index 000000000..fc7279bfc
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/child/package-use.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.child (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.child">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.child" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.child</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.child</a> used by <a href="package-summary.html">software.amazon.lambda.durable.examples.child</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ManyAsyncChildContextExample.Input.html#software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Input</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/ManyAsyncChildContextExample.Output.html#software.amazon.lambda.durable.examples.child">ManyAsyncChildContextExample.Output</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html b/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html
    new file mode 100644
    index 000000000..57eb37f1c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.CustomData.html
    @@ -0,0 +1,209 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CustomConfigExample.CustomData (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: CustomConfigExample, class: CustomData">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CustomConfigExample.CustomData.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class CustomConfigExample.CustomData" class="title">Class CustomConfigExample.CustomData</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">CustomConfigExample.CustomData</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Custom data class with camelCase field names to demonstrate snake_case serialization. The SerDes will convert
    + these field names to snake_case in the JSON output.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#emailAddress" class="member-name-link">emailAddress</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#fullName" class="member-name-link">fullName</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>int</code></div>
    +<div class="col-second even-row-color"><code><a href="#userAge" class="member-name-link">userAge</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#userId" class="member-name-link">userId</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CustomData</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String)" class="member-name-link">CustomData</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;fullName,
    + int&nbsp;userAge,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;emailAddress)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="userId">
    +<h3>userId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">userId</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="fullName">
    +<h3>fullName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">fullName</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="userAge">
    +<h3>userAge</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">userAge</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="emailAddress">
    +<h3>emailAddress</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">emailAddress</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CustomData</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CustomData</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,int,java.lang.String)">
    +<h3>CustomData</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CustomData</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;fullName,
    + int&nbsp;userAge,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;emailAddress)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.html b/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.html
    new file mode 100644
    index 000000000..6a87edbaf
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/CustomConfigExample.html
    @@ -0,0 +1,296 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CustomConfigExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: CustomConfigExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CustomConfigExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class CustomConfigExample" class="title">Class CustomConfigExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.CustomConfigExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CustomConfigExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating custom configuration with both custom HTTP client and custom SerDes. Shows how to configure a
    + custom Apache HTTP client for the Lambda client while maintaining automatic credentials detection and region
    + fallback, plus a custom SerDes with snake_case naming.
    +
    + <p>This example demonstrates:
    +
    + <ul>
    +   <li>Custom Apache HTTP client configuration for improved performance
    +   <li>Automatic region detection with fallback to us-east-1 for testing environments
    +   <li>Environment variable credentials provider
    +   <li>Custom SerDes with snake_case property naming
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="CustomConfigExample.CustomData.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Custom data class with camelCase field names to demonstrate snake_case serialization.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CustomConfigExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CustomConfigExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CustomConfigExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="createConfiguration()">
    +<h3>createConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">createConfiguration</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#createConfiguration()">DurableHandler</a></code></span></div>
    +<div class="block">Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    + SerDes, or other configuration.
    +
    + <p>The <a href="../../client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client"><code>LambdaDurableFunctionsClient</code></a> is a wrapper that customers
    + should use to inject their own configured <code>LambdaClient</code>. This
    + allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    +
    + <p>Basic example with custom region and credentials:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Create custom Lambda client with specific configuration
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    +         .build();
    +
    +     // Wrap the Lambda client with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Configure AWS CRT HTTP Client for optimal performance
    +     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    +         .maxConcurrency(50)
    +         .connectionTimeout(Duration.ofSeconds(30))
    +         .connectionMaxIdleTime(Duration.ofSeconds(60))
    +         .build();
    +
    +     // Create Lambda client with CRT HTTP client
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_EAST_1)
    +         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    +         .httpClient(crtHttpClient)
    +         .overrideConfiguration(ClientOverrideConfiguration.builder()
    +             .retryPolicy(RetryPolicy.builder()
    +                 .numRetries(5)
    +                 .build())
    +             .build())
    +         .build();
    +
    +     // Wrap with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    +         .withExecutorService(customExecutor)  // Optional: custom thread pool
    +         .build();
    + }
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>DurableConfig with desired configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/CustomPollingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/CustomPollingExample.html
    new file mode 100644
    index 000000000..37bdeda3e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/CustomPollingExample.html
    @@ -0,0 +1,279 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CustomPollingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: CustomPollingExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CustomPollingExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class CustomPollingExample" class="title">Class CustomPollingExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.CustomPollingExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CustomPollingExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating custom polling strategy configuration.
    +
    + <p>The polling strategy controls how the SDK polls for async operation results. By default, the SDK uses exponential
    + backoff (1s base, 2x rate, full jitter). This example shows how to customize the polling behavior.
    +
    + <p>This example configures:
    +
    + <ul>
    +   <li>Exponential backoff with 500ms base interval
    +   <li>1.5x backoff rate for gentler growth
    +   <li>Half jitter to balance between consistency and thundering herd avoidance
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CustomPollingExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CustomPollingExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CustomPollingExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="createConfiguration()">
    +<h3>createConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">createConfiguration</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#createConfiguration()">DurableHandler</a></code></span></div>
    +<div class="block">Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    + SerDes, or other configuration.
    +
    + <p>The <a href="../../client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client"><code>LambdaDurableFunctionsClient</code></a> is a wrapper that customers
    + should use to inject their own configured <code>LambdaClient</code>. This
    + allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    +
    + <p>Basic example with custom region and credentials:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Create custom Lambda client with specific configuration
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    +         .build();
    +
    +     // Wrap the Lambda client with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Configure AWS CRT HTTP Client for optimal performance
    +     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    +         .maxConcurrency(50)
    +         .connectionTimeout(Duration.ofSeconds(30))
    +         .connectionMaxIdleTime(Duration.ofSeconds(60))
    +         .build();
    +
    +     // Create Lambda client with CRT HTTP client
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_EAST_1)
    +         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    +         .httpClient(crtHttpClient)
    +         .overrideConfiguration(ClientOverrideConfiguration.builder()
    +             .retryPolicy(RetryPolicy.builder()
    +                 .numRetries(5)
    +                 .build())
    +             .build())
    +         .build();
    +
    +     // Wrap with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    +         .withExecutorService(customExecutor)  // Optional: custom thread pool
    +         .build();
    + }
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>DurableConfig with desired configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html b/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html
    new file mode 100644
    index 000000000..63246e116
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.ServiceUnavailableException.html
    @@ -0,0 +1,203 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ErrorHandlingExample.ServiceUnavailableException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: ErrorHandlingExample, class: ServiceUnavailableException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ErrorHandlingExample.ServiceUnavailableException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class ErrorHandlingExample.ServiceUnavailableException" class="title">Class ErrorHandlingExample.ServiceUnavailableException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">ErrorHandlingExample.ServiceUnavailableException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Custom exception to demonstrate that original exception types are preserved across checkpoints.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ServiceUnavailableException</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default constructor required for Jackson deserialization.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String)" class="member-name-link">ServiceUnavailableException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serviceName,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getServiceName()" class="member-name-link">getServiceName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ServiceUnavailableException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ServiceUnavailableException</span>()</div>
    +<div class="block">Default constructor required for Jackson deserialization.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String)">
    +<h3>ServiceUnavailableException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ServiceUnavailableException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serviceName,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getServiceName()">
    +<h3>getServiceName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getServiceName</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html
    new file mode 100644
    index 000000000..6479dfd0f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/ErrorHandlingExample.html
    @@ -0,0 +1,217 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ErrorHandlingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: ErrorHandlingExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ErrorHandlingExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class ErrorHandlingExample" class="title">Class ErrorHandlingExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.ErrorHandlingExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ErrorHandlingExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating error handling patterns with the Durable Execution SDK.
    +
    + <p>This example shows how to handle:
    +
    + <ul>
    +   <li><a href="../../exception/StepFailedException.html" title="class in software.amazon.lambda.durable.exception"><code>StepFailedException</code></a> - when a step exhausts all retry attempts
    +   <li><a href="../../exception/StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception"><code>StepInterruptedException</code></a> - when an AT_MOST_ONCE step is interrupted
    +   <li>Custom exceptions - original exception types are preserved and can be caught directly
    + </ul>
    +
    + <p>Note: <code>NonDeterministicExecutionException</code> is thrown by the SDK when code changes between executions (e.g.,
    + step order/names changed). It should be fixed in code, not caught.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ErrorHandlingExample.ServiceUnavailableException.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Custom exception to demonstrate that original exception types are preserved across checkpoints.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ErrorHandlingExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ErrorHandlingExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ErrorHandlingExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html b/javadoc/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html
    new file mode 100644
    index 000000000..dfe51273d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/GenericInputOutputExample.html
    @@ -0,0 +1,192 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>GenericInputOutputExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: GenericInputOutputExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/GenericInputOutputExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class GenericInputOutputExample" class="title">Class GenericInputOutputExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.GenericInputOutputExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GenericInputOutputExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;&gt;</span></div>
    +<div class="block">Example demonstrating a durable Lambda function that uses generic types in input and output.
    +
    + <p>This example shows how to use TypeToken to work with generic types like <code>List&lt;String&gt;</code>, <code>Map&lt;String,
    + List&lt;String&gt;&gt;</code>, and nested generics that cannot be represented by simple Class objects.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GenericInputOutputExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.util.Map,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GenericInputOutputExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GenericInputOutputExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.util.Map,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;</span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&gt;&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html
    new file mode 100644
    index 000000000..5a8d91eb6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Input.html
    @@ -0,0 +1,174 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>GenericTypesExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample, class: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/GenericTypesExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class GenericTypesExample.Input" class="title">Class GenericTypesExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.GenericTypesExample.Input</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">GenericTypesExample.Input</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#userId" class="member-name-link">userId</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Input</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">Input</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="userId">
    +<h3>userId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">userId</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html
    new file mode 100644
    index 000000000..c86b36608
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.Output.html
    @@ -0,0 +1,196 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>GenericTypesExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample, class: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/GenericTypesExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class GenericTypesExample.Output" class="title">Class GenericTypesExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.GenericTypesExample.Output</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">GenericTypesExample.Output</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#categories" class="member-name-link">categories</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#counts" class="member-name-link">counts</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#items" class="member-name-link">items</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Output</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.util.List,java.util.Map,java.util.Map)" class="member-name-link">Output</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;counts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&nbsp;categories)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="items">
    +<h3>items</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">items</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="counts">
    +<h3>counts</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">counts</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="categories">
    +<h3>categories</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;</span>&nbsp;<span class="element-name">categories</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,java.util.Map,java.util.Map)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;counts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;&nbsp;categories)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.html b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.html
    new file mode 100644
    index 000000000..6dbdde7de
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/GenericTypesExample.html
    @@ -0,0 +1,210 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>GenericTypesExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/GenericTypesExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class GenericTypesExample" class="title">Class GenericTypesExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>,<wbr><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.GenericTypesExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GenericTypesExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>,<wbr><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a>&gt;</span></div>
    +<div class="block">Example demonstrating TypeToken support for complex generic types.
    +
    + <p>This example shows how to use TypeToken to work with generic types like <code>List&lt;String&gt;</code>, <code>Map&lt;String,
    + Object&gt;</code>, and nested generics that cannot be represented by simple Class objects.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="GenericTypesExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="GenericTypesExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GenericTypesExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GenericTypesExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GenericTypesExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>,<wbr><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/LoggingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/LoggingExample.html
    new file mode 100644
    index 000000000..2c1230fef
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/LoggingExample.html
    @@ -0,0 +1,192 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>LoggingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: LoggingExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/LoggingExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class LoggingExample" class="title">Class LoggingExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.LoggingExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LoggingExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating DurableLogger usage for structured logging with execution context.
    +
    + <p>The logger automatically includes execution metadata (durableExecutionArn, requestId, operationId, operationName)
    + in log entries via MDC. By default, logs are suppressed during replay to avoid duplicates.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">LoggingExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>LoggingExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LoggingExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/NoopExample.html b/javadoc/software/amazon/lambda/durable/examples/general/NoopExample.html
    new file mode 100644
    index 000000000..632d54a37
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/NoopExample.html
    @@ -0,0 +1,191 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>NoopExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general, class: NoopExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/NoopExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></div>
    +<h1 title="Class NoopExample" class="title">Class NoopExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.general.NoopExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NoopExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Simple example demonstrating a durable function doesn't have any durable operation
    +
    + <p>This handler processes a greeting request and returns a greeting message</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NoopExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NoopExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NoopExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.CustomData.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.CustomData.html
    new file mode 100644
    index 000000000..054fab230
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.CustomData.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: CustomConfigExample, class: CustomData">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.CustomConfigExample.CustomData</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.html
    new file mode 100644
    index 000000000..86473d513
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomConfigExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.CustomConfigExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: CustomConfigExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.CustomConfigExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.CustomConfigExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.CustomConfigExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomPollingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomPollingExample.html
    new file mode 100644
    index 000000000..cb5b5dc0d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/CustomPollingExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.CustomPollingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: CustomPollingExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.CustomPollingExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.CustomPollingExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.CustomPollingExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.ServiceUnavailableException.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.ServiceUnavailableException.html
    new file mode 100644
    index 000000000..445d17819
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.ServiceUnavailableException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: ErrorHandlingExample, class: ServiceUnavailableException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.ErrorHandlingExample.ServiceUnavailableException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.html
    new file mode 100644
    index 000000000..0bec8a007
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/ErrorHandlingExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.ErrorHandlingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: ErrorHandlingExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.ErrorHandlingExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.ErrorHandlingExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.ErrorHandlingExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericInputOutputExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericInputOutputExample.html
    new file mode 100644
    index 000000000..a2fc30c49
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericInputOutputExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.GenericInputOutputExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: GenericInputOutputExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.GenericInputOutputExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.GenericInputOutputExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.GenericInputOutputExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Input.html
    new file mode 100644
    index 000000000..a4e648fe3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample, class: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample.Input" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.GenericTypesExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.general</a> with parameters of type <a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">GenericTypesExample.</span><code><a href="../GenericTypesExample.html#handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Output.html
    new file mode 100644
    index 000000000..3bbcd77c7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample, class: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample.Output" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.GenericTypesExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.general</a> that return <a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">GenericTypesExample.</span><code><a href="../GenericTypesExample.html#handleRequest(software.amazon.lambda.durable.examples.general.GenericTypesExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.html
    new file mode 100644
    index 000000000..c17d7a4b1
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/GenericTypesExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: GenericTypesExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.GenericTypesExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.GenericTypesExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.GenericTypesExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/LoggingExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/LoggingExample.html
    new file mode 100644
    index 000000000..508c747ab
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/LoggingExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.LoggingExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: LoggingExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.LoggingExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.LoggingExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.LoggingExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/class-use/NoopExample.html b/javadoc/software/amazon/lambda/durable/examples/general/class-use/NoopExample.html
    new file mode 100644
    index 000000000..39d189823
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/class-use/NoopExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.general.NoopExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general, class: NoopExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.general.NoopExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.general.NoopExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.general.NoopExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/general/package-summary.html
    new file mode 100644
    index 000000000..c39b3ea74
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/package-summary.html
    @@ -0,0 +1,132 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.general (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.general">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.general" class="title">Package software.amazon.lambda.durable.examples.general</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.general</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab5" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab5', 2)" class="table-tab">Exceptions</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CustomConfigExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating custom configuration with both custom HTTP client and custom SerDes.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CustomConfigExample.CustomData.html" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Custom data class with camelCase field names to demonstrate snake_case serialization.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CustomPollingExample.html" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating custom polling strategy configuration.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ErrorHandlingExample.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating error handling patterns with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ErrorHandlingExample.ServiceUnavailableException.html" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to demonstrate that original exception types are preserved across checkpoints.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GenericInputOutputExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating a durable Lambda function that uses generic types in input and output.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="GenericTypesExample.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating TypeToken support for complex generic types.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GenericTypesExample.Input.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="GenericTypesExample.Output.html" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LoggingExample.html" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating DurableLogger usage for structured logging with execution context.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="NoopExample.html" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Simple example demonstrating a durable function doesn't have any durable operation</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/general/package-tree.html
    new file mode 100644
    index 000000000..cfa886934
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/package-tree.html
    @@ -0,0 +1,103 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.general Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.general">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.general</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="CustomConfigExample.CustomData.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample.CustomData</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="CustomConfigExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomConfigExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="CustomPollingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">CustomPollingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="ErrorHandlingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="GenericInputOutputExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericInputOutputExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="GenericTypesExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="LoggingExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">LoggingExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="NoopExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">NoopExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="GenericTypesExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="GenericTypesExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.general.<a href="ErrorHandlingExample.ServiceUnavailableException.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.general">ErrorHandlingExample.ServiceUnavailableException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/general/package-use.html b/javadoc/software/amazon/lambda/durable/examples/general/package-use.html
    new file mode 100644
    index 000000000..e7916094d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/general/package-use.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.general (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.general">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.general" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.general</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.general</a> used by <a href="package-summary.html">software.amazon.lambda.durable.examples.general</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GenericTypesExample.Input.html#software.amazon.lambda.durable.examples.general">GenericTypesExample.Input</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/GenericTypesExample.Output.html#software.amazon.lambda.durable.examples.general">GenericTypesExample.Output</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html b/javadoc/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html
    new file mode 100644
    index 000000000..333827e45
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/invoke/SimpleInvokeExample.html
    @@ -0,0 +1,191 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SimpleInvokeExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.invoke, class: SimpleInvokeExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SimpleInvokeExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.invoke</a></div>
    +<h1 title="Class SimpleInvokeExample" class="title">Class SimpleInvokeExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SimpleInvokeExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Simple example demonstrating basic invoke execution with the Durable Execution SDK.
    +
    + <p>This handler invokes another durable lambda function simple-step-example</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SimpleInvokeExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>SimpleInvokeExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SimpleInvokeExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/invoke/class-use/SimpleInvokeExample.html b/javadoc/software/amazon/lambda/durable/examples/invoke/class-use/SimpleInvokeExample.html
    new file mode 100644
    index 000000000..cc9070dc7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/invoke/class-use/SimpleInvokeExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.invoke, class: SimpleInvokeExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.invoke.SimpleInvokeExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/invoke/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/invoke/package-summary.html
    new file mode 100644
    index 000000000..10f60ba9c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/invoke/package-summary.html
    @@ -0,0 +1,90 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.invoke (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.invoke">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.invoke" class="title">Package software.amazon.lambda.durable.examples.invoke</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.invoke</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SimpleInvokeExample.html" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Simple example demonstrating basic invoke execution with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/invoke/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/invoke/package-tree.html
    new file mode 100644
    index 000000000..5232b3bd4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/invoke/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.invoke Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.invoke">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.invoke</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.invoke.<a href="SimpleInvokeExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.invoke">SimpleInvokeExample</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/invoke/package-use.html b/javadoc/software/amazon/lambda/durable/examples/invoke/package-use.html
    new file mode 100644
    index 000000000..85919a6e0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/invoke/package-use.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.invoke (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.invoke">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.invoke" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.invoke</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.invoke</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/ComplexMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/ComplexMapExample.html
    new file mode 100644
    index 000000000..eeb371678
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/ComplexMapExample.html
    @@ -0,0 +1,195 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ComplexMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.map, class: ComplexMapExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ComplexMapExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.map</a></div>
    +<h1 title="Class ComplexMapExample" class="title">Class ComplexMapExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.map.ComplexMapExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ComplexMapExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.
    +
    + <ol>
    +   <li>Concurrent map with step + wait + step inside each branch β€” simulates multi-stage order processing with a
    +       cooldown between stages
    +   <li>Early termination with <code>minSuccessful(2)</code> β€” finds 2 healthy servers then stops
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ComplexMapExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ComplexMapExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ComplexMapExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html
    new file mode 100644
    index 000000000..13ae260ec
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/DeserializationFailedMapExample.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DeserializationFailedMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.map, class: DeserializationFailedMapExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DeserializationFailedMapExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.map</a></div>
    +<h1 title="Class DeserializationFailedMapExample" class="title">Class DeserializationFailedMapExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DeserializationFailedMapExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.
    +
    + <p>This handler processes a list of names concurrently using <code>map()</code>, where each item runs in its own child
    + context with full checkpoint-and-replay support.
    +
    + <ol>
    +   <li>Create a list of names from the input
    +   <li>Map over each name concurrently, applying a greeting transformation via a durable step
    +   <li>Collect and join the results
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DeserializationFailedMapExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>DeserializationFailedMapExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DeserializationFailedMapExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/SimpleMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/SimpleMapExample.html
    new file mode 100644
    index 000000000..614d73988
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/SimpleMapExample.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SimpleMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.map, class: SimpleMapExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SimpleMapExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.map</a></div>
    +<h1 title="Class SimpleMapExample" class="title">Class SimpleMapExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.map.SimpleMapExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SimpleMapExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.
    +
    + <p>This handler processes a list of names concurrently using <code>map()</code>, where each item runs in its own child
    + context with full checkpoint-and-replay support.
    +
    + <ol>
    +   <li>Create a list of names from the input
    +   <li>Map over each name concurrently, applying a greeting transformation via a durable step
    +   <li>Collect and join the results
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SimpleMapExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>SimpleMapExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SimpleMapExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/class-use/ComplexMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/class-use/ComplexMapExample.html
    new file mode 100644
    index 000000000..569818a42
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/class-use/ComplexMapExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.map.ComplexMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.map, class: ComplexMapExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.map.ComplexMapExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.map.ComplexMapExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.map.ComplexMapExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/class-use/DeserializationFailedMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/class-use/DeserializationFailedMapExample.html
    new file mode 100644
    index 000000000..3e0955ee4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/class-use/DeserializationFailedMapExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.map, class: DeserializationFailedMapExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.map.DeserializationFailedMapExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/class-use/SimpleMapExample.html b/javadoc/software/amazon/lambda/durable/examples/map/class-use/SimpleMapExample.html
    new file mode 100644
    index 000000000..1e747ffdc
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/class-use/SimpleMapExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.map.SimpleMapExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.map, class: SimpleMapExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.map.SimpleMapExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.map.SimpleMapExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.map.SimpleMapExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/map/package-summary.html
    new file mode 100644
    index 000000000..ee3cd5373
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/package-summary.html
    @@ -0,0 +1,98 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.map (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.map">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.map" class="title">Package software.amazon.lambda.durable.examples.map</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.map</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ComplexMapExample.html" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating advanced map features: wait operations inside branches, error handling, and early termination.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DeserializationFailedMapExample.html" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SimpleMapExample.html" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating the map operation with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/map/package-tree.html
    new file mode 100644
    index 000000000..e2b6cf2e9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/package-tree.html
    @@ -0,0 +1,83 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.map Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.map">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.map</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="ComplexMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">ComplexMapExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="DeserializationFailedMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">DeserializationFailedMapExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.map.<a href="SimpleMapExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.map">SimpleMapExample</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/map/package-use.html b/javadoc/software/amazon/lambda/durable/examples/map/package-use.html
    new file mode 100644
    index 000000000..9423e8b59
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/map/package-use.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.map (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.map">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.map" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.map</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.map</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html
    new file mode 100644
    index 000000000..66aac1e9e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.Input.html
    @@ -0,0 +1,240 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DeserializationFailedParallelExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: DeserializationFailedParallelExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DeserializationFailedParallelExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class DeserializationFailedParallelExample.Input" class="title">Record Class DeserializationFailedParallelExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">DeserializationFailedParallelExample.Input</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List)" class="member-name-link">Input</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#items()" class="member-name-link">items</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>items</code> - the value for the <code>items</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="items()">
    +<h3>items</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">items</span>()</div>
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>items</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html
    new file mode 100644
    index 000000000..b5dfd2faf
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/DeserializationFailedParallelExample.html
    @@ -0,0 +1,215 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DeserializationFailedParallelExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: DeserializationFailedParallelExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DeserializationFailedParallelExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Class DeserializationFailedParallelExample" class="title">Class DeserializationFailedParallelExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DeserializationFailedParallelExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.
    +
    + <p>This handler processes a list of items concurrently using <code>context.parallel()</code>:
    +
    + <ol>
    +   <li>Each item is processed in its own branch (child context)
    +   <li>All branches run concurrently and their results are collected
    +   <li>A final step combines the results into a summary
    + </ol>
    +
    + <p>The <a href="../../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link"><code>AutoCloseable</code></a>, so try-with-resources guarantees
    + <code>join()</code> is called even if an exception occurs.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="DeserializationFailedParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DeserializationFailedParallelExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>DeserializationFailedParallelExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DeserializationFailedParallelExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html
    new file mode 100644
    index 000000000..b8e7032c9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Input.html
    @@ -0,0 +1,240 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelExample.Input" class="title">Record Class ParallelExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelExample.Input</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List)" class="member-name-link">Input</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#items()" class="member-name-link">items</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>items</code> - the value for the <code>items</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="items()">
    +<h3>items</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">items</span>()</div>
    +<div class="block">Returns the value of the <code>items</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>items</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html
    new file mode 100644
    index 000000000..09ef5d8be
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.Output.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample, record: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelExample.Output" class="title">Record Class ParallelExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelExample.Output</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelExample.Output</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;results, int&nbsp;totalProcessed)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,int)" class="member-name-link">Output</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;results,
    + int&nbsp;totalProcessed)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#results()" class="member-name-link">results</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>results</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#totalProcessed()" class="member-name-link">totalProcessed</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>totalProcessed</code> record component.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,int)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;results,
    + int&nbsp;totalProcessed)</span></div>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>results</code> - the value for the <code>results</code> record component</dd>
    +<dd><code>totalProcessed</code> - the value for the <code>totalProcessed</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>; primitive components are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="results()">
    +<h3>results</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">results</span>()</div>
    +<div class="block">Returns the value of the <code>results</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>results</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="totalProcessed()">
    +<h3>totalProcessed</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">totalProcessed</span>()</div>
    +<div class="block">Returns the value of the <code>totalProcessed</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>totalProcessed</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.html
    new file mode 100644
    index 000000000..2ff71d999
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelExample.html
    @@ -0,0 +1,218 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Class ParallelExample" class="title">Class ParallelExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>,<wbr><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>,<wbr><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a>&gt;</span></div>
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.
    +
    + <p>This handler processes a list of items concurrently using <code>context.parallel()</code>:
    +
    + <ol>
    +   <li>Each item is processed in its own branch (child context)
    +   <li>All branches run concurrently and their results are collected
    +   <li>A final step combines the results into a summary
    + </ol>
    +
    + <p>The <a href="../../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable"><code>ParallelDurableFuture</code></a> implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link"><code>AutoCloseable</code></a>, so try-with-resources guarantees
    + <code>join()</code> is called even if an exception occurs.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="ParallelExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ParallelExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ParallelExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>,<wbr><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html
    new file mode 100644
    index 000000000..5d678bc3a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Input.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelFailureToleranceExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelFailureToleranceExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelFailureToleranceExample.Input" class="title">Record Class ParallelFailureToleranceExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelFailureToleranceExample.Input</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;services, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailures, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,java.lang.Integer,java.lang.Integer)" class="member-name-link">Input</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;services,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailures,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#minSuccessful()" class="member-name-link">minSuccessful</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#services()" class="member-name-link">services</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>services</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toleratedFailures()" class="member-name-link">toleratedFailures</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>toleratedFailures</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,java.lang.Integer,java.lang.Integer)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;services,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailures,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>services</code> - the value for the <code>services</code> record component</dd>
    +<dd><code>toleratedFailures</code> - the value for the <code>toleratedFailures</code> record component</dd>
    +<dd><code>minSuccessful</code> - the value for the <code>minSuccessful</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="services()">
    +<h3>services</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">services</span>()</div>
    +<div class="block">Returns the value of the <code>services</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>services</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toleratedFailures()">
    +<h3>toleratedFailures</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">toleratedFailures</span>()</div>
    +<div class="block">Returns the value of the <code>toleratedFailures</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>toleratedFailures</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="minSuccessful()">
    +<h3>minSuccessful</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">minSuccessful</span>()</div>
    +<div class="block">Returns the value of the <code>minSuccessful</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>minSuccessful</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html
    new file mode 100644
    index 000000000..9d3d5d522
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.Output.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelFailureToleranceExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample, record: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelFailureToleranceExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelFailureToleranceExample.Output" class="title">Record Class ParallelFailureToleranceExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Output</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelFailureToleranceExample.Output</span>(int&nbsp;succeeded, int&nbsp;failed)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int)" class="member-name-link">Output</a><wbr>(int&nbsp;succeeded,
    + int&nbsp;failed)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failed()" class="member-name-link">failed</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#succeeded()" class="member-name-link">succeeded</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(int&nbsp;succeeded,
    + int&nbsp;failed)</span></div>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>succeeded</code> - the value for the <code>succeeded</code> record component</dd>
    +<dd><code>failed</code> - the value for the <code>failed</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="succeeded()">
    +<h3>succeeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">succeeded</span>()</div>
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>succeeded</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failed()">
    +<h3>failed</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">failed</span>()</div>
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>failed</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html
    new file mode 100644
    index 000000000..9a65da794
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelFailureToleranceExample.html
    @@ -0,0 +1,214 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelFailureToleranceExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelFailureToleranceExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Class ParallelFailureToleranceExample" class="title">Class ParallelFailureToleranceExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>,<wbr><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelFailureToleranceExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>,<wbr><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a>&gt;</span></div>
    +<div class="block">Example demonstrating parallel execution with failure tolerance.
    +
    + <p>When <code>toleratedFailureCount</code> is set, the parallel operation completes successfully even if some branches
    + fail β€” as long as the number of failures does not exceed the threshold. Failed branches produce <code>null</code> results
    + that callers can filter out.
    +
    + <p>Use this pattern when partial success is acceptable, for example: sending notifications to multiple channels where
    + some channels may be unavailable.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ParallelFailureToleranceExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="ParallelFailureToleranceExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ParallelFailureToleranceExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ParallelFailureToleranceExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelFailureToleranceExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>,<wbr><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html
    new file mode 100644
    index 000000000..c418c3893
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Input.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelWithWaitExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelWithWaitExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelWithWaitExample.Input" class="title">Record Class ParallelWithWaitExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelWithWaitExample.Input</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String)" class="member-name-link">Input</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#message()" class="member-name-link">message</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>message</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#userId()" class="member-name-link">userId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>userId</code> record component.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;userId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>userId</code> - the value for the <code>userId</code> record component</dd>
    +<dd><code>message</code> - the value for the <code>message</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="userId()">
    +<h3>userId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">userId</span>()</div>
    +<div class="block">Returns the value of the <code>userId</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>userId</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="message()">
    +<h3>message</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">message</span>()</div>
    +<div class="block">Returns the value of the <code>message</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>message</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html
    new file mode 100644
    index 000000000..b55d131bb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.Output.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelWithWaitExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample, record: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelWithWaitExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Record Class ParallelWithWaitExample.Output" class="title">Record Class ParallelWithWaitExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Output</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ParallelWithWaitExample.Output</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;deliveries, int&nbsp;success, int&nbsp;faiure)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,int,int)" class="member-name-link">Output</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;deliveries,
    + int&nbsp;success,
    + int&nbsp;faiure)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deliveries()" class="member-name-link">deliveries</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>deliveries</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#faiure()" class="member-name-link">faiure</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>faiure</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#success()" class="member-name-link">success</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>success</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,int,int)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;deliveries,
    + int&nbsp;success,
    + int&nbsp;faiure)</span></div>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>deliveries</code> - the value for the <code>deliveries</code> record component</dd>
    +<dd><code>success</code> - the value for the <code>success</code> record component</dd>
    +<dd><code>faiure</code> - the value for the <code>faiure</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>; primitive components are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deliveries()">
    +<h3>deliveries</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">deliveries</span>()</div>
    +<div class="block">Returns the value of the <code>deliveries</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>deliveries</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="success()">
    +<h3>success</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">success</span>()</div>
    +<div class="block">Returns the value of the <code>success</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>success</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="faiure()">
    +<h3>faiure</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">faiure</span>()</div>
    +<div class="block">Returns the value of the <code>faiure</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>faiure</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html
    new file mode 100644
    index 000000000..4fdb55d00
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/ParallelWithWaitExample.html
    @@ -0,0 +1,218 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelWithWaitExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelWithWaitExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></div>
    +<h1 title="Class ParallelWithWaitExample" class="title">Class ParallelWithWaitExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>,<wbr><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelWithWaitExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>,<wbr><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a>&gt;</span></div>
    +<div class="block">Example demonstrating parallel branches where some branches include wait operations.
    +
    + <p>This models a notification fan-out pattern where different channels have different delivery delays:
    +
    + <ul>
    +   <li>Email β€” sent immediately
    +   <li>SMS β€” waits for a rate-limit window before sending
    +   <li>Push notification β€” waits for a quiet-hours window before sending
    + </ul>
    +
    + <p>All three branches run concurrently. Branches with waits suspend without consuming compute resources and resume
    + automatically once the wait elapses. The parallel operation completes once all branches finish.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ParallelWithWaitExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="ParallelWithWaitExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ParallelWithWaitExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ParallelWithWaitExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelWithWaitExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>,<wbr><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.Input.html
    new file mode 100644
    index 000000000..762af00f1
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: DeserializationFailedParallelExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> with parameters of type <a href="../DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DeserializationFailedParallelExample.</span><code><a href="../DeserializationFailedParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.html
    new file mode 100644
    index 000000000..ba120d86a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/DeserializationFailedParallelExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: DeserializationFailedParallelExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.parallel.DeserializationFailedParallelExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Input.html
    new file mode 100644
    index 000000000..d3b9545de
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> with parameters of type <a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelExample.</span><code><a href="../ParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Output.html
    new file mode 100644
    index 000000000..624fc88c6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample, record: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelExample.Output" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> that return <a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelExample.</span><code><a href="../ParallelExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.html
    new file mode 100644
    index 000000000..d9365a661
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.parallel.ParallelExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.parallel.ParallelExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Input.html
    new file mode 100644
    index 000000000..7f4143dfd
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> with parameters of type <a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelFailureToleranceExample.</span><code><a href="../ParallelFailureToleranceExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Output.html
    new file mode 100644
    index 000000000..a26c257e8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample, record: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Output" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> that return <a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelFailureToleranceExample.</span><code><a href="../ParallelFailureToleranceExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.html
    new file mode 100644
    index 000000000..85433e254
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelFailureToleranceExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelFailureToleranceExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.parallel.ParallelFailureToleranceExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Input.html
    new file mode 100644
    index 000000000..4a12119db
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> with parameters of type <a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelWithWaitExample.</span><code><a href="../ParallelWithWaitExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Output.html
    new file mode 100644
    index 000000000..241e8356c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample, record: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Output" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<h2>Uses of <a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.parallel</a> that return <a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelWithWaitExample.</span><code><a href="../ParallelWithWaitExample.html#handleRequest(software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.html b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.html
    new file mode 100644
    index 000000000..80fc016b2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/class-use/ParallelWithWaitExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel, class: ParallelWithWaitExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.parallel.ParallelWithWaitExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/parallel/package-summary.html
    new file mode 100644
    index 000000000..8ede97cc4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/package-summary.html
    @@ -0,0 +1,122 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.parallel (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.parallel">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.parallel" class="title">Package software.amazon.lambda.durable.examples.parallel</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.parallel</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DeserializationFailedParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="DeserializationFailedParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParallelExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating parallel branch execution with the Durable Execution SDK.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ParallelExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ParallelExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ParallelFailureToleranceExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating parallel execution with failure tolerance.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ParallelFailureToleranceExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ParallelFailureToleranceExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParallelWithWaitExample.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating parallel branches where some branches include wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ParallelWithWaitExample.Input.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ParallelWithWaitExample.Output.html" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/parallel/package-tree.html
    new file mode 100644
    index 000000000..f5375f289
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/package-tree.html
    @@ -0,0 +1,95 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.parallel Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.parallel">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.parallel</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="DeserializationFailedParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelFailureToleranceExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelWithWaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="DeserializationFailedParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelFailureToleranceExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelFailureToleranceExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelWithWaitExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.parallel.<a href="ParallelWithWaitExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/parallel/package-use.html b/javadoc/software/amazon/lambda/durable/examples/parallel/package-use.html
    new file mode 100644
    index 000000000..b6585b466
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/parallel/package-use.html
    @@ -0,0 +1,97 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.parallel (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.parallel">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.parallel" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.parallel</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a> used by <a href="package-summary.html">software.amazon.lambda.durable.examples.parallel</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DeserializationFailedParallelExample.Input.html#software.amazon.lambda.durable.examples.parallel">DeserializationFailedParallelExample.Input</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelExample.Input.html#software.amazon.lambda.durable.examples.parallel">ParallelExample.Input</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelExample.Output.html#software.amazon.lambda.durable.examples.parallel">ParallelExample.Output</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelFailureToleranceExample.Input.html#software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Input</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelFailureToleranceExample.Output.html#software.amazon.lambda.durable.examples.parallel">ParallelFailureToleranceExample.Output</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelWithWaitExample.Input.html#software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Input</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelWithWaitExample.Output.html#software.amazon.lambda.durable.examples.parallel">ParallelWithWaitExample.Output</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html b/javadoc/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html
    new file mode 100644
    index 000000000..3a4fca1c8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/DeserializationFailureExample.html
    @@ -0,0 +1,188 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DeserializationFailureExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: DeserializationFailureExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DeserializationFailureExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Class DeserializationFailureExample" class="title">Class DeserializationFailureExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.DeserializationFailureExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DeserializationFailureExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DeserializationFailureExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>DeserializationFailureExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DeserializationFailureExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.String,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html
    new file mode 100644
    index 000000000..917ce58ff
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Input.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncStepsExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncStepsExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Record Class ManyAsyncStepsExample.Input" class="title">Record Class ManyAsyncStepsExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ManyAsyncStepsExample.Input</span>(int&nbsp;multiplier, int&nbsp;steps)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int)" class="member-name-link">Input</a><wbr>(int&nbsp;multiplier,
    + int&nbsp;steps)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#multiplier()" class="member-name-link">multiplier</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#steps()" class="member-name-link">steps</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(int&nbsp;multiplier,
    + int&nbsp;steps)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>multiplier</code> - the value for the <code>multiplier</code> record component</dd>
    +<dd><code>steps</code> - the value for the <code>steps</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="multiplier()">
    +<h3>multiplier</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">multiplier</span>()</div>
    +<div class="block">Returns the value of the <code>multiplier</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>multiplier</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="steps()">
    +<h3>steps</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">steps</span>()</div>
    +<div class="block">Returns the value of the <code>steps</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>steps</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html
    new file mode 100644
    index 000000000..14ac40abd
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.Output.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncStepsExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample, record: Output">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncStepsExample.Output.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Record Class ManyAsyncStepsExample.Output" class="title">Record Class ManyAsyncStepsExample.Output</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Output</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ManyAsyncStepsExample.Output</span>(long&nbsp;result, long&nbsp;executionTimeMs, long&nbsp;replayTimeMs)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(long,long,long)" class="member-name-link">Output</a><wbr>(long&nbsp;result,
    + long&nbsp;executionTimeMs,
    + long&nbsp;replayTimeMs)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#executionTimeMs()" class="member-name-link">executionTimeMs</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replayTimeMs()" class="member-name-link">replayTimeMs</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#result()" class="member-name-link">result</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(long,long,long)">
    +<h3>Output</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Output</span><wbr><span class="parameters">(long&nbsp;result,
    + long&nbsp;executionTimeMs,
    + long&nbsp;replayTimeMs)</span></div>
    +<div class="block">Creates an instance of a <code>Output</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>result</code> - the value for the <code>result</code> record component</dd>
    +<dd><code>executionTimeMs</code> - the value for the <code>executionTimeMs</code> record component</dd>
    +<dd><code>replayTimeMs</code> - the value for the <code>replayTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="result()">
    +<h3>result</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">result</span>()</div>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>result</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="executionTimeMs()">
    +<h3>executionTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">executionTimeMs</span>()</div>
    +<div class="block">Returns the value of the <code>executionTimeMs</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>executionTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replayTimeMs()">
    +<h3>replayTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">replayTimeMs</span>()</div>
    +<div class="block">Returns the value of the <code>replayTimeMs</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>replayTimeMs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html
    new file mode 100644
    index 000000000..9cfd53543
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/ManyAsyncStepsExample.html
    @@ -0,0 +1,294 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ManyAsyncStepsExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ManyAsyncStepsExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Class ManyAsyncStepsExample" class="title">Class ManyAsyncStepsExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>,<wbr><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ManyAsyncStepsExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>,<wbr><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a>&gt;</span></div>
    +<div class="block">Performance test example demonstrating concurrent async steps.
    +
    + <p>This example tests the SDK's ability to handle many concurrent operations:
    +
    + <ul>
    +   <li>Creates async steps in a loop
    +   <li>Each step performs a simple computation
    +   <li>All results are collected using <a href="../../DurableFuture.html#allOf(software.amazon.lambda.durable.DurableFuture...)"><code>DurableFuture.allOf(software.amazon.lambda.durable.DurableFuture&lt;T&gt;...)</code></a>
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ManyAsyncStepsExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="ManyAsyncStepsExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ManyAsyncStepsExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createConfiguration()" class="member-name-link">createConfiguration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Template method for creating configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ManyAsyncStepsExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ManyAsyncStepsExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>,<wbr><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createConfiguration()">
    +<h3>createConfiguration</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></span>&nbsp;<span class="element-name">createConfiguration</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#createConfiguration()">DurableHandler</a></code></span></div>
    +<div class="block">Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    + SerDes, or other configuration.
    +
    + <p>The <a href="../../client/LambdaDurableFunctionsClient.html" title="class in software.amazon.lambda.durable.client"><code>LambdaDurableFunctionsClient</code></a> is a wrapper that customers
    + should use to inject their own configured <code>LambdaClient</code>. This
    + allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    +
    + <p>Basic example with custom region and credentials:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Create custom Lambda client with specific configuration
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_WEST_2)
    +         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    +         .build();
    +
    +     // Wrap the Lambda client with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .build();
    + }
    + </code></pre>
    +
    + <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    +
    + <pre><code>
    + @Override
    + protected DurableConfig createConfiguration() {
    +     // Configure AWS CRT HTTP Client for optimal performance
    +     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    +         .maxConcurrency(50)
    +         .connectionTimeout(Duration.ofSeconds(30))
    +         .connectionMaxIdleTime(Duration.ofSeconds(60))
    +         .build();
    +
    +     // Create Lambda client with CRT HTTP client
    +     var lambdaClient = LambdaClient.builder()
    +         .region(Region.US_EAST_1)
    +         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    +         .httpClient(crtHttpClient)
    +         .overrideConfiguration(ClientOverrideConfiguration.builder()
    +             .retryPolicy(RetryPolicy.builder()
    +                 .numRetries(5)
    +                 .build())
    +             .build())
    +         .build();
    +
    +     // Wrap with LambdaDurableFunctionsClient
    +     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    +
    +     return DurableConfig.builder()
    +         .withDurableExecutionClient(durableClient)
    +         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    +         .withExecutorService(customExecutor)  // Optional: custom thread pool
    +         .build();
    + }
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>,<wbr><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>DurableConfig with desired configuration</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/RetryExample.html b/javadoc/software/amazon/lambda/durable/examples/step/RetryExample.html
    new file mode 100644
    index 000000000..d9869fec7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/RetryExample.html
    @@ -0,0 +1,197 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: RetryExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Class RetryExample" class="title">Class RetryExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.RetryExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RetryExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Simple example demonstrating retry strategies with a flaky API.
    +
    + <p>This example shows:
    +
    + <ul>
    +   <li>A step that never retries (fails immediately)
    +   <li>A step that retries with default exponential backoff
    +   <li>Time-based failure simulation for realistic retry behavior
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">RetryExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>RetryExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RetryExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/RetryInProcessExample.html b/javadoc/software/amazon/lambda/durable/examples/step/RetryInProcessExample.html
    new file mode 100644
    index 000000000..5d2a2f8ea
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/RetryInProcessExample.html
    @@ -0,0 +1,197 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryInProcessExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: RetryInProcessExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryInProcessExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Class RetryInProcessExample" class="title">Class RetryInProcessExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.RetryInProcessExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RetryInProcessExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating in-process retry behavior with concurrent operations.
    +
    + <p>This example shows:
    +
    + <ul>
    +   <li>An async step that fails and retries while other work continues
    +   <li>A long-running synchronous step that keeps the process busy
    +   <li>Retry happens in-process without suspension because main thread is active
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">RetryInProcessExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>RetryInProcessExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RetryInProcessExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.Object,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/SimpleStepExample.html b/javadoc/software/amazon/lambda/durable/examples/step/SimpleStepExample.html
    new file mode 100644
    index 000000000..43128ce11
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/SimpleStepExample.html
    @@ -0,0 +1,197 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SimpleStepExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step, class: SimpleStepExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SimpleStepExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></div>
    +<h1 title="Class SimpleStepExample" class="title">Class SimpleStepExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.step.SimpleStepExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SimpleStepExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Simple example demonstrating basic step execution with the Durable Execution SDK.
    +
    + <p>This handler processes a greeting request through three sequential steps:
    +
    + <ol>
    +   <li>Create greeting message
    +   <li>Transform to uppercase
    +   <li>Add punctuation
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SimpleStepExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>SimpleStepExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SimpleStepExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/DeserializationFailureExample.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/DeserializationFailureExample.html
    new file mode 100644
    index 000000000..fa23ecb20
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/DeserializationFailureExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.step.DeserializationFailureExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: DeserializationFailureExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.step.DeserializationFailureExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.step.DeserializationFailureExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.step.DeserializationFailureExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Input.html
    new file mode 100644
    index 000000000..a7adadd00
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.step</a> with parameters of type <a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncStepsExample.</span><code><a href="../ManyAsyncStepsExample.html#handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Output.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Output.html
    new file mode 100644
    index 000000000..e50b20341
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.Output.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Output (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample, record: Output">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Output" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Output</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.step</a> that return <a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ManyAsyncStepsExample.</span><code><a href="../ManyAsyncStepsExample.html#handleRequest(software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.html
    new file mode 100644
    index 000000000..4791dd2fa
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/ManyAsyncStepsExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: ManyAsyncStepsExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.step.ManyAsyncStepsExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryExample.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryExample.html
    new file mode 100644
    index 000000000..eeeabc29e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.step.RetryExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: RetryExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.step.RetryExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.step.RetryExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.step.RetryExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryInProcessExample.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryInProcessExample.html
    new file mode 100644
    index 000000000..5f43e639e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/RetryInProcessExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.step.RetryInProcessExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: RetryInProcessExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.step.RetryInProcessExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.step.RetryInProcessExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.step.RetryInProcessExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/class-use/SimpleStepExample.html b/javadoc/software/amazon/lambda/durable/examples/step/class-use/SimpleStepExample.html
    new file mode 100644
    index 000000000..3efce454f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/class-use/SimpleStepExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.step.SimpleStepExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step, class: SimpleStepExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.step.SimpleStepExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.step.SimpleStepExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.step.SimpleStepExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/step/package-summary.html
    new file mode 100644
    index 000000000..d08569340
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/package-summary.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.step (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.step">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.step" class="title">Package software.amazon.lambda.durable.examples.step</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.step</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DeserializationFailureExample.html" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ManyAsyncStepsExample.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Performance test example demonstrating concurrent async steps.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ManyAsyncStepsExample.Input.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ManyAsyncStepsExample.Output.html" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="RetryExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Simple example demonstrating retry strategies with a flaky API.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RetryInProcessExample.html" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating in-process retry behavior with concurrent operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SimpleStepExample.html" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Simple example demonstrating basic step execution with the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/step/package-tree.html
    new file mode 100644
    index 000000000..a48c79800
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/package-tree.html
    @@ -0,0 +1,91 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.step Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.step">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.step</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="DeserializationFailureExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">DeserializationFailureExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="ManyAsyncStepsExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="RetryExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="RetryInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">RetryInProcessExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="SimpleStepExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">SimpleStepExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="ManyAsyncStepsExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.step.<a href="ManyAsyncStepsExample.Output.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/step/package-use.html b/javadoc/software/amazon/lambda/durable/examples/step/package-use.html
    new file mode 100644
    index 000000000..6cf348137
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/step/package-use.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.step (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.step">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.step" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.step</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.step</a> used by <a href="package-summary.html">software.amazon.lambda.durable.examples.step</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ManyAsyncStepsExample.Input.html#software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Input</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/ManyAsyncStepsExample.Output.html#software.amazon.lambda.durable.examples.step">ManyAsyncStepsExample.Output</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/ApprovalRequest.html b/javadoc/software/amazon/lambda/durable/examples/types/ApprovalRequest.html
    new file mode 100644
    index 000000000..dc6ab818a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/ApprovalRequest.html
    @@ -0,0 +1,285 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ApprovalRequest (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.types, record: ApprovalRequest">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ApprovalRequest.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.types</a></div>
    +<h1 title="Record Class ApprovalRequest" class="title">Record Class ApprovalRequest</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.types.ApprovalRequest</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">ApprovalRequest</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description, double&nbsp;amount, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;timeoutSeconds)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Input for the approval workflow.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,double)" class="member-name-link">ApprovalRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description,
    + double&nbsp;amount)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,double,java.lang.Integer)" class="member-name-link">ApprovalRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description,
    + double&nbsp;amount,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;timeoutSeconds)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an instance of a <code>ApprovalRequest</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#amount()" class="member-name-link">amount</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>amount</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#description()" class="member-name-link">description</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>description</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#timeoutSeconds()" class="member-name-link">timeoutSeconds</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>timeoutSeconds</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,double)">
    +<h3>ApprovalRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ApprovalRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description,
    + double&nbsp;amount)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,double,java.lang.Integer)">
    +<h3>ApprovalRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ApprovalRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description,
    + double&nbsp;amount,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;timeoutSeconds)</span></div>
    +<div class="block">Creates an instance of a <code>ApprovalRequest</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>description</code> - the value for the <code>description</code> record component</dd>
    +<dd><code>amount</code> - the value for the <code>amount</code> record component</dd>
    +<dd><code>timeoutSeconds</code> - the value for the <code>timeoutSeconds</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>; primitive components are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="description()">
    +<h3>description</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">description</span>()</div>
    +<div class="block">Returns the value of the <code>description</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>description</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="amount()">
    +<h3>amount</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">amount</span>()</div>
    +<div class="block">Returns the value of the <code>amount</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>amount</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="timeoutSeconds()">
    +<h3>timeoutSeconds</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">timeoutSeconds</span>()</div>
    +<div class="block">Returns the value of the <code>timeoutSeconds</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>timeoutSeconds</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/GreetingRequest.html b/javadoc/software/amazon/lambda/durable/examples/types/GreetingRequest.html
    new file mode 100644
    index 000000000..40cd09338
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/GreetingRequest.html
    @@ -0,0 +1,181 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>GreetingRequest (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.types, class: GreetingRequest">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/GreetingRequest.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.types</a></div>
    +<h1 title="Class GreetingRequest" class="title">Class GreetingRequest</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.types.GreetingRequest</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GreetingRequest</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GreetingRequest</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">GreetingRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">getName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setName(java.lang.String)" class="member-name-link">setName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GreetingRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GreetingRequest</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>GreetingRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GreetingRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getName()">
    +<h3>getName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getName</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setName(java.lang.String)">
    +<h3>setName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/class-use/ApprovalRequest.html b/javadoc/software/amazon/lambda/durable/examples/types/class-use/ApprovalRequest.html
    new file mode 100644
    index 000000000..09fa4b8fb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/class-use/ApprovalRequest.html
    @@ -0,0 +1,93 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.types.ApprovalRequest (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.types, record: ApprovalRequest">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.types.ApprovalRequest" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.types.ApprovalRequest</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.callback">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.callback">
    +<h2>Uses of <a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a> in <a href="../../callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></h2>
    +<div class="caption"><span>Methods in <a href="../../callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a> with parameters of type <a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CallbackExample.</span><code><a href="../../callback/CallbackExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForCallbackFailedExample.</span><code><a href="../../callback/WaitForCallbackFailedExample.html#handleRequest(software.amazon.lambda.durable.examples.types.ApprovalRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/class-use/GreetingRequest.html b/javadoc/software/amazon/lambda/durable/examples/types/class-use/GreetingRequest.html
    new file mode 100644
    index 000000000..6a1da9f87
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/class-use/GreetingRequest.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.types.GreetingRequest (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.types, class: GreetingRequest">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.types.GreetingRequest" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.types.GreetingRequest</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.invoke">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.map">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../child/package-summary.html">software.amazon.lambda.durable.examples.child</a></h2>
    +<div class="caption"><span>Methods in <a href="../../child/package-summary.html">software.amazon.lambda.durable.examples.child</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ChildContextExample.</span><code><a href="../../child/ChildContextExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../general/package-summary.html">software.amazon.lambda.durable.examples.general</a></h2>
    +<div class="caption"><span>Methods in <a href="../../general/package-summary.html">software.amazon.lambda.durable.examples.general</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CustomPollingExample.</span><code><a href="../../general/CustomPollingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LoggingExample.</span><code><a href="../../general/LoggingExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">NoopExample.</span><code><a href="../../general/NoopExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.invoke">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></h2>
    +<div class="caption"><span>Methods in <a href="../../invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SimpleInvokeExample.</span><code><a href="../../invoke/SimpleInvokeExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.map">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../map/package-summary.html">software.amazon.lambda.durable.examples.map</a></h2>
    +<div class="caption"><span>Methods in <a href="../../map/package-summary.html">software.amazon.lambda.durable.examples.map</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DeserializationFailedMapExample.</span><code><a href="../../map/DeserializationFailedMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">SimpleMapExample.</span><code><a href="../../map/SimpleMapExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../step/package-summary.html">software.amazon.lambda.durable.examples.step</a></h2>
    +<div class="caption"><span>Methods in <a href="../../step/package-summary.html">software.amazon.lambda.durable.examples.step</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">SimpleStepExample.</span><code><a href="../../step/SimpleStepExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<h2>Uses of <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a> in <a href="../../wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></h2>
    +<div class="caption"><span>Methods in <a href="../../wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a> with parameters of type <a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitAsyncExample.</span><code><a href="../../wait/WaitAsyncExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitAtLeastExample.</span><code><a href="../../wait/WaitAtLeastExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitAtLeastInProcessExample.</span><code><a href="../../wait/WaitAtLeastInProcessExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitExample.</span><code><a href="../../wait/WaitExample.html#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/types/package-summary.html
    new file mode 100644
    index 000000000..7832b91b9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/package-summary.html
    @@ -0,0 +1,98 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.types (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.types">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.types" class="title">Package software.amazon.lambda.durable.examples.types</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.types</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ApprovalRequest.html" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Input for the approval workflow.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/types/package-tree.html
    new file mode 100644
    index 000000000..2a91c73cc
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/package-tree.html
    @@ -0,0 +1,82 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.types Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.types">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.types</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.types.<a href="GreetingRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.types.<a href="ApprovalRequest.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.types">ApprovalRequest</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/types/package-use.html b/javadoc/software/amazon/lambda/durable/examples/types/package-use.html
    new file mode 100644
    index 000000000..b34aee1e9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/types/package-use.html
    @@ -0,0 +1,165 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.types (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.types">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.types" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.types</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.callback">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.invoke">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.map">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.callback">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ApprovalRequest.html#software.amazon.lambda.durable.examples.callback">ApprovalRequest</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Input for the approval workflow.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../child/package-summary.html">software.amazon.lambda.durable.examples.child</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.child">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../general/package-summary.html">software.amazon.lambda.durable.examples.general</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.general">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.invoke">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.invoke">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.map">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../map/package-summary.html">software.amazon.lambda.durable.examples.map</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.map">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../step/package-summary.html">software.amazon.lambda.durable.examples.step</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.step">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.types</a> used by <a href="../wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/GreetingRequest.html#software.amazon.lambda.durable.examples.wait">GreetingRequest</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html
    new file mode 100644
    index 000000000..38d42f81b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.Input.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ConcurrentWaitForConditionExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: ConcurrentWaitForConditionExample, record: Input">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ConcurrentWaitForConditionExample.Input.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Record Class ConcurrentWaitForConditionExample.Input" class="title">Record Class ConcurrentWaitForConditionExample.Input</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">ConcurrentWaitForConditionExample.Input</span>(int&nbsp;threshold, int&nbsp;totalOperations, int&nbsp;maxConcurrency)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int,int)" class="member-name-link">Input</a><wbr>(int&nbsp;threshold,
    + int&nbsp;totalOperations,
    + int&nbsp;maxConcurrency)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#maxConcurrency()" class="member-name-link">maxConcurrency</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>maxConcurrency</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#threshold()" class="member-name-link">threshold</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>threshold</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#totalOperations()" class="member-name-link">totalOperations</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>totalOperations</code> record component.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int,int)">
    +<h3>Input</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Input</span><wbr><span class="parameters">(int&nbsp;threshold,
    + int&nbsp;totalOperations,
    + int&nbsp;maxConcurrency)</span></div>
    +<div class="block">Creates an instance of a <code>Input</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>threshold</code> - the value for the <code>threshold</code> record component</dd>
    +<dd><code>totalOperations</code> - the value for the <code>totalOperations</code> record component</dd>
    +<dd><code>maxConcurrency</code> - the value for the <code>maxConcurrency</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="threshold()">
    +<h3>threshold</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">threshold</span>()</div>
    +<div class="block">Returns the value of the <code>threshold</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>threshold</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="totalOperations()">
    +<h3>totalOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">totalOperations</span>()</div>
    +<div class="block">Returns the value of the <code>totalOperations</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>totalOperations</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="maxConcurrency()">
    +<h3>maxConcurrency</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">maxConcurrency</span>()</div>
    +<div class="block">Returns the value of the <code>maxConcurrency</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>maxConcurrency</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html
    new file mode 100644
    index 000000000..208c8ad3b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/ConcurrentWaitForConditionExample.html
    @@ -0,0 +1,211 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ConcurrentWaitForConditionExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: ConcurrentWaitForConditionExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ConcurrentWaitForConditionExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class ConcurrentWaitForConditionExample" class="title">Class ConcurrentWaitForConditionExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ConcurrentWaitForConditionExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating concurrent waitForCondition operations using map.
    +
    + <p>Runs many (totalOperations) waitForCondition operations concurrently (maxConcurrency). Each operation:
    +
    + <ol>
    +   <li>Uses attempt count as state (replay-safe).
    +   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ConcurrentWaitForConditionExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ConcurrentWaitForConditionExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ConcurrentWaitForConditionExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ConcurrentWaitForConditionExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html
    new file mode 100644
    index 000000000..f2e1e1cf4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAsyncExample.html
    @@ -0,0 +1,199 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitAsyncExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: WaitAsyncExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitAsyncExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class WaitAsyncExample" class="title">Class WaitAsyncExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.WaitAsyncExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitAsyncExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating non-blocking wait with waitAsync().
    +
    + <p>This handler starts a wait and a step concurrently, then collects both results. The wait acts as a minimum
    + duration guarantee β€” the step runs in parallel, and the handler only proceeds once both the step completes and the
    + wait elapses.
    +
    + <ol>
    +   <li>Start a 5-second async wait (non-blocking)
    +   <li>Start an async step concurrently
    +   <li>Collect both results β€” ensures at least 5 seconds have passed
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitAsyncExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitAsyncExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitAsyncExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html
    new file mode 100644
    index 000000000..804c17f46
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastExample.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitAtLeastExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: WaitAtLeastExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitAtLeastExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class WaitAtLeastExample" class="title">Class WaitAtLeastExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.WaitAtLeastExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitAtLeastExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations.
    +
    + <p>This example shows suspension behavior with pending async steps:
    +
    + <ul>
    +   <li>stepAsync() starts a background operation (takes 2 seconds)
    +   <li>wait() is called immediately (3 second duration)
    +   <li>The step completes successfully before suspension
    +   <li>Execution suspends for the wait time
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitAtLeastExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitAtLeastExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitAtLeastExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html
    new file mode 100644
    index 000000000..ffb9dda71
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/WaitAtLeastInProcessExample.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitAtLeastInProcessExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: WaitAtLeastInProcessExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitAtLeastInProcessExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class WaitAtLeastInProcessExample" class="title">Class WaitAtLeastInProcessExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitAtLeastInProcessExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.
    +
    + <p>This example shows in-process wait behavior:
    +
    + <ul>
    +   <li>stepAsync() starts a background operation (takes 10 seconds)
    +   <li>wait() is called immediately (3 second duration)
    +   <li>The async step takes longer than the wait duration
    +   <li>No suspension occurs because we've already waited long enough
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitAtLeastInProcessExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitAtLeastInProcessExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitAtLeastInProcessExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/WaitExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/WaitExample.html
    new file mode 100644
    index 000000000..c8f60b124
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/WaitExample.html
    @@ -0,0 +1,199 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: WaitExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class WaitExample" class="title">Class WaitExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.WaitExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span></div>
    +<div class="block">Example demonstrating step execution with wait operations.
    +
    + <p>This handler processes a request through steps with delays:
    +
    + <ol>
    +   <li>Start processing
    +   <li>Wait 10 seconds
    +   <li>Continue processing
    +   <li>Wait 5 seconds
    +   <li>Complete
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(software.amazon.lambda.durable.examples.types.GreetingRequest,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>&nbsp;input,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="../types/GreetingRequest.html" title="class in software.amazon.lambda.durable.examples.types">GreetingRequest</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html
    new file mode 100644
    index 000000000..1fda94c9b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/WaitForConditionExample.html
    @@ -0,0 +1,196 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait, class: WaitForConditionExample">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionExample.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></div>
    +<h1 title="Class WaitForConditionExample" class="title">Class WaitForConditionExample</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">software.amazon.lambda.durable.DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.examples.wait.WaitForConditionExample</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.amazonaws.services.lambda.runtime.RequestStreamHandler</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForConditionExample</span>
    +<span class="extends-implements">extends <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span></div>
    +<div class="block">Example demonstrating the waitForCondition operation.
    +
    + <p>This handler polls a condition function until it signals completion:
    +
    + <ol>
    +   <li>The attempt count is used as a state (replay safe)
    +   <li>Fails and retries until the attempt count reaches the given threshold, and then succeeds
    + </ol></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitForConditionExample</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;threshold,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Handle the durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.DurableHandler">Methods inherited from class&nbsp;software.amazon.lambda.durable.<a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a></h3>
    +<code><a href="../../DurableHandler.html#createConfiguration()">createConfiguration</a>, <a href="../../DurableHandler.html#getConfiguration()">getConfiguration</a>, <a href="../../DurableHandler.html#handleRequest(java.io.InputStream,java.io.OutputStream,com.amazonaws.services.lambda.runtime.Context)">handleRequest</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitForConditionExample</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForConditionExample</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleRequest(java.lang.Integer,software.amazon.lambda.durable.DurableContext)">
    +<h3>handleRequest</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">handleRequest</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;threshold,
    + <a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">DurableHandler</a></code></span></div>
    +<div class="block">Handle the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../DurableHandler.html#handleRequest(I,software.amazon.lambda.durable.DurableContext)">handleRequest</a></code>&nbsp;in class&nbsp;<code><a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>threshold</code> - User input</dd>
    +<dd><code>context</code> - Durable context for operations</dd>
    +<dt>Returns:</dt>
    +<dd>Result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.Input.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.Input.html
    new file mode 100644
    index 000000000..389809ab5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.Input.html
    @@ -0,0 +1,89 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: ConcurrentWaitForConditionExample, record: Input">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input" class="title">Uses of Record Class<br>software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<h2>Uses of <a href="../ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a> in <a href="../package-summary.html">software.amazon.lambda.durable.examples.wait</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.examples.wait</a> with parameters of type <a href="../ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrentWaitForConditionExample.</span><code><a href="../ConcurrentWaitForConditionExample.html#handleRequest(software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample.Input,software.amazon.lambda.durable.DurableContext)" class="member-name-link">handleRequest</a><wbr>(<a href="../ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a>&nbsp;input,
    + <a href="../../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.html
    new file mode 100644
    index 000000000..908d51c66
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/ConcurrentWaitForConditionExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: ConcurrentWaitForConditionExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.ConcurrentWaitForConditionExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAsyncExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAsyncExample.html
    new file mode 100644
    index 000000000..2173c2e1a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAsyncExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.WaitAsyncExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: WaitAsyncExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.WaitAsyncExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.WaitAsyncExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.WaitAsyncExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastExample.html
    new file mode 100644
    index 000000000..e2631cd32
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.WaitAtLeastExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: WaitAtLeastExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.WaitAtLeastExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.WaitAtLeastExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.WaitAtLeastExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastInProcessExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastInProcessExample.html
    new file mode 100644
    index 000000000..9eb51567b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitAtLeastInProcessExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: WaitAtLeastInProcessExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.WaitAtLeastInProcessExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitExample.html
    new file mode 100644
    index 000000000..ee460a374
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.WaitExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: WaitExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.WaitExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.WaitExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.WaitExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitForConditionExample.html b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitForConditionExample.html
    new file mode 100644
    index 000000000..8447c349c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/class-use/WaitForConditionExample.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.examples.wait.WaitForConditionExample (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait, class: WaitForConditionExample">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.examples.wait.WaitForConditionExample" class="title">Uses of Class<br>software.amazon.lambda.durable.examples.wait.WaitForConditionExample</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.examples.wait.WaitForConditionExample</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/package-summary.html b/javadoc/software/amazon/lambda/durable/examples/wait/package-summary.html
    new file mode 100644
    index 000000000..ba46793e3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/package-summary.html
    @@ -0,0 +1,118 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.wait (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.examples.wait">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.examples.wait" class="title">Package software.amazon.lambda.durable.examples.wait</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.examples.wait</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ConcurrentWaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating concurrent waitForCondition operations using map.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ConcurrentWaitForConditionExample.Input.html" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitAsyncExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating non-blocking wait with waitAsync().</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitAtLeastExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitAtLeastInProcessExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating concurrent stepAsync() with wait() operations where no suspension occurs.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating step execution with wait operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitForConditionExample.html" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Example demonstrating the waitForCondition operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/package-tree.html b/javadoc/software/amazon/lambda/durable/examples/wait/package-tree.html
    new file mode 100644
    index 000000000..38bb205e0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/package-tree.html
    @@ -0,0 +1,91 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.examples.wait Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.examples.wait">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.examples.wait</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="../../DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="ConcurrentWaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="WaitAsyncExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAsyncExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="WaitAtLeastExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="WaitAtLeastInProcessExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitAtLeastInProcessExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="WaitExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitExample</a></li>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="WaitForConditionExample.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">WaitForConditionExample</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.examples.wait.<a href="ConcurrentWaitForConditionExample.Input.html" class="type-name-link" title="class in software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/examples/wait/package-use.html b/javadoc/software/amazon/lambda/durable/examples/wait/package-use.html
    new file mode 100644
    index 000000000..b3117a565
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/examples/wait/package-use.html
    @@ -0,0 +1,85 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.examples.wait (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.examples.wait">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.examples.wait" class="title">Uses of Package<br>software.amazon.lambda.durable.examples.wait</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a> used by <a href="package-summary.html">software.amazon.lambda.durable.examples.wait</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ConcurrentWaitForConditionExample.Input.html#software.amazon.lambda.durable.examples.wait">ConcurrentWaitForConditionExample.Input</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/CallbackException.html b/javadoc/software/amazon/lambda/durable/exception/CallbackException.html
    new file mode 100644
    index 000000000..a2da73051
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/CallbackException.html
    @@ -0,0 +1,214 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: CallbackException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class CallbackException" class="title">Class CallbackException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.CallbackException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></code>, <code><a href="CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></code>, <code><a href="CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.CallbackException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String)" class="member-name-link">CallbackException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String,java.lang.Throwable)" class="member-name-link">CallbackException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCallbackId()" class="member-name-link">getCallbackId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the callback ID associated with this exception.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String)">
    +<h3>CallbackException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,java.lang.String,java.lang.Throwable)">
    +<h3>CallbackException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getCallbackId()">
    +<h3>getCallbackId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getCallbackId</span>()</div>
    +<div class="block">Returns the callback ID associated with this exception.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/CallbackFailedException.html b/javadoc/software/amazon/lambda/durable/exception/CallbackFailedException.html
    new file mode 100644
    index 000000000..5ed9d9ef5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/CallbackFailedException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: CallbackFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class CallbackFailedException" class="title">Class CallbackFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.CallbackFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackFailedException</span>
    +<span class="extends-implements">extends <a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></span></div>
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.CallbackFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">CallbackFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.CallbackException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></h3>
    +<code><a href="CallbackException.html#getCallbackId()">getCallbackId</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>CallbackFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/CallbackSubmitterException.html b/javadoc/software/amazon/lambda/durable/exception/CallbackSubmitterException.html
    new file mode 100644
    index 000000000..a5685c10b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/CallbackSubmitterException.html
    @@ -0,0 +1,169 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackSubmitterException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: CallbackSubmitterException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackSubmitterException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class CallbackSubmitterException" class="title">Class CallbackSubmitterException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.CallbackSubmitterException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackSubmitterException</span>
    +<span class="extends-implements">extends <a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></span></div>
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.CallbackSubmitterException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.exception.StepException)" class="member-name-link">CallbackSubmitterException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;callbackOp,
    + <a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a>&nbsp;stepEx)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.CallbackException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></h3>
    +<code><a href="CallbackException.html#getCallbackId()">getCallbackId</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.exception.StepException)">
    +<h3>CallbackSubmitterException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackSubmitterException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;callbackOp,
    + <a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a>&nbsp;stepEx)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/CallbackTimeoutException.html b/javadoc/software/amazon/lambda/durable/exception/CallbackTimeoutException.html
    new file mode 100644
    index 000000000..580bb785c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/CallbackTimeoutException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackTimeoutException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: CallbackTimeoutException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackTimeoutException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class CallbackTimeoutException" class="title">Class CallbackTimeoutException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.CallbackException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.CallbackTimeoutException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackTimeoutException</span>
    +<span class="extends-implements">extends <a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></span></div>
    +<div class="block">Exception thrown when a callback times out.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.CallbackTimeoutException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">CallbackTimeoutException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.CallbackException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></h3>
    +<code><a href="CallbackException.html#getCallbackId()">getCallbackId</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>CallbackTimeoutException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackTimeoutException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/ChildContextFailedException.html b/javadoc/software/amazon/lambda/durable/exception/ChildContextFailedException.html
    new file mode 100644
    index 000000000..2fb076d63
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/ChildContextFailedException.html
    @@ -0,0 +1,162 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ChildContextFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: ChildContextFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ChildContextFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class ChildContextFailedException" class="title">Class ChildContextFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.ChildContextFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ChildContextFailedException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.ChildContextFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">ChildContextFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>ChildContextFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChildContextFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/DurableExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/DurableExecutionException.html
    new file mode 100644
    index 000000000..8c5008abb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/DurableExecutionException.html
    @@ -0,0 +1,181 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: DurableExecutionException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableExecutionException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class DurableExecutionException" class="title">Class DurableExecutionException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.DurableExecutionException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></code>, <code><a href="SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></code>, <code><a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableExecutionException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Base exception for all durable execution errors.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.DurableExecutionException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">DurableExecutionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Throwable)" class="member-name-link">DurableExecutionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Throwable,java.lang.StackTraceElement%5B%5D)" class="member-name-link">DurableExecutionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Throwable,java.lang.StackTraceElement[])">
    +<h3>DurableExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableExecutionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Throwable)">
    +<h3>DurableExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableExecutionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>DurableExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableExecutionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/DurableOperationException.html b/javadoc/software/amazon/lambda/durable/exception/DurableOperationException.html
    new file mode 100644
    index 000000000..29da2d31b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/DurableOperationException.html
    @@ -0,0 +1,275 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableOperationException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: DurableOperationException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableOperationException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class DurableOperationException" class="title">Class DurableOperationException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.DurableOperationException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></code>, <code><a href="ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></code>, <code><a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></code>, <code><a href="MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></code>, <code><a href="ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></code>, <code><a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></code>, <code><a href="WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableOperationException</span>
    +<span class="extends-implements">extends <a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></span></div>
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.DurableOperationException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">DurableOperationException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)" class="member-name-link">DurableOperationException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.StackTraceElement%5B%5D,java.lang.Throwable)" class="member-name-link">DurableOperationException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.Throwable)" class="member-name-link">DurableOperationException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getErrorObject()" class="member-name-link">getErrorObject</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the error details from the failed operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation()" class="member-name-link">getOperation</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the operation that caused this exception.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationId()" class="member-name-link">getOperationId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the ID of the operation that caused this exception.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationStatus</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationStatus()" class="member-name-link">getOperationStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the status of the operation that caused this exception.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>DurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableOperationException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)">
    +<h3>DurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableOperationException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.Throwable)">
    +<h3>DurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableOperationException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String,java.lang.StackTraceElement[],java.lang.Throwable)">
    +<h3>DurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableOperationException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getErrorObject()">
    +<h3>getErrorObject</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">getErrorObject</span>()</div>
    +<div class="block">Returns the error details from the failed operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation()">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">getOperation</span>()</div>
    +<div class="block">Returns the operation that caused this exception.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationStatus()">
    +<h3>getOperationStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationStatus</span>&nbsp;<span class="element-name">getOperationStatus</span>()</div>
    +<div class="block">Returns the status of the operation that caused this exception.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationId()">
    +<h3>getOperationId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getOperationId</span>()</div>
    +<div class="block">Returns the ID of the operation that caused this exception.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/IllegalDurableOperationException.html b/javadoc/software/amazon/lambda/durable/exception/IllegalDurableOperationException.html
    new file mode 100644
    index 000000000..58408e3ab
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/IllegalDurableOperationException.html
    @@ -0,0 +1,162 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>IllegalDurableOperationException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: IllegalDurableOperationException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/IllegalDurableOperationException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class IllegalDurableOperationException" class="title">Class IllegalDurableOperationException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.IllegalDurableOperationException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">IllegalDurableOperationException</span>
    +<span class="extends-implements">extends <a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></span></div>
    +<div class="block">An illegal operation is detected. The execution will be immediately terminated.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.IllegalDurableOperationException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">IllegalDurableOperationException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></h3>
    +<code><a href="UnrecoverableDurableExecutionException.html#getErrorObject()">getErrorObject</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>IllegalDurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">IllegalDurableOperationException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/InvokeException.html b/javadoc/software/amazon/lambda/durable/exception/InvokeException.html
    new file mode 100644
    index 000000000..c76aebc76
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/InvokeException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: InvokeException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class InvokeException" class="title">Class InvokeException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.InvokeException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></code>, <code><a href="InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></code>, <code><a href="InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.InvokeException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>InvokeException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/InvokeFailedException.html b/javadoc/software/amazon/lambda/durable/exception/InvokeFailedException.html
    new file mode 100644
    index 000000000..48fa00f0e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/InvokeFailedException.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: InvokeFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class InvokeFailedException" class="title">Class InvokeFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.InvokeFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeFailedException</span>
    +<span class="extends-implements">extends <a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></span></div>
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.InvokeFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>InvokeFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/InvokeStoppedException.html b/javadoc/software/amazon/lambda/durable/exception/InvokeStoppedException.html
    new file mode 100644
    index 000000000..89adfa017
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/InvokeStoppedException.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeStoppedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: InvokeStoppedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeStoppedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class InvokeStoppedException" class="title">Class InvokeStoppedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.InvokeStoppedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeStoppedException</span>
    +<span class="extends-implements">extends <a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></span></div>
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.InvokeStoppedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeStoppedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>InvokeStoppedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeStoppedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/InvokeTimedOutException.html b/javadoc/software/amazon/lambda/durable/exception/InvokeTimedOutException.html
    new file mode 100644
    index 000000000..a4a5daea9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/InvokeTimedOutException.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeTimedOutException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: InvokeTimedOutException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeTimedOutException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class InvokeTimedOutException" class="title">Class InvokeTimedOutException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.InvokeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.InvokeTimedOutException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeTimedOutException</span>
    +<span class="extends-implements">extends <a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></span></div>
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.InvokeTimedOutException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">InvokeTimedOutException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>InvokeTimedOutException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeTimedOutException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/MapIterationFailedException.html b/javadoc/software/amazon/lambda/durable/exception/MapIterationFailedException.html
    new file mode 100644
    index 000000000..b4a421b60
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/MapIterationFailedException.html
    @@ -0,0 +1,162 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapIterationFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: MapIterationFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapIterationFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class MapIterationFailedException" class="title">Class MapIterationFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.MapIterationFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MapIterationFailedException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.MapIterationFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">MapIterationFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>MapIterationFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MapIterationFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html
    new file mode 100644
    index 000000000..099f08620
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.html
    @@ -0,0 +1,163 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>NonDeterministicExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: NonDeterministicExecutionException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/NonDeterministicExecutionException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class NonDeterministicExecutionException" class="title">Class NonDeterministicExecutionException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.NonDeterministicExecutionException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NonDeterministicExecutionException</span>
    +<span class="extends-implements">extends <a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></span></div>
    +<div class="block">Exception thrown when non-deterministic code is detected during replay. This indicates that the workflow code has
    + changed in a way that violates determinism requirements between the original execution and replay.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.NonDeterministicExecutionException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NonDeterministicExecutionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></h3>
    +<code><a href="UnrecoverableDurableExecutionException.html#getErrorObject()">getErrorObject</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NonDeterministicExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NonDeterministicExecutionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/ParallelBranchFailedException.html b/javadoc/software/amazon/lambda/durable/exception/ParallelBranchFailedException.html
    new file mode 100644
    index 000000000..71e9d82e3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/ParallelBranchFailedException.html
    @@ -0,0 +1,162 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelBranchFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: ParallelBranchFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelBranchFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class ParallelBranchFailedException" class="title">Class ParallelBranchFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.ParallelBranchFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelBranchFailedException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.ParallelBranchFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">ParallelBranchFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>ParallelBranchFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelBranchFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/SerDesException.html b/javadoc/software/amazon/lambda/durable/exception/SerDesException.html
    new file mode 100644
    index 000000000..a337afc20
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/SerDesException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SerDesException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: SerDesException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SerDesException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class SerDesException" class="title">Class SerDesException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.SerDesException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SerDesException</span>
    +<span class="extends-implements">extends <a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></span></div>
    +<div class="block">Exception thrown when serialization or deserialization fails.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.SerDesException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">SerDesException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Throwable)" class="member-name-link">SerDesException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Throwable)">
    +<h3>SerDesException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SerDesException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;cause)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>SerDesException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SerDesException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/StepException.html b/javadoc/software/amazon/lambda/durable/exception/StepException.html
    new file mode 100644
    index 000000000..7f123010b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/StepException.html
    @@ -0,0 +1,170 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: StepException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class StepException" class="title">Class StepException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.StepException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="StepFailedException.html" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></code>, <code><a href="StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Base exception for step operation failures.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.StepException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)" class="member-name-link">StepException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.awssdk.services.lambda.model.ErrorObject,java.lang.String)">
    +<h3>StepException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StepException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/StepFailedException.html b/javadoc/software/amazon/lambda/durable/exception/StepFailedException.html
    new file mode 100644
    index 000000000..e78766cdb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/StepFailedException.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: StepFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class StepFailedException" class="title">Class StepFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="StepException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.StepException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.StepFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepFailedException</span>
    +<span class="extends-implements">extends <a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></span></div>
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.StepFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">StepFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>StepFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StepFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/StepInterruptedException.html b/javadoc/software/amazon/lambda/durable/exception/StepInterruptedException.html
    new file mode 100644
    index 000000000..992af7aa1
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/StepInterruptedException.html
    @@ -0,0 +1,195 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepInterruptedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: StepInterruptedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepInterruptedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class StepInterruptedException" class="title">Class StepInterruptedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance"><a href="StepException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.StepException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.StepInterruptedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepInterruptedException</span>
    +<span class="extends-implements">extends <a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></span></div>
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.StepInterruptedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">StepInterruptedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isStepInterruptedException(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">isStepInterruptedException</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>StepInterruptedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StepInterruptedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isStepInterruptedException(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>isStepInterruptedException</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isStepInterruptedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html
    new file mode 100644
    index 000000000..cb2ec85b2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.html
    @@ -0,0 +1,195 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>UnrecoverableDurableExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: UnrecoverableDurableExecutionException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/UnrecoverableDurableExecutionException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class UnrecoverableDurableExecutionException" class="title">Class UnrecoverableDurableExecutionException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></code>, <code><a href="NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">UnrecoverableDurableExecutionException</span>
    +<span class="extends-implements">extends <a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></span></div>
    +<div class="block">Exception thrown when the execution is not recoverable. The durable execution will be immediately terminated.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">UnrecoverableDurableExecutionException</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getErrorObject()" class="member-name-link">getErrorObject</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the error details for this unrecoverable exception.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>UnrecoverableDurableExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">UnrecoverableDurableExecutionException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getErrorObject()">
    +<h3>getErrorObject</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">getErrorObject</span>()</div>
    +<div class="block">Returns the error details for this unrecoverable exception.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/WaitForConditionFailedException.html b/javadoc/software/amazon/lambda/durable/exception/WaitForConditionFailedException.html
    new file mode 100644
    index 000000000..3527c1b69
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/WaitForConditionFailedException.html
    @@ -0,0 +1,173 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception, class: WaitForConditionFailedException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionFailedException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<h1 title="Class WaitForConditionFailedException" class="title">Class WaitForConditionFailedException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableExecutionException</a>
    +<div class="inheritance"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception.DurableOperationException</a>
    +<div class="inheritance">software.amazon.lambda.durable.exception.WaitForConditionFailedException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForConditionFailedException</span>
    +<span class="extends-implements">extends <a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.
    +
    + <p>This can occur when the maximum number of polling attempts is exceeded, or when the check function throws an
    + error.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.exception.WaitForConditionFailedException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WaitForConditionFailedException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">WaitForConditionFailedException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.exception.DurableOperationException">Methods inherited from class&nbsp;software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></h3>
    +<code><a href="DurableOperationException.html#getErrorObject()">getErrorObject</a>, <a href="DurableOperationException.html#getOperation()">getOperation</a>, <a href="DurableOperationException.html#getOperationId()">getOperationId</a>, <a href="DurableOperationException.html#getOperationStatus()">getOperationStatus</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>WaitForConditionFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForConditionFailedException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>WaitForConditionFailedException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForConditionFailedException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackException.html
    new file mode 100644
    index 000000000..18e768c7b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackException.html
    @@ -0,0 +1,100 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.CallbackException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: CallbackException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.CallbackException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.CallbackException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a callback times out.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackFailedException.html
    new file mode 100644
    index 000000000..d0ff122f9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.CallbackFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: CallbackFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.CallbackFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.CallbackFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.CallbackFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackSubmitterException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackSubmitterException.html
    new file mode 100644
    index 000000000..7cfbc1cbb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackSubmitterException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.CallbackSubmitterException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: CallbackSubmitterException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.CallbackSubmitterException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.CallbackSubmitterException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.CallbackSubmitterException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackTimeoutException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackTimeoutException.html
    new file mode 100644
    index 000000000..9c4d4688e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/CallbackTimeoutException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.CallbackTimeoutException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: CallbackTimeoutException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.CallbackTimeoutException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.CallbackTimeoutException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.CallbackTimeoutException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/ChildContextFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/ChildContextFailedException.html
    new file mode 100644
    index 000000000..5ebca29d9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/ChildContextFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.ChildContextFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: ChildContextFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.ChildContextFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.ChildContextFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.ChildContextFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/DurableExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/DurableExecutionException.html
    new file mode 100644
    index 000000000..82d79b727
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/DurableExecutionException.html
    @@ -0,0 +1,185 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.DurableExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: DurableExecutionException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.DurableExecutionException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.DurableExecutionException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a callback times out.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ChildContextFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../DurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../IllegalDurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">An illegal operation is detected.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../MapIterationFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../NonDeterministicExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when non-deterministic code is detected during replay.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelBranchFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../SerDesException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">SerDesException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when serialization or deserialization fails.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for step operation failures.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../UnrecoverableDurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../WaitForConditionFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/DurableOperationException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/DurableOperationException.html
    new file mode 100644
    index 000000000..110cb9384
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/DurableOperationException.html
    @@ -0,0 +1,160 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.DurableOperationException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: DurableOperationException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.DurableOperationException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.DurableOperationException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a callback times out.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ChildContextFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../MapIterationFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ParallelBranchFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for step operation failures.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../WaitForConditionFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/IllegalDurableOperationException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/IllegalDurableOperationException.html
    new file mode 100644
    index 000000000..ad84ba3d2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/IllegalDurableOperationException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.IllegalDurableOperationException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: IllegalDurableOperationException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.IllegalDurableOperationException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.IllegalDurableOperationException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.IllegalDurableOperationException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeException.html
    new file mode 100644
    index 000000000..adc16b6f3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeException.html
    @@ -0,0 +1,100 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.InvokeException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: InvokeException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.InvokeException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.InvokeException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeFailedException.html
    new file mode 100644
    index 000000000..cf9c57001
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.InvokeFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: InvokeFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.InvokeFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.InvokeFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.InvokeFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeStoppedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeStoppedException.html
    new file mode 100644
    index 000000000..b57690eac
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeStoppedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.InvokeStoppedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: InvokeStoppedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.InvokeStoppedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.InvokeStoppedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.InvokeStoppedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeTimedOutException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeTimedOutException.html
    new file mode 100644
    index 000000000..38f514e46
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/InvokeTimedOutException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.InvokeTimedOutException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: InvokeTimedOutException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.InvokeTimedOutException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.InvokeTimedOutException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.InvokeTimedOutException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/MapIterationFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/MapIterationFailedException.html
    new file mode 100644
    index 000000000..ae4b0b61a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/MapIterationFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.MapIterationFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: MapIterationFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.MapIterationFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.MapIterationFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.MapIterationFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/NonDeterministicExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/NonDeterministicExecutionException.html
    new file mode 100644
    index 000000000..0f91b20f0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/NonDeterministicExecutionException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.NonDeterministicExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: NonDeterministicExecutionException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.NonDeterministicExecutionException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.NonDeterministicExecutionException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.NonDeterministicExecutionException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/ParallelBranchFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/ParallelBranchFailedException.html
    new file mode 100644
    index 000000000..e4274751e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/ParallelBranchFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.ParallelBranchFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: ParallelBranchFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.ParallelBranchFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.ParallelBranchFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.ParallelBranchFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/SerDesException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/SerDesException.html
    new file mode 100644
    index 000000000..78ed354f4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/SerDesException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.SerDesException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: SerDesException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SerDesException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.SerDesException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.SerDesException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.SerDesException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/StepException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/StepException.html
    new file mode 100644
    index 000000000..c0f1ebe48
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/StepException.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.StepException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: StepException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.StepException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.StepException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a> with parameters of type <a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackSubmitterException.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.exception.StepException)" class="member-name-link">CallbackSubmitterException</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;callbackOp,
    + <a href="../StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a>&nbsp;stepEx)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/StepFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/StepFailedException.html
    new file mode 100644
    index 000000000..34435310f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/StepFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.StepFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: StepFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.StepFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.StepFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.StepFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/StepInterruptedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/StepInterruptedException.html
    new file mode 100644
    index 000000000..4734baf34
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/StepInterruptedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.StepInterruptedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: StepInterruptedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.StepInterruptedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.StepInterruptedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.StepInterruptedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/UnrecoverableDurableExecutionException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/UnrecoverableDurableExecutionException.html
    new file mode 100644
    index 000000000..a15505a5e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/UnrecoverableDurableExecutionException.html
    @@ -0,0 +1,131 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: UnrecoverableDurableExecutionException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<h2>Uses of <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> in <a href="../package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../IllegalDurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">An illegal operation is detected.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../NonDeterministicExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when non-deterministic code is detected during replay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExecutionManager.</span><code><a href="../../execution/ExecutionManager.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution</a><wbr>(<a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Terminates the execution immediately with an unrecoverable error.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution</a><wbr>(<a href="../UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Terminates the execution with the given exception.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/class-use/WaitForConditionFailedException.html b/javadoc/software/amazon/lambda/durable/exception/class-use/WaitForConditionFailedException.html
    new file mode 100644
    index 000000000..e0b28c6bb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/class-use/WaitForConditionFailedException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.exception.WaitForConditionFailedException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception, class: WaitForConditionFailedException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.exception.WaitForConditionFailedException" class="title">Uses of Class<br>software.amazon.lambda.durable.exception.WaitForConditionFailedException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.exception.WaitForConditionFailedException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/package-summary.html b/javadoc/software/amazon/lambda/durable/exception/package-summary.html
    new file mode 100644
    index 000000000..acebfecc7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/package-summary.html
    @@ -0,0 +1,181 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.exception (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.exception">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.exception" class="title">Package software.amazon.lambda.durable.exception</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.exception</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exceptions</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="CallbackException.html" title="class in software.amazon.lambda.durable.exception">CallbackException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="CallbackFailedException.html" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a callback fails due to an error from the external system.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="CallbackSubmitterException.html" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a callback submitter step fails to submit a callback.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="CallbackTimeoutException.html" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a callback times out.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ChildContextFailedException.html" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a child context fails and the original exception cannot be reconstructed.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="DurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Base exception for all durable execution errors.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="DurableOperationException.html" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">An illegal operation is detected.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="InvokeException.html" title="class in software.amazon.lambda.durable.exception">InvokeException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvokeFailedException.html" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a chained invoke operation fails with an error in the invoked function.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="InvokeStoppedException.html" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a chained invoke operation is stopped before completion.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvokeTimedOutException.html" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a chained invoke operation exceeds its timeout.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="MapIterationFailedException.html" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a map iteration fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NonDeterministicExecutionException.html" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when non-deterministic code is detected during replay.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ParallelBranchFailedException.html" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a parallel branch fails and deserialization of the original exception also fails.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when serialization or deserialization fails.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="StepException.html" title="class in software.amazon.lambda.durable.exception">StepException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Base exception for step operation failures.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="StepFailedException.html" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Thrown when a step operation fails after exhausting all retry attempts.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="StepInterruptedException.html" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown when a <code>waitForCondition</code> operation fails.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/package-tree.html b/javadoc/software/amazon/lambda/durable/exception/package-tree.html
    new file mode 100644
    index 000000000..dfdeae47d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/package-tree.html
    @@ -0,0 +1,127 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.exception Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.exception">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.exception</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="DurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableExecutionException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="DurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">DurableOperationException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="CallbackException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="CallbackFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="CallbackSubmitterException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackSubmitterException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="CallbackTimeoutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">CallbackTimeoutException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="ChildContextFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ChildContextFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="InvokeException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="InvokeFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="InvokeStoppedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeStoppedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="InvokeTimedOutException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">InvokeTimedOutException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="MapIterationFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">MapIterationFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="ParallelBranchFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">ParallelBranchFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="StepException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="StepFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepFailedException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="StepInterruptedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">StepInterruptedException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="WaitForConditionFailedException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="SerDesException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">SerDesException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="UnrecoverableDurableExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="IllegalDurableOperationException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">IllegalDurableOperationException</a></li>
    +<li class="circle">software.amazon.lambda.durable.exception.<a href="NonDeterministicExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.exception">NonDeterministicExecutionException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/exception/package-use.html b/javadoc/software/amazon/lambda/durable/exception/package-use.html
    new file mode 100644
    index 000000000..dbabb5272
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/exception/package-use.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.exception (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.exception">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.exception" class="title">Uses of Package<br>software.amazon.lambda.durable.exception</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.exception">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.exception">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.exception</a> used by <a href="package-summary.html">software.amazon.lambda.durable.exception</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/CallbackException.html#software.amazon.lambda.durable.exception">CallbackException</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thrown when a callback operation encounters an error.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableExecutionException.html#software.amazon.lambda.durable.exception">DurableExecutionException</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for all durable execution errors.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableOperationException.html#software.amazon.lambda.durable.exception">DurableOperationException</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception associated with a specific durable operation, carrying the operation and error details.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/InvokeException.html#software.amazon.lambda.durable.exception">InvokeException</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base exception for chained invoke operation failures.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/StepException.html#software.amazon.lambda.durable.exception">StepException</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Base exception for step operation failures.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/UnrecoverableDurableExecutionException.html#software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.exception</a> used by <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/UnrecoverableDurableExecutionException.html#software.amazon.lambda.durable.execution">UnrecoverableDurableExecutionException</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.exception</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/UnrecoverableDurableExecutionException.html#software.amazon.lambda.durable.operation">UnrecoverableDurableExecutionException</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Exception thrown when the execution is not recoverable.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html b/javadoc/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html
    new file mode 100644
    index 000000000..72a3f8557
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ApiRequestDelayedBatcher (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, class: ApiRequestDelayedBatcher">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ApiRequestDelayedBatcher.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Class ApiRequestDelayedBatcher" class="title">Class ApiRequestDelayedBatcher&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - Request type</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ApiRequestDelayedBatcher&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Batches API requests to optimize throughput by grouping individual calls into batch operations. Batches are flushed
    + when full, when size limits are reached, or after a timeout.
    +
    + <p>Uses a dedicated SDK thread pool for internal coordination, keeping checkpoint processing separate from
    + customer-configured executors used for user-defined operations.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><code>InternalExecutor</code></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int,java.util.function.Function,java.util.function.Consumer)" class="member-name-link">ApiRequestDelayedBatcher</a><wbr>(int&nbsp;maxItemCount,
    + int&nbsp;maxBatchBytes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;calculateItemSize,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>&gt;&gt;&nbsp;executeBatch)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new ApiRequestDelayedBatcher with the specified configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int,java.util.function.Function,java.util.function.Consumer)">
    +<h3>ApiRequestDelayedBatcher</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ApiRequestDelayedBatcher</span><wbr><span class="parameters">(int&nbsp;maxItemCount,
    + int&nbsp;maxBatchBytes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;calculateItemSize,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html" title="class or interface in java.util.function" class="external-link">Consumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ApiRequestDelayedBatcher.html" title="type parameter in ApiRequestDelayedBatcher">T</a>&gt;&gt;&nbsp;executeBatch)</span></div>
    +<div class="block">Creates a new ApiRequestDelayedBatcher with the specified configuration.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxItemCount</code> - Maximum number of items per batch</dd>
    +<dd><code>maxBatchBytes</code> - Maximum total size in bytes for all items in a batch</dd>
    +<dd><code>calculateItemSize</code> - Function to calculate the size in bytes of each item</dd>
    +<dd><code>executeBatch</code> - Function to execute the batch action</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/DurableExecutor.html b/javadoc/software/amazon/lambda/durable/execution/DurableExecutor.html
    new file mode 100644
    index 000000000..d7d9b3e2b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/DurableExecutor.html
    @@ -0,0 +1,181 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableExecutor (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, class: DurableExecutor">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableExecutor.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Class DurableExecutor" class="title">Class DurableExecutor</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.DurableExecutor</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableExecutor</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Orchestrates the lifecycle of a durable execution.
    +
    + <p>Handles deserialization of user input, invocation of the user handler within a <a href="../DurableContext.html" title="interface in software.amazon.lambda.durable"><code>DurableContext</code></a>, and
    + production of the <a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model"><code>DurableExecutionOutput</code></a> (success, failure, or pending suspension).</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span>&nbsp;<span class="element-name">execute</span><wbr><span class="parameters">(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)">
    +<h3>wrap</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>
    +<span class="return-type">com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</span>&nbsp;<span class="element-name">wrap</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the type of the input</dd>
    +<dd><code>O</code> - the type of the output</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - the type token for the input</dd>
    +<dd><code>handler</code> - the handler function</dd>
    +<dd><code>config</code> - the durable config</dd>
    +<dt>Returns:</dt>
    +<dd>a request handler that executes the durable function</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/ExecutionManager.html b/javadoc/software/amazon/lambda/durable/execution/ExecutionManager.html
    new file mode 100644
    index 000000000..d6aa36e45
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/ExecutionManager.html
    @@ -0,0 +1,482 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ExecutionManager (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, class: ExecutionManager">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ExecutionManager.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Class ExecutionManager" class="title">Class ExecutionManager</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.ExecutionManager</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ExecutionManager</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></span></div>
    +<div class="block">Central manager for durable execution coordination.
    +
    + <p>Consolidates:
    +
    + <ul>
    +   <li>Execution state (operations, checkpoint token)
    +   <li>Thread lifecycle (registration/deregistration)
    +   <li>Checkpoint batching (via CheckpointManager)
    +   <li>Checkpoint result handling (CheckpointManager callback)
    +   <li>Polling (for waits and retries)
    + </ul>
    +
    + <p>This is the single entry point for all execution coordination. Internal coordination (polling, checkpointing) uses
    + a dedicated SDK thread pool, while user-defined operations run on a customer-configured executor.
    +
    + <p>Operations are keyed by their globally unique operation ID. Child context operations use prefixed IDs (e.g.,
    + "1-1", "1-2") to avoid collisions with root-level operations.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><code>InternalExecutor</code></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">ExecutionManager</a><wbr>(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Shutdown the checkpoint batcher.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deregisterActiveThread(java.lang.String)" class="member-name-link">deregisterActiveThread</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Mark a thread as inactive.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getChildOperations(java.lang.String)" class="member-name-link">getChildOperations</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets all child operations for a given operationId.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the current thread's ThreadContext (threadId and threadType), or null if not set.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDurableExecutionArn()" class="member-name-link">getDurableExecutionArn</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the ARN of the durable execution being managed.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionOperation()" class="member-name-link">getExecutionOperation</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the initial EXECUTION operation from the checkpoint state.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationAndUpdateReplayState(java.lang.String)" class="member-name-link">getOperationAndUpdateReplayState</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets an operation by its globally unique operationId, and updates replay state.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasOperationsForContext(java.lang.String)" class="member-name-link">hasOperationsForContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parentId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Checks whether there are any cached operations for the given parent context ID.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isExecutionCompletedExceptionally()" class="member-name-link">isExecutionCompletedExceptionally</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">returns <code>true</code> if the execution is terminated exceptionally (with a <a href="SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a> or an
    + unrecoverable error).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isReplaying()" class="member-name-link">isReplaying</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns <code>true</code> if the execution is currently replaying completed operations.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isTerminalStatus(software.amazon.awssdk.services.lambda.model.OperationStatus)" class="member-name-link">isTerminalStatus</a><wbr>(software.amazon.awssdk.services.lambda.model.OperationStatus&nbsp;status)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns <code>true</code> if the given status represents a terminal (final) operation state.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollForOperationUpdates(java.lang.String)" class="member-name-link">pollForOperationUpdates</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollForOperationUpdates(java.lang.String,java.time.Instant)" class="member-name-link">pollForOperationUpdates</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;at)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Pools for operation updates at a specific time</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerActiveThread(java.lang.String)" class="member-name-link">registerActiveThread</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Registers a thread as active.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerOperation(software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">registerOperation</a><wbr>(<a href="../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;operation)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Registers an operation so it can receive checkpoint completion notifications.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runUntilCompleteOrSuspend(java.util.concurrent.CompletableFuture)" class="member-name-link">runUntilCompleteOrSuspend</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;T&gt;&nbsp;userFuture)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">return a future that completes when userFuture completes successfully or the execution is terminated or
    + suspended.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate)" class="member-name-link">sendOperationUpdate</a><wbr>(software.amazon.awssdk.services.lambda.model.OperationUpdate&nbsp;update)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setCurrentThreadContext(software.amazon.lambda.durable.execution.ThreadContext)" class="member-name-link">setCurrentThreadContext</a><wbr>(<a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a>&nbsp;threadContext)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sets the current thread's ThreadContext (threadId and threadType).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#suspendExecution()" class="member-name-link">suspendExecution</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Suspends the execution by completing the execution exception future with a <a href="SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution</a><wbr>(<a href="../exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Terminates the execution immediately with an unrecoverable error.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)">
    +<h3>ExecutionManager</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ExecutionManager</span><wbr><span class="parameters">(<a href="../model/DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getDurableExecutionArn()">
    +<h3>getDurableExecutionArn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getDurableExecutionArn</span>()</div>
    +<div class="block">Returns the ARN of the durable execution being managed.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isReplaying()">
    +<h3>isReplaying</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isReplaying</span>()</div>
    +<div class="block">Returns <code>true</code> if the execution is currently replaying completed operations.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="registerOperation(software.amazon.lambda.durable.operation.BaseDurableOperation)">
    +<h3>registerOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">registerOperation</span><wbr><span class="parameters">(<a href="../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;operation)</span></div>
    +<div class="block">Registers an operation so it can receive checkpoint completion notifications.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getChildOperations(java.lang.String)">
    +<h3>getChildOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">getChildOperations</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</span></div>
    +<div class="block">Gets all child operations for a given operationId.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationId</code> - the operationId to get children for</dd>
    +<dt>Returns:</dt>
    +<dd>List of child operations for the given operationId</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationAndUpdateReplayState(java.lang.String)">
    +<h3>getOperationAndUpdateReplayState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">getOperationAndUpdateReplayState</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</span></div>
    +<div class="block">Gets an operation by its globally unique operationId, and updates replay state. Transitions from REPLAY to
    + EXECUTION mode if the operation is not found or is not in a terminal state (still in progress).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationId</code> - the globally unique operation ID (e.g., "1" for root, "1-1" for child context)</dd>
    +<dt>Returns:</dt>
    +<dd>the existing operation, or null if not found (first execution)</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionOperation()">
    +<h3>getExecutionOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">getExecutionOperation</span>()</div>
    +<div class="block">Returns the initial EXECUTION operation from the checkpoint state.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hasOperationsForContext(java.lang.String)">
    +<h3>hasOperationsForContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasOperationsForContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parentId)</span></div>
    +<div class="block">Checks whether there are any cached operations for the given parent context ID. Used to initialize per-context
    + replay state β€” a context starts in replay mode if the ExecutionManager has cached operations belonging to it.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>parentId</code> - the context ID to check (null for root context)</dd>
    +<dt>Returns:</dt>
    +<dd>true if at least one operation exists with the given parentId</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setCurrentThreadContext(software.amazon.lambda.durable.execution.ThreadContext)">
    +<h3>setCurrentThreadContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setCurrentThreadContext</span><wbr><span class="parameters">(<a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a>&nbsp;threadContext)</span></div>
    +<div class="block">Sets the current thread's ThreadContext (threadId and threadType). Called when a user thread is started.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCurrentThreadContext()">
    +<h3>getCurrentThreadContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span>&nbsp;<span class="element-name">getCurrentThreadContext</span>()</div>
    +<div class="block">Returns the current thread's ThreadContext (threadId and threadType), or null if not set.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="registerActiveThread(java.lang.String)">
    +<h3>registerActiveThread</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">registerActiveThread</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</span></div>
    +<div class="block">Registers a thread as active.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution"><code>ThreadContext</code></a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deregisterActiveThread(java.lang.String)">
    +<h3>deregisterActiveThread</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">deregisterActiveThread</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</span></div>
    +<div class="block">Mark a thread as inactive. If no threads remain, suspends the execution.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>threadId</code> - the thread ID to deregister</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate)">
    +<h3>sendOperationUpdate</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp;<span class="element-name">sendOperationUpdate</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.OperationUpdate&nbsp;update)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pollForOperationUpdates(java.lang.String)">
    +<h3>pollForOperationUpdates</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">pollForOperationUpdates</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pollForOperationUpdates(java.lang.String,java.time.Instant)">
    +<h3>pollForOperationUpdates</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">pollForOperationUpdates</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;at)</span></div>
    +<div class="block">Pools for operation updates at a specific time</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationId</code> - the operation id to poll for updates</dd>
    +<dd><code>at</code> - the time to poll for updates</dd>
    +<dt>Returns:</dt>
    +<dd>a completable future that completes with the operation update</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Shutdown the checkpoint batcher.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isTerminalStatus(software.amazon.awssdk.services.lambda.model.OperationStatus)">
    +<h3>isTerminalStatus</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isTerminalStatus</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.OperationStatus&nbsp;status)</span></div>
    +<div class="block">Returns <code>true</code> if the given status represents a terminal (final) operation state.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">
    +<h3>terminateExecution</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">terminateExecution</span><wbr><span class="parameters">(<a href="../exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</span></div>
    +<div class="block">Terminates the execution immediately with an unrecoverable error.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>exception</code> - the unrecoverable exception that caused termination</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="suspendExecution()">
    +<h3>suspendExecution</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">suspendExecution</span>()</div>
    +<div class="block">Suspends the execution by completing the execution exception future with a <a href="SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a>.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isExecutionCompletedExceptionally()">
    +<h3>isExecutionCompletedExceptionally</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isExecutionCompletedExceptionally</span>()</div>
    +<div class="block">returns <code>true</code> if the execution is terminated exceptionally (with a <a href="SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution"><code>SuspendExecutionException</code></a> or an
    + unrecoverable error).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runUntilCompleteOrSuspend(java.util.concurrent.CompletableFuture)">
    +<h3>runUntilCompleteOrSuspend</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">runUntilCompleteOrSuspend</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;T&gt;&nbsp;userFuture)</span></div>
    +<div class="block">return a future that completes when userFuture completes successfully or the execution is terminated or
    + suspended.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>userFuture</code> - user provided function</dd>
    +<dt>Returns:</dt>
    +<dd>a future of userFuture result if userFuture completes successfully, a user exception if userFuture
    +     completes with an exception, a SuspendExecutionException if the execution is suspended, or an
    +     UnrecoverableDurableExecutionException if the execution is terminated.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/OperationIdGenerator.html b/javadoc/software/amazon/lambda/durable/execution/OperationIdGenerator.html
    new file mode 100644
    index 000000000..024ea06a0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/OperationIdGenerator.html
    @@ -0,0 +1,190 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>OperationIdGenerator (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, class: OperationIdGenerator">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/OperationIdGenerator.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Class OperationIdGenerator" class="title">Class OperationIdGenerator</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.OperationIdGenerator</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">OperationIdGenerator</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Generates operation IDs for the durable operations.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">OperationIdGenerator</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#hashOperationId(java.lang.String)" class="member-name-link">hashOperationId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;rawId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Hashes the given string using SHA-256</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nextOperationId()" class="member-name-link">nextOperationId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the next globally unique operation ID.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>OperationIdGenerator</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">OperationIdGenerator</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="hashOperationId(java.lang.String)">
    +<h3>hashOperationId</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">hashOperationId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;rawId)</span></div>
    +<div class="block">Hashes the given string using SHA-256</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>rawId</code> - the string to hash</dd>
    +<dt>Returns:</dt>
    +<dd>the hashed string</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="nextOperationId()">
    +<h3>nextOperationId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">nextOperationId</span>()</div>
    +<div class="block">Returns the next globally unique operation ID. Increments an internal counter, concatenates it with the context
    + ID prefix (<code>contextId + "-" + counter</code>), and SHA-256 hashes the result. For root contexts the prefix is the
    + EXECUTION operation ID; for child contexts it is the parent's hashed context ID. This produces IDs like
    + <code>hash("execId-1")</code>, <code>hash("execId-2")</code> at the root level, and <code>hash("&lt;parentHash&gt;-1")</code>,
    + <code>hash("&lt;parentHash&gt;-2")</code> inside a child context.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/SuspendExecutionException.html b/javadoc/software/amazon/lambda/durable/execution/SuspendExecutionException.html
    new file mode 100644
    index 000000000..638518b32
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/SuspendExecutionException.html
    @@ -0,0 +1,155 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SuspendExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, class: SuspendExecutionException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SuspendExecutionException.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Class SuspendExecutionException" class="title">Class SuspendExecutionException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.SuspendExecutionException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SuspendExecutionException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Exception thrown to suspend execution during wait operations. This is an internal control flow mechanism.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.execution.SuspendExecutionException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SuspendExecutionException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>SuspendExecutionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SuspendExecutionException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/ThreadContext.html b/javadoc/software/amazon/lambda/durable/execution/ThreadContext.html
    new file mode 100644
    index 000000000..af4210c58
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/ThreadContext.html
    @@ -0,0 +1,256 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ThreadContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, record: ThreadContext">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ThreadContext.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Record Class ThreadContext" class="title">Record Class ThreadContext</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.execution.ThreadContext</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">ThreadContext</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId, <a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Holds the current thread's execution context.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">ThreadContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId,
    + <a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>ThreadContext</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#threadId()" class="member-name-link">threadId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>threadId</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#threadType()" class="member-name-link">threadType</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>threadType</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,software.amazon.lambda.durable.execution.ThreadType)">
    +<h3>ThreadContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ThreadContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId,
    + <a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</span></div>
    +<div class="block">Creates an instance of a <code>ThreadContext</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>threadId</code> - the value for the <code>threadId</code> record component</dd>
    +<dd><code>threadType</code> - the value for the <code>threadType</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="threadId()">
    +<h3>threadId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">threadId</span>()</div>
    +<div class="block">Returns the value of the <code>threadId</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>threadId</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="threadType()">
    +<h3>threadType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span>&nbsp;<span class="element-name">threadType</span>()</div>
    +<div class="block">Returns the value of the <code>threadType</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>threadType</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/ThreadType.html b/javadoc/software/amazon/lambda/durable/execution/ThreadType.html
    new file mode 100644
    index 000000000..9fc10e147
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/ThreadType.html
    @@ -0,0 +1,239 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ThreadType (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution, enum: ThreadType">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ThreadType.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<h1 title="Enum Class ThreadType" class="title">Enum Class ThreadType</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.execution.ThreadType</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">ThreadType</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&gt;</span></div>
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.
    +
    + <p>These are not physical OS threads, but logical threads representing different types of work in the execution.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#CONTEXT" class="member-name-link">CONTEXT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#STEP" class="member-name-link">STEP</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>[]</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="CONTEXT">
    +<h3>CONTEXT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span>&nbsp;<span class="element-name">CONTEXT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="STEP">
    +<h3>STEP</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span>&nbsp;<span class="element-name">STEP</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/ApiRequestDelayedBatcher.html b/javadoc/software/amazon/lambda/durable/execution/class-use/ApiRequestDelayedBatcher.html
    new file mode 100644
    index 000000000..8d546649a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/ApiRequestDelayedBatcher.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, class: ApiRequestDelayedBatcher">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ApiRequestDelayedBatcher.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher" class="title">Uses of Class<br>software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.execution.ApiRequestDelayedBatcher</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/DurableExecutor.html b/javadoc/software/amazon/lambda/durable/execution/class-use/DurableExecutor.html
    new file mode 100644
    index 000000000..e8da54d13
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/DurableExecutor.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.execution.DurableExecutor (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, class: DurableExecutor">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableExecutor.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.execution.DurableExecutor" class="title">Uses of Class<br>software.amazon.lambda.durable.execution.DurableExecutor</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.execution.DurableExecutor</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/ExecutionManager.html b/javadoc/software/amazon/lambda/durable/execution/class-use/ExecutionManager.html
    new file mode 100644
    index 000000000..8e699711f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/ExecutionManager.html
    @@ -0,0 +1,143 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.execution.ExecutionManager (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, class: ExecutionManager">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.execution.ExecutionManager" class="title">Uses of Class<br>software.amazon.lambda.durable.execution.ExecutionManager</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseContextImpl.</span><code><a href="../../context/BaseContextImpl.html#getExecutionManager()" class="member-name-link">getExecutionManager</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#createRootContext(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context)" class="member-name-link">createRootContext</a><wbr>(<a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a root context (contextId = null)</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../context/BaseContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">BaseContextImpl</a><wbr>(<a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextName,
    + <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new BaseContext instance.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../../context/StepContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,int)" class="member-name-link">StepContextImpl</a><wbr>(<a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepOperationName,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a new StepContext instance for use in step operations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Fields in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> declared as <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected final <a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#executionManager" class="member-name-link">executionManager</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/OperationIdGenerator.html b/javadoc/software/amazon/lambda/durable/execution/class-use/OperationIdGenerator.html
    new file mode 100644
    index 000000000..da12c8a98
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/OperationIdGenerator.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.execution.OperationIdGenerator (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, class: OperationIdGenerator">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.execution.OperationIdGenerator" class="title">Uses of Class<br>software.amazon.lambda.durable.execution.OperationIdGenerator</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.execution.OperationIdGenerator</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/SuspendExecutionException.html b/javadoc/software/amazon/lambda/durable/execution/class-use/SuspendExecutionException.html
    new file mode 100644
    index 000000000..e4959e08a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/SuspendExecutionException.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.execution.SuspendExecutionException (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, class: SuspendExecutionException">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.execution.SuspendExecutionException" class="title">Uses of Class<br>software.amazon.lambda.durable.execution.SuspendExecutionException</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.execution.SuspendExecutionException</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadContext.html b/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadContext.html
    new file mode 100644
    index 000000000..7ad7d62d9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadContext.html
    @@ -0,0 +1,119 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.execution.ThreadContext (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, record: ThreadContext">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.execution.ThreadContext" class="title">Uses of Record Class<br>software.amazon.lambda.durable.execution.ThreadContext</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a> in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a> that return <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExecutionManager.</span><code><a href="../ExecutionManager.html#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the current thread's ThreadContext (threadId and threadType), or null if not set.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExecutionManager.</span><code><a href="../ExecutionManager.html#setCurrentThreadContext(software.amazon.lambda.durable.execution.ThreadContext)" class="member-name-link">setCurrentThreadContext</a><wbr>(<a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a>&nbsp;threadContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the current thread's ThreadContext (threadId and threadType).</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="../ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the current thread's context from the execution manager.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadType.html b/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadType.html
    new file mode 100644
    index 000000000..343829287
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/class-use/ThreadType.html
    @@ -0,0 +1,153 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.execution.ThreadType (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution, enum: ThreadType">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.execution.ThreadType" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.execution.ThreadType</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with parameters of type <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../context/BaseContextImpl.html#%3Cinit%3E(software.amazon.lambda.durable.execution.ExecutionManager,software.amazon.lambda.durable.DurableConfig,com.amazonaws.services.lambda.runtime.Context,java.lang.String,java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">BaseContextImpl</a><wbr>(<a href="../ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a>&nbsp;executionManager,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;durableConfig,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;contextName,
    + <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new BaseContext instance.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a> in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a> that return <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ThreadContext.</span><code><a href="../ThreadContext.html#threadType()" class="member-name-link">threadType</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <code>threadType</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ThreadType.</span><code><a href="../ThreadType.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>[]</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ThreadType.</span><code><a href="../ThreadType.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ThreadContext.html#%3Cinit%3E(java.lang.String,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">ThreadContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId,
    + <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>ThreadContext</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">runUserHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>&nbsp;runnable,
    + <a href="../ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/package-summary.html b/javadoc/software/amazon/lambda/durable/execution/package-summary.html
    new file mode 100644
    index 000000000..ed5ab5746
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/package-summary.html
    @@ -0,0 +1,131 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.execution (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.execution">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.execution" class="title">Package software.amazon.lambda.durable.execution</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.execution</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button><button id="class-summary-tab5" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab5', 2)" class="table-tab">Exceptions</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ApiRequestDelayedBatcher.html" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Batches API requests to optimize throughput by grouping individual calls into batch operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DurableExecutor.html" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Orchestrates the lifecycle of a durable execution.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Central manager for durable execution coordination.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="OperationIdGenerator.html" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Generates operation IDs for the durable operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="SuspendExecutionException.html" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Exception thrown to suspend execution during wait operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">Holds the current thread's execution context.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab3"><a href="ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab3">
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/package-tree.html b/javadoc/software/amazon/lambda/durable/execution/package-tree.html
    new file mode 100644
    index 000000000..dfb16620d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/package-tree.html
    @@ -0,0 +1,112 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.execution Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.execution">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.execution</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="ApiRequestDelayedBatcher.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ApiRequestDelayedBatcher</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="DurableExecutor.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">DurableExecutor</a></li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="ExecutionManager.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="OperationIdGenerator.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">OperationIdGenerator</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="ThreadContext.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="SuspendExecutionException.html" class="type-name-link" title="class in software.amazon.lambda.durable.execution">SuspendExecutionException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.execution.<a href="ThreadType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/execution/package-use.html b/javadoc/software/amazon/lambda/durable/execution/package-use.html
    new file mode 100644
    index 000000000..e779fd394
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/execution/package-use.html
    @@ -0,0 +1,133 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.execution (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.execution">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.execution" class="title">Uses of Package<br>software.amazon.lambda.durable.execution</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.execution</a> used by <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ExecutionManager.html#software.amazon.lambda.durable.context">ExecutionManager</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Central manager for durable execution coordination.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ThreadType.html#software.amazon.lambda.durable.context">ThreadType</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.execution</a> used by <a href="package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ThreadContext.html#software.amazon.lambda.durable.execution">ThreadContext</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Holds the current thread's execution context.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ThreadType.html#software.amazon.lambda.durable.execution">ThreadType</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.execution</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ExecutionManager.html#software.amazon.lambda.durable.operation">ExecutionManager</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Central manager for durable execution coordination.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ThreadContext.html#software.amazon.lambda.durable.operation">ThreadContext</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Holds the current thread's execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ThreadType.html#software.amazon.lambda.durable.operation">ThreadType</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Thread type enum for tracking conceptual threads in durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/DurableLogger.html b/javadoc/software/amazon/lambda/durable/logging/DurableLogger.html
    new file mode 100644
    index 000000000..0fcafb8fe
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/DurableLogger.html
    @@ -0,0 +1,245 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableLogger (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.logging, class: DurableLogger">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableLogger.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.logging</a></div>
    +<h1 title="Class DurableLogger" class="title">Class DurableLogger</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.logging.DurableLogger</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableLogger</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    + replay.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.slf4j.Logger,software.amazon.lambda.durable.context.BaseContextImpl)" class="member-name-link">DurableLogger</a><wbr>(org.slf4j.Logger&nbsp;delegate,
    + <a href="../context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a>&nbsp;context)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Clears all MDC entries.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#debug(java.lang.String,java.lang.Object...)" class="member-name-link">debug</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error(java.lang.String,java.lang.Object...)" class="member-name-link">error</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error(java.lang.String,java.lang.Throwable)" class="member-name-link">error</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;t)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#info(java.lang.String,java.lang.Object...)" class="member-name-link">info</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#trace(java.lang.String,java.lang.Object...)" class="member-name-link">trace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#warn(java.lang.String,java.lang.Object...)" class="member-name-link">warn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(org.slf4j.Logger,software.amazon.lambda.durable.context.BaseContextImpl)">
    +<h3>DurableLogger</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableLogger</span><wbr><span class="parameters">(org.slf4j.Logger&nbsp;delegate,
    + <a href="../context/BaseContextImpl.html" title="class in software.amazon.lambda.durable.context">BaseContextImpl</a>&nbsp;context)</span></div>
    +<div class="block">Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>delegate</code> - the SLF4J logger to wrap</dd>
    +<dd><code>context</code> - the durable execution context providing MDC values</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Clears all MDC entries. User set MDC entries will also be removed as the thread will not be used anymore.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="trace(java.lang.String,java.lang.Object...)">
    +<h3>trace</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">trace</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="debug(java.lang.String,java.lang.Object...)">
    +<h3>debug</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">debug</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="info(java.lang.String,java.lang.Object...)">
    +<h3>info</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">info</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="warn(java.lang.String,java.lang.Object...)">
    +<h3>warn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">warn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error(java.lang.String,java.lang.Object...)">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">error</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;format,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>...&nbsp;args)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error(java.lang.String,java.lang.Throwable)">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">error</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;t)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/LoggerConfig.html b/javadoc/software/amazon/lambda/durable/logging/LoggerConfig.html
    new file mode 100644
    index 000000000..221d337f4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/LoggerConfig.html
    @@ -0,0 +1,261 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>LoggerConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.logging, record: LoggerConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/LoggerConfig.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.logging</a></div>
    +<h1 title="Record Class LoggerConfig" class="title">Record Class LoggerConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.logging.LoggerConfig</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">LoggerConfig</span>(boolean&nbsp;suppressReplayLogs)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean)" class="member-name-link">LoggerConfig</a><wbr>(boolean&nbsp;suppressReplayLogs)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>LoggerConfig</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#defaults()" class="member-name-link">defaults</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Default configuration: suppress logs during replay.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#suppressReplayLogs()" class="member-name-link">suppressReplayLogs</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>suppressReplayLogs</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#withReplayLogging()" class="member-name-link">withReplayLogging</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Configuration that allows logs during replay.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(boolean)">
    +<h3>LoggerConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LoggerConfig</span><wbr><span class="parameters">(boolean&nbsp;suppressReplayLogs)</span></div>
    +<div class="block">Creates an instance of a <code>LoggerConfig</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>suppressReplayLogs</code> - the value for the <code>suppressReplayLogs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="defaults()">
    +<h3>defaults</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span>&nbsp;<span class="element-name">defaults</span>()</div>
    +<div class="block">Default configuration: suppress logs during replay.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withReplayLogging()">
    +<h3>withReplayLogging</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span>&nbsp;<span class="element-name">withReplayLogging</span>()</div>
    +<div class="block">Configuration that allows logs during replay.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="suppressReplayLogs()">
    +<h3>suppressReplayLogs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">suppressReplayLogs</span>()</div>
    +<div class="block">Returns the value of the <code>suppressReplayLogs</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>suppressReplayLogs</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/class-use/DurableLogger.html b/javadoc/software/amazon/lambda/durable/logging/class-use/DurableLogger.html
    new file mode 100644
    index 000000000..a93b653f0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/class-use/DurableLogger.html
    @@ -0,0 +1,96 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.logging.DurableLogger (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.logging, class: DurableLogger">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.logging.DurableLogger" class="title">Uses of Class<br>software.amazon.lambda.durable.logging.DurableLogger</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> that return <a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseContext.</span><code><a href="../../context/BaseContext.html#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets a logger with additional information of the current execution context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepContextImpl.</span><code><a href="../../context/StepContextImpl.html#getLogger()" class="member-name-link">getLogger</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/class-use/LoggerConfig.html b/javadoc/software/amazon/lambda/durable/logging/class-use/LoggerConfig.html
    new file mode 100644
    index 000000000..096052f85
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/class-use/LoggerConfig.html
    @@ -0,0 +1,124 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.logging.LoggerConfig (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.logging, record: LoggerConfig">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.logging.LoggerConfig" class="title">Uses of Record Class<br>software.amazon.lambda.durable.logging.LoggerConfig</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.logging">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../../DurableConfig.html#getLoggerConfig()" class="member-name-link">getLoggerConfig</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the configured LoggerConfig.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../../DurableConfig.Builder.html#withLoggerConfig(software.amazon.lambda.durable.logging.LoggerConfig)" class="member-name-link">withLoggerConfig</a><wbr>(<a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a>&nbsp;loggerConfig)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom LoggerConfig.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.logging">
    +<h2>Uses of <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a> in <a href="../package-summary.html">software.amazon.lambda.durable.logging</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.logging</a> that return <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LoggerConfig.</span><code><a href="../LoggerConfig.html#defaults()" class="member-name-link">defaults</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default configuration: suppress logs during replay.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LoggerConfig.</span><code><a href="../LoggerConfig.html#withReplayLogging()" class="member-name-link">withReplayLogging</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration that allows logs during replay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/package-summary.html b/javadoc/software/amazon/lambda/durable/logging/package-summary.html
    new file mode 100644
    index 000000000..822b5231f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/package-summary.html
    @@ -0,0 +1,112 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.logging (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.logging">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.logging" class="title">Package software.amazon.lambda.durable.logging</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.logging</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DurableLogger.html" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    + replay.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="LoggerConfig.html" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/package-tree.html b/javadoc/software/amazon/lambda/durable/logging/package-tree.html
    new file mode 100644
    index 000000000..d87620a9f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/package-tree.html
    @@ -0,0 +1,82 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.logging Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.logging">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.logging</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.logging.<a href="DurableLogger.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">DurableLogger</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.logging.<a href="LoggerConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable.logging">LoggerConfig</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/logging/package-use.html b/javadoc/software/amazon/lambda/durable/logging/package-use.html
    new file mode 100644
    index 000000000..1a5f52e95
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/logging/package-use.html
    @@ -0,0 +1,118 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.logging (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.logging">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.logging" class="title">Uses of Package<br>software.amazon.lambda.durable.logging</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.logging</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.logging">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.logging</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/LoggerConfig.html#software.amazon.lambda.durable">LoggerConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.logging</a> used by <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableLogger.html#software.amazon.lambda.durable.context">DurableLogger</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    + replay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.logging">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.logging</a> used by <a href="package-summary.html">software.amazon.lambda.durable.logging</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/LoggerConfig.html#software.amazon.lambda.durable.logging">LoggerConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableLogger behavior.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html b/javadoc/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html
    new file mode 100644
    index 000000000..0166c7efd
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.html
    @@ -0,0 +1,253 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ConcurrencyCompletionStatus (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, enum: ConcurrencyCompletionStatus">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ConcurrencyCompletionStatus.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Enum Class ConcurrencyCompletionStatus" class="title">Enum Class ConcurrencyCompletionStatus</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.model.ConcurrencyCompletionStatus</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">ConcurrencyCompletionStatus</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&gt;</span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#ALL_COMPLETED" class="member-name-link">ALL_COMPLETED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#FAILURE_TOLERANCE_EXCEEDED" class="member-name-link">FAILURE_TOLERANCE_EXCEEDED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#MIN_SUCCESSFUL_REACHED" class="member-name-link">MIN_SUCCESSFUL_REACHED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSucceeded()" class="member-name-link">isSucceeded</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="ALL_COMPLETED">
    +<h3>ALL_COMPLETED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">ALL_COMPLETED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MIN_SUCCESSFUL_REACHED">
    +<h3>MIN_SUCCESSFUL_REACHED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">MIN_SUCCESSFUL_REACHED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="FAILURE_TOLERANCE_EXCEEDED">
    +<h3>FAILURE_TOLERANCE_EXCEEDED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">FAILURE_TOLERANCE_EXCEEDED</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isSucceeded()">
    +<h3>isSucceeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSucceeded</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/DurableExecutionInput.html b/javadoc/software/amazon/lambda/durable/model/DurableExecutionInput.html
    new file mode 100644
    index 000000000..d60cbae5d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/DurableExecutionInput.html
    @@ -0,0 +1,281 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableExecutionInput (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: DurableExecutionInput">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableExecutionInput.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class DurableExecutionInput" class="title">Record Class DurableExecutionInput</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.DurableExecutionInput</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-durableExecutionArn">durableExecutionArn</span></code> - ARN identifying this durable execution</dd>
    +<dd><code><span id="param-checkpointToken">checkpointToken</span></code> - token used to authenticate checkpoint API calls</dd>
    +<dd><code><span id="param-initialExecutionState">initialExecutionState</span></code> - snapshot of operations already completed in previous invocations</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">DurableExecutionInput</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;durableExecutionArn, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken, software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState&nbsp;initialExecutionState)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Input payload received by the Lambda handler from the Durable Functions backend.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState)" class="member-name-link">DurableExecutionInput</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;durableExecutionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState&nbsp;initialExecutionState)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>DurableExecutionInput</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkpointToken()" class="member-name-link">checkpointToken</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-checkpointToken"><code>checkpointToken</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#durableExecutionArn()" class="member-name-link">durableExecutionArn</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-durableExecutionArn"><code>durableExecutionArn</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#initialExecutionState()" class="member-name-link">initialExecutionState</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-initialExecutionState"><code>initialExecutionState</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState)">
    +<h3>DurableExecutionInput</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableExecutionInput</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;durableExecutionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState&nbsp;initialExecutionState)</span></div>
    +<div class="block">Creates an instance of a <code>DurableExecutionInput</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>durableExecutionArn</code> - the value for the <a href="#param-durableExecutionArn"><code>durableExecutionArn</code></a> record component</dd>
    +<dd><code>checkpointToken</code> - the value for the <a href="#param-checkpointToken"><code>checkpointToken</code></a> record component</dd>
    +<dd><code>initialExecutionState</code> - the value for the <a href="#param-initialExecutionState"><code>initialExecutionState</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="durableExecutionArn()">
    +<h3>durableExecutionArn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">durableExecutionArn</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-durableExecutionArn"><code>durableExecutionArn</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-durableExecutionArn"><code>durableExecutionArn</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkpointToken()">
    +<h3>checkpointToken</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">checkpointToken</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-checkpointToken"><code>checkpointToken</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-checkpointToken"><code>checkpointToken</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="initialExecutionState()">
    +<h3>initialExecutionState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState</span>&nbsp;<span class="element-name">initialExecutionState</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-initialExecutionState"><code>initialExecutionState</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-initialExecutionState"><code>initialExecutionState</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/DurableExecutionOutput.html b/javadoc/software/amazon/lambda/durable/model/DurableExecutionOutput.html
    new file mode 100644
    index 000000000..9e52b20f1
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/DurableExecutionOutput.html
    @@ -0,0 +1,317 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableExecutionOutput (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: DurableExecutionOutput">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableExecutionOutput.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class DurableExecutionOutput" class="title">Record Class DurableExecutionOutput</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.DurableExecutionOutput</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-status">status</span></code> - the execution status (SUCCEEDED, FAILED, or PENDING)</dd>
    +<dd><code><span id="param-result">result</span></code> - the serialized result on success, or null otherwise</dd>
    +<dd><code><span id="param-error">error</span></code> - the error details on failure, or null otherwise</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">DurableExecutionOutput</span>(<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result, software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">DurableExecutionOutput</a><wbr>(<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>DurableExecutionOutput</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error()" class="member-name-link">error</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-error"><code>error</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#failure(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failure</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a failed output with the given error details.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#pending()" class="member-name-link">pending</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a pending output indicating the execution was suspended.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#result()" class="member-name-link">result</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-result"><code>result</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#status()" class="member-name-link">status</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-status"><code>status</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#success(java.lang.String)" class="member-name-link">success</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a successful output with the given serialized result.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>DurableExecutionOutput</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableExecutionOutput</span><wbr><span class="parameters">(<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">Creates an instance of a <code>DurableExecutionOutput</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>status</code> - the value for the <a href="#param-status"><code>status</code></a> record component</dd>
    +<dd><code>result</code> - the value for the <a href="#param-result"><code>result</code></a> record component</dd>
    +<dd><code>error</code> - the value for the <a href="#param-error"><code>error</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="success(java.lang.String)">
    +<h3>success</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span>&nbsp;<span class="element-name">success</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +<div class="block">Creates a successful output with the given serialized result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pending()">
    +<h3>pending</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span>&nbsp;<span class="element-name">pending</span>()</div>
    +<div class="block">Creates a pending output indicating the execution was suspended.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failure(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>failure</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span>&nbsp;<span class="element-name">failure</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</span></div>
    +<div class="block">Creates a failed output with the given error details.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="status()">
    +<h3>status</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">status</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-status"><code>status</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-status"><code>status</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="result()">
    +<h3>result</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">result</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-result"><code>result</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-result"><code>result</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error()">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">error</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-error"><code>error</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-error"><code>error</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/ExecutionStatus.html b/javadoc/software/amazon/lambda/durable/model/ExecutionStatus.html
    new file mode 100644
    index 000000000..95db4ec1b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/ExecutionStatus.html
    @@ -0,0 +1,245 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ExecutionStatus (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, enum: ExecutionStatus">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ExecutionStatus.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Enum Class ExecutionStatus" class="title">Enum Class ExecutionStatus</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.model.ExecutionStatus</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">ExecutionStatus</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&gt;</span></div>
    +<div class="block">Terminal status of a durable execution.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#FAILED" class="member-name-link">FAILED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#PENDING" class="member-name-link">PENDING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#SUCCEEDED" class="member-name-link">SUCCEEDED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>[]</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="SUCCEEDED">
    +<h3>SUCCEEDED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">SUCCEEDED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="FAILED">
    +<h3>FAILED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">FAILED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PENDING">
    +<h3>PENDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">PENDING</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/MapResult.MapError.html b/javadoc/software/amazon/lambda/durable/model/MapResult.MapError.html
    new file mode 100644
    index 000000000..17e587b6a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/MapResult.MapError.html
    @@ -0,0 +1,297 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapResult.MapError (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: MapResult, record: MapError">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapResult.MapError.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class MapResult.MapError" class="title">Record Class MapResult.MapError</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.MapResult.MapError</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-errorType">errorType</span></code> - the fully qualified exception class name</dd>
    +<dd><code><span id="param-errorMessage">errorMessage</span></code> - the error message</dd>
    +<dd><code><span id="param-stackTrace">stackTrace</span></code> - the stack trace frames, or null</dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">MapResult.MapError</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorType, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;stackTrace)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Error details for a failed map item.
    +
    + <p>Stores error information as plain strings so that <a href="MapResult.html" title="class in software.amazon.lambda.durable.model"><code>MapResult</code></a> can be serialized through the user's
    + SerDes without requiring AWS SDK-specific Jackson modules.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">MapError</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;stackTrace)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>MapError</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#errorMessage()" class="member-name-link">errorMessage</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-errorMessage"><code>errorMessage</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#errorType()" class="member-name-link">errorType</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-errorType"><code>errorType</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#of(java.lang.Throwable)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;e)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stackTrace()" class="member-name-link">stackTrace</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-stackTrace"><code>stackTrace</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,java.util.List)">
    +<h3>MapError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MapError</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;stackTrace)</span></div>
    +<div class="block">Creates an instance of a <code>MapError</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>errorType</code> - the value for the <a href="#param-errorType"><code>errorType</code></a> record component</dd>
    +<dd><code>errorMessage</code> - the value for the <a href="#param-errorMessage"><code>errorMessage</code></a> record component</dd>
    +<dd><code>stackTrace</code> - the value for the <a href="#param-stackTrace"><code>stackTrace</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="of(java.lang.Throwable)">
    +<h3>of</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span>&nbsp;<span class="element-name">of</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;e)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="errorType()">
    +<h3>errorType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">errorType</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-errorType"><code>errorType</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-errorType"><code>errorType</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="errorMessage()">
    +<h3>errorMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">errorMessage</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-errorMessage"><code>errorMessage</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-errorMessage"><code>errorMessage</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stackTrace()">
    +<h3>stackTrace</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">stackTrace</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-stackTrace"><code>stackTrace</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-stackTrace"><code>stackTrace</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html b/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html
    new file mode 100644
    index 000000000..349fecdf0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.Status.html
    @@ -0,0 +1,236 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapResult.MapResultItem.Status (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: MapResult, record: MapResultItem, enum: Status">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapResult.MapResultItem.Status.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Enum Class MapResult.MapResultItem.Status" class="title">Enum Class MapResult.MapResultItem.Status</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.model.MapResult.MapResultItem.Status</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&gt;</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">MapResult.MapResultItem.Status</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&gt;</span></div>
    +<div class="block">Status of an individual map item.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#FAILED" class="member-name-link">FAILED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#SKIPPED" class="member-name-link">SKIPPED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#SUCCEEDED" class="member-name-link">SUCCEEDED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="SUCCEEDED">
    +<h3>SUCCEEDED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span>&nbsp;<span class="element-name">SUCCEEDED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="FAILED">
    +<h3>FAILED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span>&nbsp;<span class="element-name">FAILED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SKIPPED">
    +<h3>SKIPPED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span>&nbsp;<span class="element-name">SKIPPED</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.html b/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.html
    new file mode 100644
    index 000000000..e7bf746ee
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/MapResult.MapResultItem.html
    @@ -0,0 +1,346 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapResult.MapResultItem (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: MapResult, record: MapResultItem">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapResult.MapResultItem.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class MapResult.MapResultItem" class="title">Record Class MapResult.MapResultItem&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.MapResult.MapResultItem&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-status">status</span></code> - the status of this item</dd>
    +<dd><code><span id="param-result">result</span></code> - the result value, or null if failed/not started</dd>
    +<dd><code><span id="param-error">error</span></code> - the error details, or null if succeeded/not started</dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static record </span><span class="element-name type-name-label">MapResult.MapResultItem&lt;T&gt;</span>(<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&nbsp;status, <a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&nbsp;result, <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Represents the outcome of a single item in a map operation.
    +
    + <p>Each item either succeeds with a result, fails with an error, or was never started. The status field indicates
    + which case applies.
    +
    + <p>Errors are stored as <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model"><code>MapResult.MapError</code></a> (plain strings) rather than raw Throwable, so they survive serialization
    + across checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="MapResult.MapResultItem.Status.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Status of an individual map item.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">MapResultItem</a><wbr>(<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&nbsp;status,
    + <a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&nbsp;result,
    + <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>MapResultItem</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error()" class="member-name-link">error</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-error"><code>error</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#failed(software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">failed</a><wbr>(<a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a failed result item.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#result()" class="member-name-link">result</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-result"><code>result</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#skipped()" class="member-name-link">skipped</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a skipped result item.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#status()" class="member-name-link">status</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-status"><code>status</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#succeeded(T)" class="member-name-link">succeeded</a><wbr>(T&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a successful result item.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)">
    +<h3 id="&lt;init&gt;(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,java.lang.Object,software.amazon.lambda.durable.model.MapResult.MapError)">MapResultItem</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MapResultItem</span><wbr><span class="parameters">(<a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&nbsp;status,
    + <a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&nbsp;result,
    + <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</span></div>
    +<div class="block">Creates an instance of a <code>MapResultItem</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>status</code> - the value for the <a href="#param-status"><code>status</code></a> record component</dd>
    +<dd><code>result</code> - the value for the <a href="#param-result"><code>result</code></a> record component</dd>
    +<dd><code>error</code> - the value for the <a href="#param-error"><code>error</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="succeeded(T)">
    +<h3 id="succeeded(java.lang.Object)">succeeded</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</span>&nbsp;<span class="element-name">succeeded</span><wbr><span class="parameters">(T&nbsp;result)</span></div>
    +<div class="block">Creates a successful result item.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failed(software.amazon.lambda.durable.model.MapResult.MapError)">
    +<h3>failed</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</span>&nbsp;<span class="element-name">failed</span><wbr><span class="parameters">(<a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</span></div>
    +<div class="block">Creates a failed result item.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="skipped()">
    +<h3>skipped</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</span>&nbsp;<span class="element-name">skipped</span>()</div>
    +<div class="block">Creates a skipped result item.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="status()">
    +<h3>status</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span>&nbsp;<span class="element-name">status</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-status"><code>status</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-status"><code>status</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="result()">
    +<h3>result</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a></span>&nbsp;<span class="element-name">result</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-result"><code>result</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-result"><code>result</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error()">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span>&nbsp;<span class="element-name">error</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-error"><code>error</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-error"><code>error</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/MapResult.html b/javadoc/software/amazon/lambda/durable/model/MapResult.html
    new file mode 100644
    index 000000000..dcb24227f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/MapResult.html
    @@ -0,0 +1,395 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: MapResult">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapResult.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class MapResult" class="title">Record Class MapResult&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.MapResult&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type of each item</dd>
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-items">items</span></code> - ordered result items from the map operation</dd>
    +<dd><code><span id="param-completionReason">completionReason</span></code> - why the operation completed</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">MapResult&lt;T&gt;</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;&nbsp;items, <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionReason)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Result container for map operations.
    +
    + <p>Holds ordered results from a map operation. Each index corresponds to the input item at the same position. Each
    + item is represented as a <a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model"><code>MapResult.MapResultItem</code></a> containing its status, result, and error. Includes the
    + <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model"><code>ConcurrencyCompletionStatus</code></a> indicating why the operation completed.
    +
    + <p>Errors are stored as <a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model"><code>MapResult.MapError</code></a> rather than raw Throwable, so they survive serialization across
    + checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="MapResult.MapError.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Error details for a failed map item.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final record&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="MapResult.MapResultItem.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Represents the outcome of a single item in a map operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">MapResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;&nbsp;items,
    + <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionReason)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Compact constructor that applies defensive copy and defaults.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#allSucceeded()" class="member-name-link">allSucceeded</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns true if all items succeeded (no failures or not-started items).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionReason()" class="member-name-link">completionReason</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-completionReason"><code>completionReason</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#empty()" class="member-name-link">empty</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an empty MapResult with no items.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failed()" class="member-name-link">failed</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns errors from items that failed.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getError(int)" class="member-name-link">getError</a><wbr>(int&nbsp;index)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the error at the given index, or null if that item succeeded or was not started.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getItem(int)" class="member-name-link">getItem</a><wbr>(int&nbsp;index)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the result item at the given index.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MapResult.html" title="type parameter in MapResult">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getResult(int)" class="member-name-link">getResult</a><wbr>(int&nbsp;index)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the result at the given index, or null if that item failed or was not started.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#items()" class="member-name-link">items</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-items"><code>items</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#results()" class="member-name-link">results</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all results as an unmodifiable list (nulls for failed/not-started items).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#size()" class="member-name-link">size</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the number of items in this result.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#succeeded()" class="member-name-link">succeeded</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns results from items that succeeded (includes null results from successful items).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">
    +<h3>MapResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MapResult</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;&nbsp;items,
    + <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionReason)</span></div>
    +<div class="block">Compact constructor that applies defensive copy and defaults.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="empty()">
    +<h3>empty</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</span>&nbsp;<span class="element-name">empty</span>()</div>
    +<div class="block">Returns an empty MapResult with no items.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getItem(int)">
    +<h3>getItem</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</span>&nbsp;<span class="element-name">getItem</span><wbr><span class="parameters">(int&nbsp;index)</span></div>
    +<div class="block">Returns the result item at the given index.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getResult(int)">
    +<h3>getResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.html" title="type parameter in MapResult">T</a></span>&nbsp;<span class="element-name">getResult</span><wbr><span class="parameters">(int&nbsp;index)</span></div>
    +<div class="block">Returns the result at the given index, or null if that item failed or was not started.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getError(int)">
    +<h3>getError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span>&nbsp;<span class="element-name">getError</span><wbr><span class="parameters">(int&nbsp;index)</span></div>
    +<div class="block">Returns the error at the given index, or null if that item succeeded or was not started.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="allSucceeded()">
    +<h3>allSucceeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">allSucceeded</span>()</div>
    +<div class="block">Returns true if all items succeeded (no failures or not-started items).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="size()">
    +<h3>size</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">size</span>()</div>
    +<div class="block">Returns the number of items in this result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="results()">
    +<h3>results</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</span>&nbsp;<span class="element-name">results</span>()</div>
    +<div class="block">Returns all results as an unmodifiable list (nulls for failed/not-started items).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="succeeded()">
    +<h3>succeeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;</span>&nbsp;<span class="element-name">succeeded</span>()</div>
    +<div class="block">Returns results from items that succeeded (includes null results from successful items).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failed()">
    +<h3>failed</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&gt;</span>&nbsp;<span class="element-name">failed</span>()</div>
    +<div class="block">Returns errors from items that failed.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="items()">
    +<h3>items</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;</span>&nbsp;<span class="element-name">items</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-items"><code>items</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-items"><code>items</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionReason()">
    +<h3>completionReason</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">completionReason</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-completionReason"><code>completionReason</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-completionReason"><code>completionReason</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/OperationIdentifier.html b/javadoc/software/amazon/lambda/durable/model/OperationIdentifier.html
    new file mode 100644
    index 000000000..0470e91df
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/OperationIdentifier.html
    @@ -0,0 +1,335 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>OperationIdentifier (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: OperationIdentifier">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/OperationIdentifier.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class OperationIdentifier" class="title">Record Class OperationIdentifier</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.OperationIdentifier</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-operationId">operationId</span></code> - unique sequential identifier for the operation within an execution</dd>
    +<dd><code><span id="param-name">name</span></code> - human-readable name for the operation</dd>
    +<dd><code><span id="param-operationType">operationType</span></code> - the kind of operation (STEP, WAIT, CALLBACK, etc.)</dd>
    +<dd><code><span id="param-subType">subType</span></code> - optional sub-type for operations that need further classification (e.g. child contexts)</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">OperationIdentifier</span>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name, software.amazon.awssdk.services.lambda.model.OperationType&nbsp;operationType, <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">OperationIdentifier</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;operationType,
    + <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>OperationIdentifier</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#name()" class="member-name-link">name</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-name"><code>name</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates an identifier without a sub-type.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type,
    + <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates an identifier with a sub-type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#operationId()" class="member-name-link">operationId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-operationId"><code>operationId</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationType</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#operationType()" class="member-name-link">operationType</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-operationType"><code>operationType</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#subType()" class="member-name-link">subType</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-subType"><code>subType</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)">
    +<h3>OperationIdentifier</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">OperationIdentifier</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;operationType,
    + <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</span></div>
    +<div class="block">Creates an instance of a <code>OperationIdentifier</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationId</code> - the value for the <a href="#param-operationId"><code>operationId</code></a> record component</dd>
    +<dd><code>name</code> - the value for the <a href="#param-name"><code>name</code></a> record component</dd>
    +<dd><code>operationType</code> - the value for the <a href="#param-operationType"><code>operationType</code></a> record component</dd>
    +<dd><code>subType</code> - the value for the <a href="#param-subType"><code>subType</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType)">
    +<h3>of</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></span>&nbsp;<span class="element-name">of</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type)</span></div>
    +<div class="block">Creates an identifier without a sub-type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)">
    +<h3>of</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></span>&nbsp;<span class="element-name">of</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type,
    + <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</span></div>
    +<div class="block">Creates an identifier with a sub-type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="operationId()">
    +<h3>operationId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">operationId</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-operationId"><code>operationId</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-operationId"><code>operationId</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="name()">
    +<h3>name</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">name</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-name"><code>name</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-name"><code>name</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="operationType()">
    +<h3>operationType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationType</span>&nbsp;<span class="element-name">operationType</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-operationType"><code>operationType</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-operationType"><code>operationType</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="subType()">
    +<h3>subType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">subType</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-subType"><code>subType</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-subType"><code>subType</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/OperationSubType.html b/javadoc/software/amazon/lambda/durable/model/OperationSubType.html
    new file mode 100644
    index 000000000..e1d47e394
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/OperationSubType.html
    @@ -0,0 +1,292 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>OperationSubType (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, enum: OperationSubType">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/OperationSubType.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Enum Class OperationSubType" class="title">Enum Class OperationSubType</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.model.OperationSubType</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">OperationSubType</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&gt;</span></div>
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.
    +
    + <p>Used as the <code>subType</code> field in checkpoint updates for <code>CONTEXT</code> operations. Matches the
    + <code>OperationSubType</code> enum in the JavaScript and Python durable execution SDKs.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#MAP" class="member-name-link">MAP</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#MAP_ITERATION" class="member-name-link">MAP_ITERATION</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#PARALLEL" class="member-name-link">PARALLEL</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#PARALLEL_BRANCH" class="member-name-link">PARALLEL_BRANCH</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#RUN_IN_CHILD_CONTEXT" class="member-name-link">RUN_IN_CHILD_CONTEXT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#WAIT_FOR_CALLBACK" class="member-name-link">WAIT_FOR_CALLBACK</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#WAIT_FOR_CONDITION" class="member-name-link">WAIT_FOR_CONDITION</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getValue()" class="member-name-link">getValue</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the wire-format string value sent in checkpoint updates.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="RUN_IN_CHILD_CONTEXT">
    +<h3>RUN_IN_CHILD_CONTEXT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">RUN_IN_CHILD_CONTEXT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAP">
    +<h3>MAP</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">MAP</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAP_ITERATION">
    +<h3>MAP_ITERATION</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">MAP_ITERATION</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PARALLEL">
    +<h3>PARALLEL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">PARALLEL</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PARALLEL_BRANCH">
    +<h3>PARALLEL_BRANCH</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">PARALLEL_BRANCH</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WAIT_FOR_CALLBACK">
    +<h3>WAIT_FOR_CALLBACK</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">WAIT_FOR_CALLBACK</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WAIT_FOR_CONDITION">
    +<h3>WAIT_FOR_CONDITION</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">WAIT_FOR_CONDITION</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getValue()">
    +<h3>getValue</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getValue</span>()</div>
    +<div class="block">Returns the wire-format string value sent in checkpoint updates.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/ParallelResult.html b/javadoc/software/amazon/lambda/durable/model/ParallelResult.html
    new file mode 100644
    index 000000000..866b03434
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/ParallelResult.html
    @@ -0,0 +1,297 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: ParallelResult">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelResult.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class ParallelResult" class="title">Record Class ParallelResult</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.ParallelResult</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">ParallelResult</span>(int&nbsp;size, int&nbsp;succeeded, int&nbsp;failed, <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionStatus)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Summary result of a parallel operation.
    +
    + <p>Captures the aggregate outcome of a parallel execution: how many branches were registered, how many succeeded, how
    + many failed, and why the operation completed.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(int,int,int,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">ParallelResult</a><wbr>(int&nbsp;size,
    + int&nbsp;succeeded,
    + int&nbsp;failed,
    + <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionStatus)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>ParallelResult</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completionStatus()" class="member-name-link">completionStatus</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>completionStatus</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failed()" class="member-name-link">failed</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#size()" class="member-name-link">size</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>size</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#succeeded()" class="member-name-link">succeeded</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(int,int,int,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">
    +<h3>ParallelResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelResult</span><wbr><span class="parameters">(int&nbsp;size,
    + int&nbsp;succeeded,
    + int&nbsp;failed,
    + <a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionStatus)</span></div>
    +<div class="block">Creates an instance of a <code>ParallelResult</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>size</code> - the value for the <code>size</code> record component</dd>
    +<dd><code>succeeded</code> - the value for the <code>succeeded</code> record component</dd>
    +<dd><code>failed</code> - the value for the <code>failed</code> record component</dd>
    +<dd><code>completionStatus</code> - the value for the <code>completionStatus</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>; primitive components are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="size()">
    +<h3>size</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">size</span>()</div>
    +<div class="block">Returns the value of the <code>size</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>size</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="succeeded()">
    +<h3>succeeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">succeeded</span>()</div>
    +<div class="block">Returns the value of the <code>succeeded</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>succeeded</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failed()">
    +<h3>failed</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">failed</span>()</div>
    +<div class="block">Returns the value of the <code>failed</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>failed</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionStatus()">
    +<h3>completionStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span>&nbsp;<span class="element-name">completionStatus</span>()</div>
    +<div class="block">Returns the value of the <code>completionStatus</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>completionStatus</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/WaitForConditionResult.html b/javadoc/software/amazon/lambda/durable/model/WaitForConditionResult.html
    new file mode 100644
    index 000000000..93343a689
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/WaitForConditionResult.html
    @@ -0,0 +1,306 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model, record: WaitForConditionResult">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionResult.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<h1 title="Record Class WaitForConditionResult" class="title">Record Class WaitForConditionResult&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.model.WaitForConditionResult&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of the state value</dd>
    +<dt>Record Components:</dt>
    +<dd><code><span id="param-value">value</span></code> - the current state after evaluation</dd>
    +<dd><code><span id="param-isDone">isDone</span></code> - true if the condition is met and polling should stop, false to continue polling</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">WaitForConditionResult&lt;T&gt;</span>(<a href="WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a>&nbsp;value, boolean&nbsp;isDone)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.
    +
    + <p>When <code>isDone</code> is true, polling stops and <code>value</code> becomes the final result. When <code>isDone</code> is
    + false, polling continues using the delay computed by the wait strategy.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(T,boolean)" class="member-name-link">WaitForConditionResult</a><wbr>(<a href="WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a>&nbsp;value,
    + boolean&nbsp;isDone)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>WaitForConditionResult</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#continuePolling(T)" class="member-name-link">continuePolling</a><wbr>(T&nbsp;value)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a result indicating polling should continue with the given state.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDone()" class="member-name-link">isDone</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-isDone"><code>isDone</code></a> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#stopPolling(T)" class="member-name-link">stopPolling</a><wbr>(T&nbsp;value)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a result indicating the condition is met and polling should stop.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#value()" class="member-name-link">value</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <a href="#param-value"><code>value</code></a> record component.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(T,boolean)">
    +<h3 id="&lt;init&gt;(java.lang.Object,boolean)">WaitForConditionResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForConditionResult</span><wbr><span class="parameters">(<a href="WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a>&nbsp;value,
    + boolean&nbsp;isDone)</span></div>
    +<div class="block">Creates an instance of a <code>WaitForConditionResult</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the value for the <a href="#param-value"><code>value</code></a> record component</dd>
    +<dd><code>isDone</code> - the value for the <a href="#param-isDone"><code>isDone</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="stopPolling(T)">
    +<h3 id="stopPolling(java.lang.Object)">stopPolling</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</span>&nbsp;<span class="element-name">stopPolling</span><wbr><span class="parameters">(T&nbsp;value)</span></div>
    +<div class="block">Creates a result indicating the condition is met and polling should stop.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of the state value</dd>
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the final state value</dd>
    +<dt>Returns:</dt>
    +<dd>a WaitForConditionResult with isDone=true</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="continuePolling(T)">
    +<h3 id="continuePolling(java.lang.Object)">continuePolling</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</span>&nbsp;<span class="element-name">continuePolling</span><wbr><span class="parameters">(T&nbsp;value)</span></div>
    +<div class="block">Creates a result indicating polling should continue with the given state.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of the state value</dd>
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the current state value to pass to the next check</dd>
    +<dt>Returns:</dt>
    +<dd>a WaitForConditionResult with isDone=false</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>; primitive components are compared with '=='.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="value()">
    +<h3>value</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionResult.html" title="type parameter in WaitForConditionResult">T</a></span>&nbsp;<span class="element-name">value</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-value"><code>value</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-value"><code>value</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isDone()">
    +<h3>isDone</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDone</span>()</div>
    +<div class="block">Returns the value of the <a href="#param-isDone"><code>isDone</code></a> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <a href="#param-isDone"><code>isDone</code></a> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/ConcurrencyCompletionStatus.html b/javadoc/software/amazon/lambda/durable/model/class-use/ConcurrencyCompletionStatus.html
    new file mode 100644
    index 000000000..e6df9d9cd
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/ConcurrencyCompletionStatus.html
    @@ -0,0 +1,150 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.model.ConcurrencyCompletionStatus (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, enum: ConcurrencyCompletionStatus">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.model.ConcurrencyCompletionStatus" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.model.ConcurrencyCompletionStatus</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#completionReason()" class="member-name-link">completionReason</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/MapResult.html#param-completionReason"><code>completionReason</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ParallelResult.</span><code><a href="../ParallelResult.html#completionStatus()" class="member-name-link">completionStatus</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the value of the <code>completionStatus</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyCompletionStatus.</span><code><a href="../ConcurrencyCompletionStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>[]</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyCompletionStatus.</span><code><a href="../ConcurrencyCompletionStatus.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapResult.html#%3Cinit%3E(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">MapResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="../MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;&nbsp;items,
    + <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionReason)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Compact constructor that applies defensive copy and defaults.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelResult.html#%3Cinit%3E(int,int,int,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">ParallelResult</a><wbr>(int&nbsp;size,
    + int&nbsp;succeeded,
    + int&nbsp;failed,
    + <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionStatus)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an instance of a <code>ParallelResult</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected abstract void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Called when the concurrency operation completes.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected void</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapOperation.</span><code><a href="../../operation/MapOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../../operation/ParallelOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionInput.html b/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionInput.html
    new file mode 100644
    index 000000000..7d61c5fdb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionInput.html
    @@ -0,0 +1,117 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.DurableExecutionInput (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: DurableExecutionInput">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.DurableExecutionInput" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.DurableExecutionInput</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a> in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> that return types with arguments of type <a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../../execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../../execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../execution/ExecutionManager.html#%3Cinit%3E(software.amazon.lambda.durable.model.DurableExecutionInput,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">ExecutionManager</a><wbr>(<a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionOutput.html b/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionOutput.html
    new file mode 100644
    index 000000000..8c4154ba5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/DurableExecutionOutput.html
    @@ -0,0 +1,155 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.DurableExecutionOutput (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: DurableExecutionOutput">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.DurableExecutionOutput" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.DurableExecutionOutput</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a> in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> that return <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../../execution/DurableExecutor.html#execute(software.amazon.lambda.durable.model.DurableExecutionInput,com.amazonaws.services.lambda.runtime.Context,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">execute</a><wbr>(<a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>&nbsp;input,
    + com.amazonaws.services.lambda.runtime.Context&nbsp;lambdaContext,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> that return types with arguments of type <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;com.amazonaws.services.lambda.runtime.RequestHandler&lt;<a href="../DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a>,<wbr><a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutor.</span><code><a href="../../execution/DurableExecutor.html#wrap(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">wrap</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handler,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutionOutput.</span><code><a href="../DurableExecutionOutput.html#failure(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failure</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a failed output with the given error details.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableExecutionOutput.</span><code><a href="../DurableExecutionOutput.html#pending()" class="member-name-link">pending</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a pending output indicating the execution was suspended.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutionOutput.</span><code><a href="../DurableExecutionOutput.html#success(java.lang.String)" class="member-name-link">success</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a successful output with the given serialized result.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a> in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Methods in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a> with parameters of type <a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../../testing/local/LocalMemoryExecutionClient.html#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult</a><wbr>(<a href="../DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Build TestResult from current state.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/ExecutionStatus.html b/javadoc/software/amazon/lambda/durable/model/class-use/ExecutionStatus.html
    new file mode 100644
    index 000000000..c745529bb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/ExecutionStatus.html
    @@ -0,0 +1,152 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.model.ExecutionStatus (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, enum: ExecutionStatus">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.model.ExecutionStatus" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.model.ExecutionStatus</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableExecutionOutput.</span><code><a href="../DurableExecutionOutput.html#status()" class="member-name-link">status</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/DurableExecutionOutput.html#param-status"><code>status</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ExecutionStatus.</span><code><a href="../ExecutionStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>[]</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExecutionStatus.</span><code><a href="../ExecutionStatus.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../DurableExecutionOutput.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">DurableExecutionOutput</a><wbr>(<a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>DurableExecutionOutput</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a> in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../../testing/AsyncExecution.html#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Get current execution status.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">TestResult.</span><code><a href="../../testing/TestResult.html#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the execution status (SUCCEEDED, FAILED, or PENDING).</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../testing/TestResult.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult</a><wbr>(<a href="../ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../testing/TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapError.html b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapError.html
    new file mode 100644
    index 000000000..6c9d0e86c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapError.html
    @@ -0,0 +1,133 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.MapResult.MapError (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: MapResult, record: MapError">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.MapResult.MapError" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.MapResult.MapError</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#error()" class="member-name-link">error</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/MapResult.MapResultItem.html#param-error"><code>error</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#getError(int)" class="member-name-link">getError</a><wbr>(int&nbsp;index)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the error at the given index, or null if that item succeeded or was not started.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapError.</span><code><a href="../MapResult.MapError.html#of(java.lang.Throwable)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;e)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return types with arguments of type <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#failed()" class="member-name-link">failed</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns errors from items that failed.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#failed(software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">failed</a><wbr>(<a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a failed result item.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapResult.MapResultItem.html#%3Cinit%3E(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">MapResultItem</a><wbr>(<a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&nbsp;status,
    + <a href="../MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&nbsp;result,
    + <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>MapResultItem</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.Status.html b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.Status.html
    new file mode 100644
    index 000000000..f598c6933
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.Status.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.model.MapResult.MapResultItem.Status (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: MapResult, record: MapResultItem, enum: Status">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.model.MapResult.MapResultItem.Status" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.model.MapResult.MapResultItem.Status</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#status()" class="member-name-link">status</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/MapResult.MapResultItem.html#param-status"><code>status</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapResult.MapResultItem.Status.</span><code><a href="../MapResult.MapResultItem.Status.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>[]</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.Status.</span><code><a href="../MapResult.MapResultItem.Status.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapResult.MapResultItem.html#%3Cinit%3E(software.amazon.lambda.durable.model.MapResult.MapResultItem.Status,T,software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">MapResultItem</a><wbr>(<a href="../MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a>&nbsp;status,
    + <a href="../MapResult.MapResultItem.html" title="type parameter in MapResult.MapResultItem">T</a>&nbsp;result,
    + <a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>MapResultItem</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.html b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.html
    new file mode 100644
    index 000000000..32e705327
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.MapResultItem.html
    @@ -0,0 +1,128 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.MapResult.MapResultItem (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: MapResult, record: MapResultItem">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.MapResult.MapResultItem" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.MapResult.MapResultItem</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#failed(software.amazon.lambda.durable.model.MapResult.MapError)" class="member-name-link">failed</a><wbr>(<a href="../MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a>&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a failed result item.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="../MapResult.html" title="type parameter in MapResult">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#getItem(int)" class="member-name-link">getItem</a><wbr>(int&nbsp;index)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the result item at the given index.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#skipped()" class="member-name-link">skipped</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a skipped result item.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;T&gt;&nbsp;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapResult.MapResultItem.</span><code><a href="../MapResult.MapResultItem.html#succeeded(T)" class="member-name-link">succeeded</a><wbr>(T&nbsp;result)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a successful result item.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return types with arguments of type <a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="../MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#items()" class="member-name-link">items</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/MapResult.html#param-items"><code>items</code></a> record component.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructor parameters in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with type arguments of type <a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapResult.html#%3Cinit%3E(java.util.List,software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">MapResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;<a href="../MapResult.html" title="type parameter in MapResult">T</a>&gt;&gt;&nbsp;items,
    + <a href="../ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;completionReason)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Compact constructor that applies defensive copy and defaults.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.html b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.html
    new file mode 100644
    index 000000000..440552156
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/MapResult.html
    @@ -0,0 +1,206 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.MapResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: MapResult">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.MapResult" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.MapResult</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#map(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">map</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return types with arguments of type <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,java.lang.Class,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>default &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Methods in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> that return types with arguments of type <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;I,<wbr>
    +O&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#mapAsync(java.lang.String,java.util.Collection,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.config.MapConfig)" class="member-name-link">mapAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;I&gt;&nbsp;items,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;&nbsp;function,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapResult.</span><code><a href="../MapResult.html#empty()" class="member-name-link">empty</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an empty MapResult with no items.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">MapOperation.</span><code><a href="../../operation/MapOperation.html#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/OperationIdentifier.html b/javadoc/software/amazon/lambda/durable/model/class-use/OperationIdentifier.html
    new file mode 100644
    index 000000000..2a15bc02a
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/OperationIdentifier.html
    @@ -0,0 +1,199 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.OperationIdentifier (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: OperationIdentifier">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.OperationIdentifier" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.OperationIdentifier</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationIdentifier.</span><code><a href="../OperationIdentifier.html#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an identifier without a sub-type.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">OperationIdentifier.</span><code><a href="../OperationIdentifier.html#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type,
    + <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an identifier with a sub-type.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/BaseDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">BaseDurableOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/CallbackOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ConcurrencyOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/InvokeOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/MapOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ParallelOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/StepOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/WaitOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitOperation</a><wbr>(<a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/OperationSubType.html b/javadoc/software/amazon/lambda/durable/model/class-use/OperationSubType.html
    new file mode 100644
    index 000000000..61be72d19
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/OperationSubType.html
    @@ -0,0 +1,173 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.model.OperationSubType (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, enum: OperationSubType">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.model.OperationSubType" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.model.OperationSubType</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationIdentifier.</span><code><a href="../OperationIdentifier.html#subType()" class="member-name-link">subType</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the value of the <a href="../../../../../../software/amazon/lambda/durable/model/OperationIdentifier.html#param-subType"><code>subType</code></a> record component.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">OperationSubType.</span><code><a href="../OperationSubType.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>[]</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationSubType.</span><code><a href="../OperationSubType.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationIdentifier.</span><code><a href="../OperationIdentifier.html#of(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">of</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;type,
    + <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an identifier with a sub-type.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> with parameters of type <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../OperationIdentifier.html#%3Cinit%3E(java.lang.String,java.lang.String,software.amazon.awssdk.services.lambda.model.OperationType,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">OperationIdentifier</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.OperationType&nbsp;operationType,
    + <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;subType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>OperationIdentifier</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../../operation/BaseDurableOperation.html#getSubType()" class="member-name-link">getSubType</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the operation sub-type (e.g.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/ParallelResult.html b/javadoc/software/amazon/lambda/durable/model/class-use/ParallelResult.html
    new file mode 100644
    index 000000000..71e16fb83
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/ParallelResult.html
    @@ -0,0 +1,88 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.ParallelResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: ParallelResult">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelResult.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.ParallelResult" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.ParallelResult</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelOperation.</span><code><a href="../../operation/ParallelOperation.html#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/class-use/WaitForConditionResult.html b/javadoc/software/amazon/lambda/durable/model/class-use/WaitForConditionResult.html
    new file mode 100644
    index 000000000..9a70f10be
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/class-use/WaitForConditionResult.html
    @@ -0,0 +1,210 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.model.WaitForConditionResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model, record: WaitForConditionResult">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.model.WaitForConditionResult" class="title">Uses of Record Class<br>software.amazon.lambda.durable.model.WaitForConditionResult</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with type arguments of type <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a custom configuration, blocking until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>, blocking until complete.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForCondition(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForCondition</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom configuration, blocking
    + until complete.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>default &lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">DurableContext.</span><code><a href="../../DurableContext.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Asynchronously polls a condition function until it signals done, using a <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a> and custom
    + configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<h2>Uses of <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a> in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a></h2>
    +<div class="caption"><span>Method parameters in <a href="../../context/package-summary.html">software.amazon.lambda.durable.context</a> with type arguments of type <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;T&gt;&nbsp;<a href="../../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableContextImpl.</span><code><a href="../../context/DurableContextImpl.html#waitForConditionAsync(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.config.WaitForConditionConfig)" class="member-name-link">waitForConditionAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;T,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;&gt;&nbsp;checkFunc,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;T&gt;&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<h2>Uses of <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a> in <a href="../package-summary.html">software.amazon.lambda.durable.model</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.model</a> that return <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionResult.</span><code><a href="../WaitForConditionResult.html#continuePolling(T)" class="member-name-link">continuePolling</a><wbr>(T&nbsp;value)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a result indicating polling should continue with the given state.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionResult.</span><code><a href="../WaitForConditionResult.html#stopPolling(T)" class="member-name-link">stopPolling</a><wbr>(T&nbsp;value)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a result indicating the condition is met and polling should stop.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Constructor parameters in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with type arguments of type <a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/WaitForConditionOperation.html#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="../../operation/WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/package-summary.html b/javadoc/software/amazon/lambda/durable/model/package-summary.html
    new file mode 100644
    index 000000000..a902a612c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/package-summary.html
    @@ -0,0 +1,149 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.model (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.model">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.model" class="title">Package software.amazon.lambda.durable.model</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.model</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab3"><a href="ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab3">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="DurableExecutionInput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">Input payload received by the Lambda handler from the Durable Functions backend.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Terminal status of a durable execution.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="MapResult.MapError.html" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">Error details for a failed map item.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="MapResult.MapResultItem.html" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Represents the outcome of a single item in a map operation.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="MapResult.MapResultItem.Status.html" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Status of an individual map item.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab4">
    +<div class="block">Summary result of a parallel operation.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/package-tree.html b/javadoc/software/amazon/lambda/durable/model/package-tree.html
    new file mode 100644
    index 000000000..a41188d97
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/package-tree.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.model Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.model">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.model</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="DurableExecutionInput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionInput</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="DurableExecutionOutput.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="MapResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="MapResult.MapError.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapError</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="MapResult.MapResultItem.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">MapResult.MapResultItem</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="OperationIdentifier.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="ParallelResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">ParallelResult</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="WaitForConditionResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="ConcurrencyCompletionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="ExecutionStatus.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="MapResult.MapResultItem.Status.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></li>
    +<li class="circle">software.amazon.lambda.durable.model.<a href="OperationSubType.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/model/package-use.html b/javadoc/software/amazon/lambda/durable/model/package-use.html
    new file mode 100644
    index 000000000..9eecb4b42
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/model/package-use.html
    @@ -0,0 +1,241 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.model (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.model">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.model" class="title">Uses of Package<br>software.amazon.lambda.durable.model</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.model</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.model">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/MapResult.html#software.amazon.lambda.durable">MapResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionResult.html#software.amazon.lambda.durable">WaitForConditionResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../context/package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/MapResult.html#software.amazon.lambda.durable.context">MapResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionResult.html#software.amazon.lambda.durable.context">WaitForConditionResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableExecutionInput.html#software.amazon.lambda.durable.execution">DurableExecutionInput</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Input payload received by the Lambda handler from the Durable Functions backend.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableExecutionOutput.html#software.amazon.lambda.durable.execution">DurableExecutionOutput</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.model">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="package-summary.html">software.amazon.lambda.durable.model</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ConcurrencyCompletionStatus.html#software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableExecutionOutput.html#software.amazon.lambda.durable.model">DurableExecutionOutput</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ExecutionStatus.html#software.amazon.lambda.durable.model">ExecutionStatus</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Terminal status of a durable execution.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/MapResult.html#software.amazon.lambda.durable.model">MapResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapResult.MapError.html#software.amazon.lambda.durable.model">MapResult.MapError</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Error details for a failed map item.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/MapResult.MapResultItem.html#software.amazon.lambda.durable.model">MapResult.MapResultItem</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Represents the outcome of a single item in a map operation.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/MapResult.MapResultItem.Status.html#software.amazon.lambda.durable.model">MapResult.MapResultItem.Status</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Status of an individual map item.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/OperationIdentifier.html#software.amazon.lambda.durable.model">OperationIdentifier</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/OperationSubType.html#software.amazon.lambda.durable.model">OperationSubType</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionResult.html#software.amazon.lambda.durable.model">WaitForConditionResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ConcurrencyCompletionStatus.html#software.amazon.lambda.durable.operation">ConcurrencyCompletionStatus</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/MapResult.html#software.amazon.lambda.durable.operation">MapResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result container for map operations.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/OperationIdentifier.html#software.amazon.lambda.durable.operation">OperationIdentifier</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/OperationSubType.html#software.amazon.lambda.durable.operation">OperationSubType</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Fine-grained classification of durable operations beyond the basic operation types.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelResult.html#software.amazon.lambda.durable.operation">ParallelResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Summary result of a parallel operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionResult.html#software.amazon.lambda.durable.operation">WaitForConditionResult</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Result returned by a WaitForCondition check function to signal whether the condition is met.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/ExecutionStatus.html#software.amazon.lambda.durable.testing">ExecutionStatus</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Terminal status of a durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.model</a> used by <a href="../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableExecutionOutput.html#software.amazon.lambda.durable.testing.local">DurableExecutionOutput</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Output payload returned by the Lambda handler to the Durable Functions backend.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/BaseDurableOperation.html b/javadoc/software/amazon/lambda/durable/operation/BaseDurableOperation.html
    new file mode 100644
    index 000000000..1d98828f2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/BaseDurableOperation.html
    @@ -0,0 +1,589 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>BaseDurableOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: BaseDurableOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/BaseDurableOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class BaseDurableOperation" class="title">Class BaseDurableOperation</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.operation.BaseDurableOperation</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></code>, <code><a href="WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">BaseDurableOperation</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).
    +
    + <p>Key methods:
    +
    + <ul>
    +   <li><code>execute()</code> starts the operation (returns immediately)
    +   <li><code>get()</code> blocks until complete and returns the result
    + </ul>
    +
    + <p>The separation allows:
    +
    + <ul>
    +   <li>Starting multiple async operations quickly
    +   <li>Blocking on results later when needed
    +   <li>Proper thread coordination via future
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#completionFuture" class="member-name-link">completionFuture</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>protected final <a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#executionManager" class="member-name-link">executionManager</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected final <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#parentOperation" class="member-name-link">parentOperation</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">BaseDurableOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#execute()" class="member-name-link">execute</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation by checking for an existing checkpoint.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getChildOperations()" class="member-name-link">getChildOperations</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the direct child Operations of this context operation</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCompletionFuture()" class="member-name-link">getCompletionFuture</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getContext()" class="member-name-link">getContext</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the parent context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCurrentThreadContext()" class="member-name-link">getCurrentThreadContext</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the current thread's context from the execution manager.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">getName</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the operation name (may be null).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation()" class="member-name-link">getOperation</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the Operation from ExecutionManager and update the replay state from REPLAY to EXECUTE if operation is not
    + found.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationId()" class="member-name-link">getOperationId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the unique identifier for this operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRunningUserHandler()" class="member-name-link">getRunningUserHandler</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSubType()" class="member-name-link">getSubType</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the operation sub-type (e.g.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationType</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getType()" class="member-name-link">getType</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Gets the operation type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isOperationCompleted()" class="member-name-link">isOperationCompleted</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns true if this operation has completed (successfully or exceptionally).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#markAlreadyCompleted()" class="member-name-link">markAlreadyCompleted</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Marks the operation as already completed (in replay).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">onCheckpointComplete</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Receives operation updates from ExecutionManager.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollForOperationUpdates()" class="member-name-link">pollForOperationUpdates</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Polls the backend for updates to this operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollForOperationUpdates(java.time.Instant)" class="member-name-link">pollForOperationUpdates</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;at)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Polls the backend for updates to this operation at a specific time.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerActiveThread(java.lang.String)" class="member-name-link">registerActiveThread</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Registers a thread as active in the execution manager.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>protected abstract void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)" class="member-name-link">runUserHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>&nbsp;runnable,
    + <a href="../execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)" class="member-name-link">sendOperationUpdate</a><wbr>(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder&nbsp;builder)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sends an operation update synchronously (blocks until the update is acknowledged).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)" class="member-name-link">sendOperationUpdateAsync</a><wbr>(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder&nbsp;builder)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sends an operation update asynchronously.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>protected abstract void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)" class="member-name-link">terminateExecution</a><wbr>(<a href="../exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Terminates the execution with the given exception.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateExecutionWithIllegalDurableOperationException(java.lang.String)" class="member-name-link">terminateExecutionWithIllegalDurableOperationException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Terminates the execution with an <a href="../exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception"><code>IllegalDurableOperationException</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">validateReplay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;checkpointed)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Validates that current operation matches checkpointed operation during replay.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForOperationCompletion()" class="member-name-link">waitForOperationCompletion</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Waits for the operation to complete.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="executionManager">
    +<h3>executionManager</h3>
    +<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="../execution/ExecutionManager.html" title="class in software.amazon.lambda.durable.execution">ExecutionManager</a></span>&nbsp;<span class="element-name">executionManager</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completionFuture">
    +<h3>completionFuture</h3>
    +<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</span>&nbsp;<span class="element-name">completionFuture</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="parentOperation">
    +<h3>parentOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span>&nbsp;<span class="element-name">parentOperation</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)">
    +<h3>BaseDurableOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">BaseDurableOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</span></div>
    +<div class="block">Constructs a new durable operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationIdentifier</code> - the unique identifier for this operation</dd>
    +<dd><code>durableContext</code> - the parent context this operation belongs to</dd>
    +<dd><code>parentOperation</code> - the parent operation if this is a branch/iteration of a ConcurrencyOperation</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getCompletionFuture()">
    +<h3>getCompletionFuture</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</span>&nbsp;<span class="element-name">getCompletionFuture</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSubType()">
    +<h3>getSubType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a></span>&nbsp;<span class="element-name">getSubType</span>()</div>
    +<div class="block">Gets the operation sub-type (e.g. RUN_IN_CHILD_CONTEXT, WAIT_FOR_CALLBACK).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationId()">
    +<h3>getOperationId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getOperationId</span>()</div>
    +<div class="block">Gets the unique identifier for this operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getName()">
    +<h3>getName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getName</span>()</div>
    +<div class="block">Gets the operation name (may be null).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContext()">
    +<h3>getContext</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a></span>&nbsp;<span class="element-name">getContext</span>()</div>
    +<div class="block">Gets the parent context.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getType()">
    +<h3>getType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationType</span>&nbsp;<span class="element-name">getType</span>()</div>
    +<div class="block">Gets the operation type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="execute()">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">execute</span>()</div>
    +<div class="block">Starts the operation by checking for an existing checkpoint. If a checkpoint exists, validates and replays it;
    + otherwise starts fresh execution.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation()">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">getOperation</span>()</div>
    +<div class="block">Gets the Operation from ExecutionManager and update the replay state from REPLAY to EXECUTE if operation is not
    + found. Operation IDs are globally unique (prefixed for child contexts), so no parentId is needed for lookups.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the operation if found, otherwise null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getChildOperations()">
    +<h3>getChildOperations</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">getChildOperations</span>()</div>
    +<div class="block">Gets the direct child Operations of this context operation</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>list of the child Operations</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isOperationCompleted()">
    +<h3>isOperationCompleted</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isOperationCompleted</span>()</div>
    +<div class="block">Returns true if this operation has completed (successfully or exceptionally).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitForOperationCompletion()">
    +<h3>waitForOperationCompletion</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">waitForOperationCompletion</span>()</div>
    +<div class="block">Waits for the operation to complete. Deregisters the current thread to allow Lambda suspension if the operation
    + is still in progress, then re-registers when the operation completes.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the completed operation</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">
    +<h3>runUserHandler</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">runUserHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>&nbsp;runnable,
    + <a href="../execution/ThreadType.html" title="enum class in software.amazon.lambda.durable.execution">ThreadType</a>&nbsp;threadType)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>onCheckpointComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onCheckpointComplete</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation)</span></div>
    +<div class="block">Receives operation updates from ExecutionManager. Completes the internal future when the operation reaches a
    + terminal status, unblocking any threads waiting on this operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operation</code> - the updated operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="markAlreadyCompleted()">
    +<h3>markAlreadyCompleted</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">markAlreadyCompleted</span>()</div>
    +<div class="block">Marks the operation as already completed (in replay).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">
    +<h3>terminateExecution</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span>&nbsp;<span class="element-name">terminateExecution</span><wbr><span class="parameters">(<a href="../exception/UnrecoverableDurableExecutionException.html" title="class in software.amazon.lambda.durable.exception">UnrecoverableDurableExecutionException</a>&nbsp;exception)</span></div>
    +<div class="block">Terminates the execution with the given exception.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>exception</code> - the unrecoverable exception</dd>
    +<dt>Returns:</dt>
    +<dd>never returns normally; always throws</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateExecutionWithIllegalDurableOperationException(java.lang.String)">
    +<h3>terminateExecutionWithIllegalDurableOperationException</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span>&nbsp;<span class="element-name">terminateExecutionWithIllegalDurableOperationException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;message)</span></div>
    +<div class="block">Terminates the execution with an <a href="../exception/IllegalDurableOperationException.html" title="class in software.amazon.lambda.durable.exception"><code>IllegalDurableOperationException</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - the error message</dd>
    +<dt>Returns:</dt>
    +<dd>never returns normally; always throws</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="registerActiveThread(java.lang.String)">
    +<h3>registerActiveThread</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">registerActiveThread</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;threadId)</span></div>
    +<div class="block">Registers a thread as active in the execution manager.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>threadId</code> - the thread identifier to register</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCurrentThreadContext()">
    +<h3>getCurrentThreadContext</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../execution/ThreadContext.html" title="class in software.amazon.lambda.durable.execution">ThreadContext</a></span>&nbsp;<span class="element-name">getCurrentThreadContext</span>()</div>
    +<div class="block">Returns the current thread's context from the execution manager.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pollForOperationUpdates()">
    +<h3>pollForOperationUpdates</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">pollForOperationUpdates</span>()</div>
    +<div class="block">Polls the backend for updates to this operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pollForOperationUpdates(java.time.Instant)">
    +<h3>pollForOperationUpdates</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">pollForOperationUpdates</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;at)</span></div>
    +<div class="block">Polls the backend for updates to this operation at a specific time.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>at</code> - the time to poll for updates</dd>
    +<dt>Returns:</dt>
    +<dd>a future that completes with the updated operation</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">
    +<h3>sendOperationUpdate</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendOperationUpdate</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder&nbsp;builder)</span></div>
    +<div class="block">Sends an operation update synchronously (blocks until the update is acknowledged).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">
    +<h3>sendOperationUpdateAsync</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp;<span class="element-name">sendOperationUpdateAsync</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder&nbsp;builder)</span></div>
    +<div class="block">Sends an operation update asynchronously.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>validateReplay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateReplay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;checkpointed)</span></div>
    +<div class="block">Validates that current operation matches checkpointed operation during replay.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getRunningUserHandler()">
    +<h3>getRunningUserHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp;<span class="element-name">getRunningUserHandler</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/CallbackOperation.html b/javadoc/software/amazon/lambda/durable/operation/CallbackOperation.html
    new file mode 100644
    index 000000000..0728f0f6d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/CallbackOperation.html
    @@ -0,0 +1,265 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CallbackOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: CallbackOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CallbackOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class CallbackOperation" class="title">Class CallbackOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.CallbackOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</code>, <code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CallbackOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;
    +implements <a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</span></div>
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">CallbackOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#callbackId()" class="member-name-link">callbackId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the unique identifier for this callback.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.CallbackConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>CallbackOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallbackOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/CallbackConfig.html" title="class in software.amazon.lambda.durable.config">CallbackConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="callbackId()">
    +<h3>callbackId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">callbackId</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableCallbackFuture.html#callbackId()">DurableCallbackFuture</a></code></span></div>
    +<div class="block">Returns the unique identifier for this callback.
    +
    + <p>External systems use this ID to send callback results back to the durable execution.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableCallbackFuture.html#callbackId()">callbackId</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;<a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the callback ID</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="CallbackOperation.html" title="type parameter in CallbackOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/ChildContextOperation.html b/javadoc/software/amazon/lambda/durable/operation/ChildContextOperation.html
    new file mode 100644
    index 000000000..16c544265
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/ChildContextOperation.html
    @@ -0,0 +1,270 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ChildContextOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: ChildContextOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ChildContextOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class ChildContextOperation" class="title">Class ChildContextOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.ChildContextOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ChildContextOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</span></div>
    +<div class="block">Manages the lifecycle of a child execution context.
    +
    + <p>A child context runs a user function in a separate thread with its own operation counter and checkpoint log.
    + Operations within the child context use the child's context ID as their parentId.
    +
    + <p>When created as part of a <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation"><code>ConcurrencyOperation</code></a> (e.g., parallel execution), the child notifies its parent
    + on completion via <code>onItemComplete()</code> BEFORE closing its own child context. It also skips checkpointing if the
    + parent operation has already succeeded.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>ChildContextOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChildContextOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)">
    +<h3>ChildContextOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChildContextOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/ConcurrencyOperation.html b/javadoc/software/amazon/lambda/durable/operation/ConcurrencyOperation.html
    new file mode 100644
    index 000000000..17c062b05
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/ConcurrencyOperation.html
    @@ -0,0 +1,342 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ConcurrencyOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: ConcurrencyOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ConcurrencyOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class ConcurrencyOperation" class="title">Class ConcurrencyOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.ConcurrencyOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type of this operation</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a></code>, <code><a href="ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">ConcurrencyOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</span></div>
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.
    +
    + <p>Encapsulates shared concurrency logic: queue-based concurrency control, success/failure counting, and completion
    + checking. Both <code>ParallelOperation</code> and <code>MapOperation</code> extend this base.
    +
    + <p>Key design points:
    +
    + <ul>
    +   <li>Does NOT register its own thread β€” child context threads handle all suspension
    +   <li>Uses a pending queue + running counter for concurrency control
    +   <li>Completion is determined by subclass-specific logic via abstract <code>canComplete()</code> and
    +       <code>validateItemCount()</code>
    +   <li>When a child suspends, the running count is NOT decremented
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/atomic/AtomicBoolean.html" title="class or interface in java.util.concurrent.atomic" class="external-link">AtomicBoolean</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#isJoined" class="member-name-link">isJoined</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected &lt;R&gt;&nbsp;<a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected &lt;R&gt;&nbsp;<a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#executeItems()" class="member-name-link">executeItems</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts execution of all enqueued items.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;?&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBranches()" class="member-name-link">getBranches</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>protected abstract void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Called when the concurrency operation completes.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#join()" class="member-name-link">join</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks the calling thread until the concurrency operation reaches a terminal state.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#get()">get</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#start()">start</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isJoined">
    +<h3>isJoined</h3>
    +<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/atomic/AtomicBoolean.html" title="class or interface in java.util.concurrent.atomic" class="external-link">AtomicBoolean</a></span>&nbsp;<span class="element-name">isJoined</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)">
    +<h3>ConcurrencyOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">ConcurrencyOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>createItem</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="type-parameters">&lt;R&gt;</span>&nbsp;<span class="return-type"><a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</span>&nbsp;<span class="element-name">createItem</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</span></div>
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>R</code> - the result type of the child operation</dd>
    +<dt>Parameters:</dt>
    +<dd><code>operationId</code> - the unique operation ID for this item</dd>
    +<dd><code>name</code> - the name of this item</dd>
    +<dd><code>function</code> - the user function to execute</dd>
    +<dd><code>resultType</code> - the result type token</dd>
    +<dd><code>branchSubType</code> - the sub-type of the branch operation</dd>
    +<dd><code>parentContext</code> - the parent durable context</dd>
    +<dt>Returns:</dt>
    +<dd>a new ChildContextOperation</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">
    +<h3>handleCompletion</h3>
    +<div class="member-signature"><span class="modifiers">protected abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handleCompletion</span><wbr><span class="parameters">(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</span></div>
    +<div class="block">Called when the concurrency operation completes. Subclasses define checkpointing behavior.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)">
    +<h3>enqueueItem</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="type-parameters">&lt;R&gt;</span>&nbsp;<span class="return-type"><a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</span>&nbsp;<span class="element-name">enqueueItem</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</span></div>
    +<div class="block">Creates and enqueues an item without starting execution. Use <a href="#executeItems()"><code>executeItems()</code></a> to begin execution after all
    + items have been enqueued. This prevents early termination from blocking item creation when all items are known
    + upfront (e.g., map operations).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="executeItems()">
    +<h3>executeItems</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">executeItems</span>()</div>
    +<div class="block">Starts execution of all enqueued items.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="join()">
    +<h3>join</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">join</span>()</div>
    +<div class="block">Blocks the calling thread until the concurrency operation reaches a terminal state. Validates item count, handles
    + zero-branch case, then delegates to <code>waitForOperationCompletion()</code> from BaseDurableOperation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBranches()">
    +<h3>getBranches</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;?&gt;&gt;</span>&nbsp;<span class="element-name">getBranches</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/InvokeOperation.html b/javadoc/software/amazon/lambda/durable/operation/InvokeOperation.html
    new file mode 100644
    index 000000000..73d2241f6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/InvokeOperation.html
    @@ -0,0 +1,248 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>InvokeOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: InvokeOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/InvokeOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class InvokeOperation" class="title">Class InvokeOperation&lt;T,<wbr>I&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.InvokeOperation&lt;T,<wbr>I&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type from the invoked function</dd>
    +<dd><code>I</code> - the payload type sent to the invoked function</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvokeOperation&lt;T,<wbr>I&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</span></div>
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">InvokeOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,I,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3 id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.lang.String,java.lang.Object,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.InvokeConfig,software.amazon.lambda.durable.context.DurableContextImpl)">InvokeOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvokeOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionName,
    + <a href="InvokeOperation.html" title="type parameter in InvokeOperation">I</a>&nbsp;payload,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/InvokeConfig.html" title="class in software.amazon.lambda.durable.config">InvokeConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="InvokeOperation.html" title="type parameter in InvokeOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/MapOperation.html b/javadoc/software/amazon/lambda/durable/operation/MapOperation.html
    new file mode 100644
    index 000000000..0f3c35268
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/MapOperation.html
    @@ -0,0 +1,284 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>MapOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: MapOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/MapOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class MapOperation" class="title">Class MapOperation&lt;I,<wbr>O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance"><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.ConcurrencyOperation</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.MapOperation&lt;I,<wbr>O&gt;</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the input item type</dd>
    +<dd><code>O</code> - the output result type per item</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MapOperation&lt;I,<wbr>O&gt;</span>
    +<span class="extends-implements">extends <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;O&gt;&gt;</span></div>
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.
    +
    + <p>Extends <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation"><code>ConcurrencyOperation</code></a> following the same pattern as <a href="ParallelOperation.html" title="class in software.amazon.lambda.durable.operation"><code>ParallelOperation</code></a>. All branches are
    + created upfront in <code>start()</code>/<code>replay()</code>, and results are aggregated into a <a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model"><code>MapResult</code></a> in
    + <code>get()</code>.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.ConcurrencyOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></h3>
    +<code><a href="ConcurrencyOperation.html#isJoined">isJoined</a></code></div>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">MapOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Called when the concurrency operation completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.ConcurrencyOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></h3>
    +<code><a href="ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)">createItem</a>, <a href="ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)">enqueueItem</a>, <a href="ConcurrencyOperation.html#executeItems()">executeItems</a>, <a href="ConcurrencyOperation.html#getBranches()">getBranches</a>, <a href="ConcurrencyOperation.html#join()">join</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.util.List,software.amazon.lambda.durable.DurableContext.MapFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.MapConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>MapOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MapOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">I</a>&gt;&nbsp;items,
    + <a href="../DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">I</a>,<wbr><a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&nbsp;itemResultType,
    + <a href="../config/MapConfig.html" title="class in software.amazon.lambda.durable.config">MapConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#start()">BaseDurableOperation</a></code></span></div>
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">BaseDurableOperation</a></code></span></div>
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">
    +<h3>handleCompletion</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handleCompletion</span><wbr><span class="parameters">(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">ConcurrencyOperation</a></code></span></div>
    +<div class="block">Called when the concurrency operation completes. Subclasses define checkpointing behavior.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">handleCompletion</a></code>&nbsp;in class&nbsp;<code><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;</span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">I</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="../model/MapResult.html" title="class in software.amazon.lambda.durable.model">MapResult</a>&lt;<a href="MapOperation.html" title="type parameter in MapOperation">O</a>&gt;&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/ParallelOperation.html b/javadoc/software/amazon/lambda/durable/operation/ParallelOperation.html
    new file mode 100644
    index 000000000..80294b4eb
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/ParallelOperation.html
    @@ -0,0 +1,341 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParallelOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: ParallelOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParallelOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class ParallelOperation" class="title">Class ParallelOperation</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance"><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.ConcurrencyOperation</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.ParallelOperation</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</code>, <code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ParallelOperation</span>
    +<span class="extends-implements">extends <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;
    +implements <a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></span></div>
    +<div class="block">Manages parallel execution of multiple branches as child context operations.
    +
    + <p>Extends <a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation"><code>ConcurrencyOperation</code></a> to provide parallel-specific behavior:
    +
    + <ul>
    +   <li>Creates branches as <a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation"><code>ChildContextOperation</code></a> with <a href="../model/OperationSubType.html#PARALLEL_BRANCH"><code>OperationSubType.PARALLEL_BRANCH</code></a>
    +   <li>Checkpoints SUCCESS on the parallel context when completion criteria are met
    +   <li>Returns a <a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model"><code>ParallelResult</code></a> summarising branch outcomes
    + </ul>
    +
    + <p>Context hierarchy:
    +
    + <pre>
    + DurableContext (root)
    +   └── ParallelOperation context (ChildContextOperation with PARALLEL subtype)
    +         β”œβ”€β”€ Branch 1 context (ChildContextOperation with PARALLEL_BRANCH)
    +         β”œβ”€β”€ Branch 2 context (ChildContextOperation with PARALLEL_BRANCH)
    +         └── Branch N context (ChildContextOperation with PARALLEL_BRANCH)
    + </pre></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.ConcurrencyOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></h3>
    +<code><a href="ConcurrencyOperation.html#isJoined">isJoined</a></code></div>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)" class="member-name-link">branch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Calls <a href="#get()"><code>get()</code></a> if not already called.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)" class="member-name-link">handleCompletion</a><wbr>(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Called when the concurrency operation completes.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.ConcurrencyOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></h3>
    +<code><a href="ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)">createItem</a>, <a href="ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)">enqueueItem</a>, <a href="ConcurrencyOperation.html#executeItems()">executeItems</a>, <a href="ConcurrencyOperation.html#getBranches()">getBranches</a>, <a href="ConcurrencyOperation.html#join()">join</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.ParallelDurableFuture">Methods inherited from interface&nbsp;software.amazon.lambda.durable.<a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></h3>
    +<code><a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function)">branch</a>, <a href="../ParallelDurableFuture.html#branch(java.lang.String,java.lang.Class,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">branch</a>, <a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function)">branch</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)">
    +<h3>ParallelOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ParallelOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">
    +<h3>handleCompletion</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handleCompletion</span><wbr><span class="parameters">(<a href="../model/ConcurrencyCompletionStatus.html" title="enum class in software.amazon.lambda.durable.model">ConcurrencyCompletionStatus</a>&nbsp;concurrencyCompletionStatus)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">ConcurrencyOperation</a></code></span></div>
    +<div class="block">Called when the concurrency operation completes. Subclasses define checkpointing behavior.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="ConcurrencyOperation.html#handleCompletion(software.amazon.lambda.durable.model.ConcurrencyCompletionStatus)">handleCompletion</a></code>&nbsp;in class&nbsp;<code><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#start()">BaseDurableOperation</a></code></span></div>
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">BaseDurableOperation</a></code></span></div>
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="../model/ParallelResult.html" title="class in software.amazon.lambda.durable.model">ParallelResult</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="close()">
    +<h3>close</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
    +<div class="block">Calls <a href="#get()"><code>get()</code></a> if not already called. Guarantees that the context is closed.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html#close()" title="class or interface in java.lang" class="external-link">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="../ParallelDurableFuture.html#close()">close</a></code>&nbsp;in interface&nbsp;<code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">
    +<h3>branch</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span>&nbsp;<span class="element-name">branch</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>T&gt;&nbsp;func,
    + <a href="../config/ParallelBranchConfig.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig</a>&nbsp;config)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">ParallelDurableFuture</a></code></span></div>
    +<div class="block">Registers and immediately starts a branch (respects maxConcurrency).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../ParallelDurableFuture.html#branch(java.lang.String,software.amazon.lambda.durable.TypeToken,java.util.function.Function,software.amazon.lambda.durable.config.ParallelBranchConfig)">branch</a></code>&nbsp;in interface&nbsp;<code><a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the branch name</dd>
    +<dd><code>resultType</code> - the result type token for generic types</dd>
    +<dd><code>func</code> - the function to execute in the branch's child context</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that will contain the branch result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/SerializableDurableOperation.html b/javadoc/software/amazon/lambda/durable/operation/SerializableDurableOperation.html
    new file mode 100644
    index 000000000..67f8b338b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/SerializableDurableOperation.html
    @@ -0,0 +1,327 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SerializableDurableOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: SerializableDurableOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SerializableDurableOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class SerializableDurableOperation" class="title">Class SerializableDurableOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance">software.amazon.lambda.durable.operation.SerializableDurableOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a></code>, <code><a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></code>, <code><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></code>, <code><a href="InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a></code>, <code><a href="StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a></code>, <code><a href="WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">SerializableDurableOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>
    +implements <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span></div>
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).
    +
    + <p>Key methods:
    +
    + <ul>
    +   <li><code>execute()</code> starts the operation (returns immediately)
    +   <li><code>get()</code> blocks until complete and returns the result
    + </ul>
    +
    + <p>The separation allows:
    +
    + <ul>
    +   <li>Starting multiple async operations quickly
    +   <li>Blocking on results later when needed
    +   <li>Proper thread coordination via future
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">deserializeException</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes an <code>ErrorObject</code> back into a throwable, reconstructing the original exception type and stack
    + trace when possible.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deserializeResult(java.lang.String)" class="member-name-link">deserializeResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes a result string into the operation's result type.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serializeException(java.lang.Throwable)" class="member-name-link">serializeException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Serializes a throwable into an <code>ErrorObject</code> for checkpointing.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serializeResult(T)" class="member-name-link">serializeResult</a><wbr>(<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Serializes the result to a string.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#start()">start</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>SerializableDurableOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">SerializableDurableOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +<div class="block">Constructs a new durable operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationIdentifier</code> - the unique identifier for this operation</dd>
    +<dd><code>resultTypeToken</code> - the type token for deserializing the result</dd>
    +<dd><code>resultSerDes</code> - the serializer/deserializer for the result</dd>
    +<dd><code>durableContext</code> - the parent context this operation belongs to</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)">
    +<h3>SerializableDurableOperation</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">SerializableDurableOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="deserializeResult(java.lang.String)">
    +<h3>deserializeResult</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a></span>&nbsp;<span class="element-name">deserializeResult</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +<div class="block">Deserializes a result string into the operation's result type.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>result</code> - the serialized result string</dd>
    +<dt>Returns:</dt>
    +<dd>the deserialized result</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../exception/SerDesException.html" title="class in software.amazon.lambda.durable.exception">SerDesException</a></code> - if deserialization fails</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serializeResult(T)">
    +<h3 id="serializeResult(java.lang.Object)">serializeResult</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">serializeResult</span><wbr><span class="parameters">(<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&nbsp;result)</span></div>
    +<div class="block">Serializes the result to a string.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>result</code> - the result to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>the serialized string</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serializeException(java.lang.Throwable)">
    +<h3>serializeException</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">serializeException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable)</span></div>
    +<div class="block">Serializes a throwable into an <code>ErrorObject</code> for checkpointing.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>throwable</code> - the exception to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>the serialized error object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>deserializeException</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></span>&nbsp;<span class="element-name">deserializeException</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;errorObject)</span></div>
    +<div class="block">Deserializes an <code>ErrorObject</code> back into a throwable, reconstructing the original exception type and stack
    + trace when possible. Falls back to null if the exception class is not found or deserialization fails.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>errorObject</code> - the serialized error object</dd>
    +<dt>Returns:</dt>
    +<dd>the reconstructed throwable, or null if reconstruction is not possible</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/StepOperation.html b/javadoc/software/amazon/lambda/durable/operation/StepOperation.html
    new file mode 100644
    index 000000000..330a362ec
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/StepOperation.html
    @@ -0,0 +1,252 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>StepOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: StepOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/StepOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class StepOperation" class="title">Class StepOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.StepOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type of the step function</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StepOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</span></div>
    +<div class="block">Durable operation that executes a user-provided function with retry support.
    +
    + <p>Steps are the primary unit of work in a durable execution. Each step is checkpointed before and after execution,
    + enabling automatic retry on failure and replay on re-invocation.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">StepOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="StepOperation.html" title="type parameter in StepOperation">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.StepConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>StepOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StepOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;function,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/StepConfig.html" title="class in software.amazon.lambda.durable.config">StepConfig</a>&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="StepOperation.html" title="type parameter in StepOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="StepOperation.html" title="type parameter in StepOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/WaitForConditionOperation.html b/javadoc/software/amazon/lambda/durable/operation/WaitForConditionOperation.html
    new file mode 100644
    index 000000000..f04368d8c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/WaitForConditionOperation.html
    @@ -0,0 +1,257 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: WaitForConditionOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class WaitForConditionOperation" class="title">Class WaitForConditionOperation&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.SerializableDurableOperation</a>&lt;T&gt;
    +<div class="inheritance">software.amazon.lambda.durable.operation.WaitForConditionOperation&lt;T&gt;</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitForConditionOperation&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</span></div>
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.
    +
    + <p>Uses <code>OperationType.STEP</code> with <a href="../model/OperationSubType.html#WAIT_FOR_CONDITION"><code>OperationSubType.WAIT_FOR_CONDITION</code></a> subtype. Each polling iteration
    + is checkpointed as a RETRY on the same STEP operation.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitForConditionOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.SerializableDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></h3>
    +<code><a href="SerializableDurableOperation.html#deserializeException(software.amazon.awssdk.services.lambda.model.ErrorObject)">deserializeException</a>, <a href="SerializableDurableOperation.html#deserializeResult(java.lang.String)">deserializeResult</a>, <a href="SerializableDurableOperation.html#serializeException(java.lang.Throwable)">serializeException</a>, <a href="SerializableDurableOperation.html#serializeResult(T)">serializeResult</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,java.util.function.BiFunction,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.WaitForConditionConfig,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>WaitForConditionOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitForConditionOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>,<wbr><a href="../StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a>,<wbr><a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model">WaitForConditionResult</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&gt;&nbsp;checkFunc,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../config/WaitForConditionConfig.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;&nbsp;config,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#start()">BaseDurableOperation</a></code></span></div>
    +<div class="block">Starts the operation on first execution (no existing checkpoint).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">BaseDurableOperation</a></code></span></div>
    +<div class="block">Replays the operation from an existing checkpoint.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;</code></dd>
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerializableDurableOperation.html#get()">get</a></code>&nbsp;in class&nbsp;<code><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;<a href="WaitForConditionOperation.html" title="type parameter in WaitForConditionOperation">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/WaitOperation.html b/javadoc/software/amazon/lambda/durable/operation/WaitOperation.html
    new file mode 100644
    index 000000000..1888df786
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/WaitOperation.html
    @@ -0,0 +1,238 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation, class: WaitOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<h1 title="Class WaitOperation" class="title">Class WaitOperation</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation.BaseDurableOperation</a>
    +<div class="inheritance">software.amazon.lambda.durable.operation.WaitOperation</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WaitOperation</span>
    +<span class="extends-implements">extends <a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>
    +implements <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span></div>
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.
    +
    + <p>The wait is checkpointed and the Lambda is suspended. On re-invocation after the wait period, execution resumes
    + from where it left off.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Fields inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#completionFuture">completionFuture</a>, <a href="BaseDurableOperation.html#executionManager">executionManager</a>, <a href="BaseDurableOperation.html#parentOperation">parentOperation</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">WaitOperation</a><wbr>(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replay(software.amazon.awssdk.services.lambda.model.Operation)" class="member-name-link">replay</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Replays the operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starts the operation.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-software.amazon.lambda.durable.operation.BaseDurableOperation">Methods inherited from class&nbsp;software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></h3>
    +<code><a href="BaseDurableOperation.html#execute()">execute</a>, <a href="BaseDurableOperation.html#getChildOperations()">getChildOperations</a>, <a href="BaseDurableOperation.html#getCompletionFuture()">getCompletionFuture</a>, <a href="BaseDurableOperation.html#getContext()">getContext</a>, <a href="BaseDurableOperation.html#getCurrentThreadContext()">getCurrentThreadContext</a>, <a href="BaseDurableOperation.html#getName()">getName</a>, <a href="BaseDurableOperation.html#getOperation()">getOperation</a>, <a href="BaseDurableOperation.html#getOperationId()">getOperationId</a>, <a href="BaseDurableOperation.html#getRunningUserHandler()">getRunningUserHandler</a>, <a href="BaseDurableOperation.html#getSubType()">getSubType</a>, <a href="BaseDurableOperation.html#getType()">getType</a>, <a href="BaseDurableOperation.html#isOperationCompleted()">isOperationCompleted</a>, <a href="BaseDurableOperation.html#markAlreadyCompleted()">markAlreadyCompleted</a>, <a href="BaseDurableOperation.html#onCheckpointComplete(software.amazon.awssdk.services.lambda.model.Operation)">onCheckpointComplete</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates()">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#pollForOperationUpdates(java.time.Instant)">pollForOperationUpdates</a>, <a href="BaseDurableOperation.html#registerActiveThread(java.lang.String)">registerActiveThread</a>, <a href="BaseDurableOperation.html#runUserHandler(java.lang.Runnable,software.amazon.lambda.durable.execution.ThreadType)">runUserHandler</a>, <a href="BaseDurableOperation.html#sendOperationUpdate(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdate</a>, <a href="BaseDurableOperation.html#sendOperationUpdateAsync(software.amazon.awssdk.services.lambda.model.OperationUpdate.Builder)">sendOperationUpdateAsync</a>, <a href="BaseDurableOperation.html#terminateExecution(software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException)">terminateExecution</a>, <a href="BaseDurableOperation.html#terminateExecutionWithIllegalDurableOperationException(java.lang.String)">terminateExecutionWithIllegalDurableOperationException</a>, <a href="BaseDurableOperation.html#validateReplay(software.amazon.awssdk.services.lambda.model.Operation)">validateReplay</a>, <a href="BaseDurableOperation.html#waitForOperationCompletion()">waitForOperationCompletion</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.OperationIdentifier,java.time.Duration,software.amazon.lambda.durable.context.DurableContextImpl)">
    +<h3>WaitOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitOperation</span><wbr><span class="parameters">(<a href="../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +<div class="block">Starts the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#start()">start</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="replay(software.amazon.awssdk.services.lambda.model.Operation)">
    +<h3>replay</h3>
    +<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">replay</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;existing)</span></div>
    +<div class="block">Replays the operation.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="BaseDurableOperation.html#replay(software.amazon.awssdk.services.lambda.model.Operation)">replay</a></code>&nbsp;in class&nbsp;<code><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>existing</code> - the checkpointed operation state</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/BaseDurableOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/BaseDurableOperation.html
    new file mode 100644
    index 000000000..c9040196b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/BaseDurableOperation.html
    @@ -0,0 +1,202 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.BaseDurableOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: BaseDurableOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.BaseDurableOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.BaseDurableOperation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<h2>Uses of <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a> in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a></h2>
    +<div class="caption"><span>Methods in <a href="../../execution/package-summary.html">software.amazon.lambda.durable.execution</a> with parameters of type <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExecutionManager.</span><code><a href="../../execution/ExecutionManager.html#registerOperation(software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">registerOperation</a><wbr>(<a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;operation)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Registers an operation so it can receive checkpoint completion notifications.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../SerializableDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../WaitOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Fields in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> declared as <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected final <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../BaseDurableOperation.html#parentOperation" class="member-name-link">parentOperation</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Fields in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> with type parameters of type <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../BaseDurableOperation.html#completionFuture" class="member-name-link">completionFuture</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> that return types with arguments of type <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">BaseDurableOperation.</span><code><a href="../BaseDurableOperation.html#getCompletionFuture()" class="member-name-link">getCompletionFuture</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../BaseDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">BaseDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/CallbackOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/CallbackOperation.html
    new file mode 100644
    index 000000000..e025e3e61
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/CallbackOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.CallbackOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: CallbackOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.CallbackOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.CallbackOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.CallbackOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/ChildContextOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/ChildContextOperation.html
    new file mode 100644
    index 000000000..164dc24ce
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/ChildContextOperation.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.ChildContextOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: ChildContextOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.ChildContextOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.ChildContextOperation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> that return <a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> that return types with arguments of type <a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;?&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../ConcurrencyOperation.html#getBranches()" class="member-name-link">getBranches</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/ConcurrencyOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/ConcurrencyOperation.html
    new file mode 100644
    index 000000000..bcf2a6079
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/ConcurrencyOperation.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.ConcurrencyOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: ConcurrencyOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.ConcurrencyOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.ConcurrencyOperation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ChildContextOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.config.RunInChildContextConfig,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.ConcurrencyOperation)" class="member-name-link">ChildContextOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr><a href="../ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../ChildContextOperation.html" title="type parameter in ChildContextOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../../config/RunInChildContextConfig.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig</a>&nbsp;config,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;?&gt;&nbsp;parentOperation)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/InvokeOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/InvokeOperation.html
    new file mode 100644
    index 000000000..0a076a82b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/InvokeOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.InvokeOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: InvokeOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.InvokeOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.InvokeOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.InvokeOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/MapOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/MapOperation.html
    new file mode 100644
    index 000000000..15ce987de
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/MapOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.MapOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: MapOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../MapOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.MapOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.MapOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.MapOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/ParallelOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/ParallelOperation.html
    new file mode 100644
    index 000000000..cf289be58
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/ParallelOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.ParallelOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: ParallelOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.ParallelOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.ParallelOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.ParallelOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/SerializableDurableOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/SerializableDurableOperation.html
    new file mode 100644
    index 000000000..ea923bf02
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/SerializableDurableOperation.html
    @@ -0,0 +1,127 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.SerializableDurableOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: SerializableDurableOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.SerializableDurableOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.SerializableDurableOperation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Subclasses of <a href="../SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/StepOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/StepOperation.html
    new file mode 100644
    index 000000000..32cc431c5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/StepOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.StepOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: StepOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../StepOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.StepOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.StepOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.StepOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/WaitForConditionOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/WaitForConditionOperation.html
    new file mode 100644
    index 000000000..51030bc30
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/WaitForConditionOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.WaitForConditionOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: WaitForConditionOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.WaitForConditionOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.WaitForConditionOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.WaitForConditionOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/class-use/WaitOperation.html b/javadoc/software/amazon/lambda/durable/operation/class-use/WaitOperation.html
    new file mode 100644
    index 000000000..83c49a6ba
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/class-use/WaitOperation.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.operation.WaitOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation, class: WaitOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitOperation.html" title="class in software.amazon.lambda.durable.operation">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.operation.WaitOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.operation.WaitOperation</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.operation.WaitOperation</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/package-summary.html b/javadoc/software/amazon/lambda/durable/operation/package-summary.html
    new file mode 100644
    index 000000000..1d0519dd2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/package-summary.html
    @@ -0,0 +1,143 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.operation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.operation">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.operation" class="title">Package software.amazon.lambda.durable.operation</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.operation</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CallbackOperation.html" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Durable operation for creating and waiting on external callbacks.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ConcurrencyOperation.html" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="InvokeOperation.html" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Durable operation that invokes another Lambda function and waits for its result.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MapOperation.html" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    + own child context.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParallelOperation.html" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Manages parallel execution of multiple branches as child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SerializableDurableOperation.html" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="StepOperation.html" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Durable operation that executes a user-provided function with retry support.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitForConditionOperation.html" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    + determine polling intervals and termination.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitOperation.html" title="class in software.amazon.lambda.durable.operation">WaitOperation</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Durable operation that suspends execution for a specified duration without consuming compute.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/package-tree.html b/javadoc/software/amazon/lambda/durable/operation/package-tree.html
    new file mode 100644
    index 000000000..685049672
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/package-tree.html
    @@ -0,0 +1,96 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.operation Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.operation">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.operation</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="BaseDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="SerializableDurableOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">SerializableDurableOperation</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="CallbackOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">CallbackOperation</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="../DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;)</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="ChildContextOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="ConcurrencyOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ConcurrencyOperation</a>&lt;T&gt;
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="MapOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">MapOperation</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="ParallelOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">ParallelOperation</a> (implements software.amazon.lambda.durable.<a href="../ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="InvokeOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">InvokeOperation</a>&lt;T,<wbr>I&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="StepOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">StepOperation</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="WaitForConditionOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitForConditionOperation</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.operation.<a href="WaitOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.operation">WaitOperation</a> (implements software.amazon.lambda.durable.<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/operation/package-use.html b/javadoc/software/amazon/lambda/durable/operation/package-use.html
    new file mode 100644
    index 000000000..b01d23de8
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/operation/package-use.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.operation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.operation">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.operation" class="title">Uses of Package<br>software.amazon.lambda.durable.operation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.operation</a> used by <a href="../execution/package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/BaseDurableOperation.html#software.amazon.lambda.durable.execution">BaseDurableOperation</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.operation</a> used by <a href="package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/BaseDurableOperation.html#software.amazon.lambda.durable.operation">BaseDurableOperation</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ChildContextOperation.html#software.amazon.lambda.durable.operation">ChildContextOperation</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Manages the lifecycle of a child execution context.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ConcurrencyOperation.html#software.amazon.lambda.durable.operation">ConcurrencyOperation</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for concurrent execution of multiple child context operations.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/SerializableDurableOperation.html#software.amazon.lambda.durable.operation">SerializableDurableOperation</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Base class for all durable operations (STEP, WAIT, etc.).</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/package-summary.html b/javadoc/software/amazon/lambda/durable/package-summary.html
    new file mode 100644
    index 000000000..e9f16cefc
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/package-summary.html
    @@ -0,0 +1,161 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable" class="title">Package software.amazon.lambda.durable</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="client/package-summary.html">software.amazon.lambda.durable.client</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="config/package-summary.html">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="context/package-summary.html">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="exception/package-summary.html">software.amazon.lambda.durable.exception</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="execution/package-summary.html">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="logging/package-summary.html">software.amazon.lambda.durable.logging</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="model/package-summary.html">software.amazon.lambda.durable.model</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="operation/package-summary.html">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="retry/package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="serde/package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="testing/package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="util/package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="DurableCallbackFuture.html" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Builder for DurableConfig.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="DurableContext.MapFunction.html" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ParallelDurableFuture.html" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="StepContext.html" title="interface in software.amazon.lambda.durable">StepContext</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/package-tree.html b/javadoc/software/amazon/lambda/durable/package-tree.html
    new file mode 100644
    index 000000000..90f10ca35
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/package-tree.html
    @@ -0,0 +1,103 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableConfig.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableConfig.Builder.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableHandler.html" class="type-name-link" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt; (implements com.amazonaws.services.lambda.runtime.RequestStreamHandler)</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="TypeToken.html" class="type-name-link" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" class="type-name-link external-link" title="class or interface in java.lang">AutoCloseable</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.context.<a href="context/BaseContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable.context">BaseContext</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext</a></li>
    +<li class="circle">software.amazon.lambda.durable.<a href="StepContext.html" class="type-name-link" title="interface in software.amazon.lambda.durable">StepContext</a></li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> (also extends software.amazon.lambda.durable.<a href="DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +</ul>
    +</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableContext.MapFunction.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableContext.MapFunction</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.<a href="DurableCallbackFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">DurableCallbackFuture</a>&lt;T&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.<a href="ParallelDurableFuture.html" class="type-name-link" title="interface in software.amazon.lambda.durable">ParallelDurableFuture</a> (also extends java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/package-use.html b/javadoc/software/amazon/lambda/durable/package-use.html
    new file mode 100644
    index 000000000..ef4fdb0da
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/package-use.html
    @@ -0,0 +1,443 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable" class="title">Uses of Package<br>software.amazon.lambda.durable</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.context">software.amazon.lambda.durable.context</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.callback">software.amazon.lambda.durable.examples.callback</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.child">software.amazon.lambda.durable.examples.child</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.general">software.amazon.lambda.durable.examples.general</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.invoke">software.amazon.lambda.durable.examples.invoke</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.map">software.amazon.lambda.durable.examples.map</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.parallel">software.amazon.lambda.durable.examples.parallel</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.examples.step">software.amazon.lambda.durable.examples.step</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.examples.wait">software.amazon.lambda.durable.examples.wait</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.execution">software.amazon.lambda.durable.execution</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.serde">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.util">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableCallbackFuture.html#software.amazon.lambda.durable">DurableCallbackFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable">DurableConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.Builder.html#software.amazon.lambda.durable">DurableConfig.Builder</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Builder for DurableConfig.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.MapFunction.html#software.amazon.lambda.durable">DurableContext.MapFunction</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableFuture.html#software.amazon.lambda.durable">DurableFuture</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelDurableFuture.html#software.amazon.lambda.durable">ParallelDurableFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepContext.html#software.amazon.lambda.durable">StepContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.context">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="context/package-summary.html">software.amazon.lambda.durable.context</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableCallbackFuture.html#software.amazon.lambda.durable.context">DurableCallbackFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.context">DurableConfig</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.context">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.MapFunction.html#software.amazon.lambda.durable.context">DurableContext.MapFunction</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableFuture.html#software.amazon.lambda.durable.context">DurableFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/ParallelDurableFuture.html#software.amazon.lambda.durable.context">ParallelDurableFuture</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/StepContext.html#software.amazon.lambda.durable.context">StepContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.context">TypeToken</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.callback">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/callback/package-summary.html">software.amazon.lambda.durable.examples.callback</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.callback">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.callback">DurableHandler</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.child">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/child/package-summary.html">software.amazon.lambda.durable.examples.child</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.examples.child">DurableConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.child">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.child">DurableHandler</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.general">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/general/package-summary.html">software.amazon.lambda.durable.examples.general</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.examples.general">DurableConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.general">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.general">DurableHandler</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.invoke">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/invoke/package-summary.html">software.amazon.lambda.durable.examples.invoke</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.invoke">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.invoke">DurableHandler</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.map">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/map/package-summary.html">software.amazon.lambda.durable.examples.map</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.map">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.map">DurableHandler</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.parallel">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/parallel/package-summary.html">software.amazon.lambda.durable.examples.parallel</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.parallel">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.parallel">DurableHandler</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.step">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/step/package-summary.html">software.amazon.lambda.durable.examples.step</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.examples.step">DurableConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.step">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.step">DurableHandler</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.examples.wait">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="examples/wait/package-summary.html">software.amazon.lambda.durable.examples.wait</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.examples.wait">DurableContext</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.examples.wait">DurableHandler</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.execution">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="execution/package-summary.html">software.amazon.lambda.durable.execution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.execution">DurableConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.execution">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.execution">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableCallbackFuture.html#software.amazon.lambda.durable.operation">DurableCallbackFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Result of creating a callback, containing the callback ID and providing access to the result.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.operation">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableContext.MapFunction.html#software.amazon.lambda.durable.operation">DurableContext.MapFunction</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Function applied to each item in a map operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableFuture.html#software.amazon.lambda.durable.operation">DurableFuture</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/ParallelDurableFuture.html#software.amazon.lambda.durable.operation">ParallelDurableFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">User-facing context for managing parallel branch execution within a durable function.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/StepContext.html#software.amazon.lambda.durable.operation">StepContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.operation">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.serde">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="serde/package-summary.html">software.amazon.lambda.durable.serde</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.serde">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="testing/package-summary.html">software.amazon.lambda.durable.testing</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableConfig.html#software.amazon.lambda.durable.testing">DurableConfig</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Configuration for DurableHandler initialization.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/DurableContext.html#software.amazon.lambda.durable.testing">DurableContext</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableHandler.html#software.amazon.lambda.durable.testing">DurableHandler</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Abstract base class for Lambda handlers that use durable execution.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.testing">TypeToken</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.testing.cloud">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/TypeToken.html#software.amazon.lambda.durable.testing.local">TypeToken</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Framework-agnostic type token for capturing generic type information at runtime.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.util">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable</a> used by <a href="util/package-summary.html">software.amazon.lambda.durable.util</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/DurableFuture.html#software.amazon.lambda.durable.util">DurableFuture</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">A future representing the result of an asynchronous durable operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/JitterStrategy.html b/javadoc/software/amazon/lambda/durable/retry/JitterStrategy.html
    new file mode 100644
    index 000000000..b242c7606
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/JitterStrategy.html
    @@ -0,0 +1,264 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>JitterStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, enum: JitterStrategy">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/JitterStrategy.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Enum Class JitterStrategy" class="title">Enum Class JitterStrategy</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&gt;
    +<div class="inheritance">software.amazon.lambda.durable.retry.JitterStrategy</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">JitterStrategy</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&gt;</span></div>
    +<div class="block">Jitter strategy for retry delays to prevent thundering herd problems.
    +
    + <p>Jitter reduces simultaneous retry attempts by spreading retries out over a randomized delay interval, which helps
    + prevent overwhelming services when many clients retry at the same time.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#FULL" class="member-name-link">FULL</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Full jitter - random delay between 0 and calculated delay.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#HALF" class="member-name-link">HALF</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Half jitter - random delay between 50% and 100% of calculated delay.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#NONE" class="member-name-link">NONE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">No jitter - use exact calculated delay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract double</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#apply(double)" class="member-name-link">apply</a><wbr>(double&nbsp;baseDelay)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Applies jitter to the given base delay.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>[]</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="NONE">
    +<h3>NONE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span>&nbsp;<span class="element-name">NONE</span></div>
    +<div class="block">No jitter - use exact calculated delay. This provides predictable timing but may cause thundering herd issues.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="FULL">
    +<h3>FULL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span>&nbsp;<span class="element-name">FULL</span></div>
    +<div class="block">Full jitter - random delay between 0 and calculated delay. This provides maximum spread but may result in very
    + short delays.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="HALF">
    +<h3>HALF</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span>&nbsp;<span class="element-name">HALF</span></div>
    +<div class="block">Half jitter - random delay between 50% and 100% of calculated delay. This provides good spread while maintaining
    + reasonable minimum delays.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="apply(double)">
    +<h3>apply</h3>
    +<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(double&nbsp;baseDelay)</span></div>
    +<div class="block">Applies jitter to the given base delay.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>baseDelay</code> - the calculated delay before jitter</dd>
    +<dt>Returns:</dt>
    +<dd>the delay after applying jitter</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.Presets.html
    new file mode 100644
    index 000000000..0527dbb6e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.Presets.html
    @@ -0,0 +1,172 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>PollingStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: PollingStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/PollingStrategies.Presets.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class PollingStrategies.Presets" class="title">Class PollingStrategies.Presets</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.PollingStrategies.Presets</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">PollingStrategies.Presets</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Preset polling strategies for common use cases.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
    + second</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Presets</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="DEFAULT">
    +<h3>DEFAULT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span>&nbsp;<span class="element-name">DEFAULT</span></div>
    +<div class="block">Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
    + second</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Presets</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Presets</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.html b/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.html
    new file mode 100644
    index 000000000..4f1dba8ae
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/PollingStrategies.html
    @@ -0,0 +1,238 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>PollingStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: PollingStrategies">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/PollingStrategies.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class PollingStrategies" class="title">Class PollingStrategies</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.PollingStrategies</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PollingStrategies</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Factory class for creating common polling strategies.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="PollingStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Preset polling strategies for common use cases.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">PollingStrategies</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#at(java.time.Instant)" class="member-name-link">at</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;instant)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a polling strategy that polls at a specific instant in time.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)" class="member-name-link">exponentialBackoff</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;baseInterval,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxInterval)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates an exponential backoff polling strategy.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fixedDelay(java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a fixed-delay polling strategy that uses the same interval for every attempt.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>PollingStrategies</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PollingStrategies</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)">
    +<h3>exponentialBackoff</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span>&nbsp;<span class="element-name">exponentialBackoff</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;baseInterval,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxInterval)</span></div>
    +<div class="block">Creates an exponential backoff polling strategy.
    +
    + <p>The delay calculation follows the formula: delay = jitter(baseInterval Γ— backoffRate^(attempt-1))</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>baseInterval</code> - Base delay before first poll</dd>
    +<dd><code>backoffRate</code> - Multiplier for exponential backoff (must be positive)</dd>
    +<dd><code>jitter</code> - Jitter strategy to apply to delays</dd>
    +<dd><code>maxInterval</code> - Maximum delay between polls</dd>
    +<dt>Returns:</dt>
    +<dd>PollingStrategy implementing exponential backoff with jitter</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="fixedDelay(java.time.Duration)">
    +<h3>fixedDelay</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span>&nbsp;<span class="element-name">fixedDelay</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</span></div>
    +<div class="block">Creates a fixed-delay polling strategy that uses the same interval for every attempt.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>interval</code> - Fixed delay between polls</dd>
    +<dt>Returns:</dt>
    +<dd>PollingStrategy with fixed delay</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="at(java.time.Instant)">
    +<h3>at</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span>&nbsp;<span class="element-name">at</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;instant)</span></div>
    +<div class="block">Creates a polling strategy that polls at a specific instant in time.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>instant</code> - The instant to poll at</dd>
    +<dt>Returns:</dt>
    +<dd>PollingStrategy that calculates delay until the specified instant</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/PollingStrategy.html b/javadoc/software/amazon/lambda/durable/retry/PollingStrategy.html
    new file mode 100644
    index 000000000..cfb6f0c53
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/PollingStrategy.html
    @@ -0,0 +1,145 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>PollingStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, interface: PollingStrategy">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/PollingStrategy.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Interface PollingStrategy" class="title">Interface PollingStrategy</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">PollingStrategy</span></div>
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#computeDelay(int)" class="member-name-link">computeDelay</a><wbr>(int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Computes the delay before the next polling attempt.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="computeDelay(int)">
    +<h3>computeDelay</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">computeDelay</span><wbr><span class="parameters">(int&nbsp;attempt)</span></div>
    +<div class="block">Computes the delay before the next polling attempt.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>attempt</code> - The current attempt number (1-based)</dd>
    +<dt>Returns:</dt>
    +<dd>Duration to wait before the next poll</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/RetryDecision.html b/javadoc/software/amazon/lambda/durable/retry/RetryDecision.html
    new file mode 100644
    index 000000000..90909e307
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/RetryDecision.html
    @@ -0,0 +1,202 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryDecision (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: RetryDecision">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryDecision.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class RetryDecision" class="title">Class RetryDecision</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.RetryDecision</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RetryDecision</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Represents a decision about whether to retry a failed operation and how long to wait.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#delay()" class="member-name-link">delay</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fail()" class="member-name-link">fail</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a retry decision indicating the operation should not be retried.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#retry(java.time.Duration)" class="member-name-link">retry</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;delay)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a retry decision indicating the operation should be retried after the specified delay.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#shouldRetry()" class="member-name-link">shouldRetry</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="retry(java.time.Duration)">
    +<h3>retry</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></span>&nbsp;<span class="element-name">retry</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;delay)</span></div>
    +<div class="block">Creates a retry decision indicating the operation should be retried after the specified delay.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>delay</code> - the duration to wait before retrying</dd>
    +<dt>Returns:</dt>
    +<dd>a RetryDecision indicating retry with the specified delay</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="fail()">
    +<h3>fail</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></span>&nbsp;<span class="element-name">fail</span>()</div>
    +<div class="block">Creates a retry decision indicating the operation should not be retried.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>a RetryDecision indicating no retry should be attempted</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="shouldRetry()">
    +<h3>shouldRetry</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">shouldRetry</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>true if the operation should be retried, false otherwise</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="delay()">
    +<h3>delay</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">delay</span>()</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the duration to wait before retrying, or Duration.ZERO if no retry</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.Presets.html
    new file mode 100644
    index 000000000..f70408782
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.Presets.html
    @@ -0,0 +1,184 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: RetryStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryStrategies.Presets.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class RetryStrategies.Presets" class="title">Class RetryStrategies.Presets</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.RetryStrategies.Presets</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">RetryStrategies.Presets</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Preset retry strategies for common use cases.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
    + seconds - Backoff rate: 2x - Jitter: FULL</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#NO_RETRY" class="member-name-link">NO_RETRY</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">No retry strategy - fails immediately on first error.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Presets</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="DEFAULT">
    +<h3>DEFAULT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span>&nbsp;<span class="element-name">DEFAULT</span></div>
    +<div class="block">Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
    + seconds - Backoff rate: 2x - Jitter: FULL</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="NO_RETRY">
    +<h3>NO_RETRY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span>&nbsp;<span class="element-name">NO_RETRY</span></div>
    +<div class="block">No retry strategy - fails immediately on first error. Use this for operations that should not be retried.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Presets</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Presets</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.html b/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.html
    new file mode 100644
    index 000000000..89d28643e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/RetryStrategies.html
    @@ -0,0 +1,229 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: RetryStrategies">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryStrategies.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class RetryStrategies" class="title">Class RetryStrategies</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.RetryStrategies</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RetryStrategies</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Factory class for creating common retry strategies.
    +
    + <p>This class provides preset retry strategies for common use cases, as well as factory methods for creating custom
    + retry strategies with exponential backoff and jitter.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="RetryStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Preset retry strategies for common use cases.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">RetryStrategies</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates an exponential backoff retry strategy.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a simple retry strategy that retries a fixed number of times with a fixed delay.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>RetryStrategies</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RetryStrategies</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)">
    +<h3>exponentialBackoff</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span>&nbsp;<span class="element-name">exponentialBackoff</span><wbr><span class="parameters">(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</span></div>
    +<div class="block">Creates an exponential backoff retry strategy.
    +
    + <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxAttempts</code> - Maximum number of attempts (including initial attempt)</dd>
    +<dd><code>initialDelay</code> - Initial delay before first retry</dd>
    +<dd><code>maxDelay</code> - Maximum delay between retries</dd>
    +<dd><code>backoffRate</code> - Multiplier for exponential backoff</dd>
    +<dd><code>jitter</code> - Jitter strategy to apply to delays</dd>
    +<dt>Returns:</dt>
    +<dd>RetryStrategy implementing exponential backoff with jitter</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="fixedDelay(int,java.time.Duration)">
    +<h3>fixedDelay</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span>&nbsp;<span class="element-name">fixedDelay</span><wbr><span class="parameters">(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</span></div>
    +<div class="block">Creates a simple retry strategy that retries a fixed number of times with a fixed delay.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxAttempts</code> - Maximum number of attempts (including initial attempt)</dd>
    +<dd><code>fixedDelay</code> - Fixed delay between retries</dd>
    +<dt>Returns:</dt>
    +<dd>RetryStrategy with fixed delay</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/RetryStrategy.html b/javadoc/software/amazon/lambda/durable/retry/RetryStrategy.html
    new file mode 100644
    index 000000000..257413617
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/RetryStrategy.html
    @@ -0,0 +1,151 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>RetryStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, interface: RetryStrategy">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/RetryStrategy.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Interface RetryStrategy" class="title">Interface RetryStrategy</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">RetryStrategy</span></div>
    +<div class="block">Functional interface for determining retry behavior when operations fail.
    +
    + <p>A RetryStrategy evaluates failed operations and decides whether they should be retried and how long to wait before
    + the next attempt.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#makeRetryDecision(java.lang.Throwable,int)" class="member-name-link">makeRetryDecision</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;error,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Determines whether to retry a failed operation and calculates the retry delay.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="makeRetryDecision(java.lang.Throwable,int)">
    +<h3>makeRetryDecision</h3>
    +<div class="member-signature"><span class="return-type"><a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></span>&nbsp;<span class="element-name">makeRetryDecision</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;error,
    + int&nbsp;attempt)</span></div>
    +<div class="block">Determines whether to retry a failed operation and calculates the retry delay.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>error</code> - The error that occurred during the operation</dd>
    +<dd><code>attempt</code> - The current attempt number (1-based, so first attempt is 1)</dd>
    +<dt>Returns:</dt>
    +<dd>RetryDecision indicating whether to retry and the delay before next attempt</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html b/javadoc/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html
    new file mode 100644
    index 000000000..22ad778ac
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitForConditionWaitStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, interface: WaitForConditionWaitStrategy">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitForConditionWaitStrategy.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Interface WaitForConditionWaitStrategy" class="title">Interface WaitForConditionWaitStrategy&lt;T&gt;</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +</dl>
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">WaitForConditionWaitStrategy&lt;T&gt;</span></div>
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.
    +
    + <p>Implementations evaluate the current state and attempt number to compute a <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link"><code>Duration</code></a> delay. The
    + continue/stop decision is handled separately by <a href="../model/WaitForConditionResult.html" title="class in software.amazon.lambda.durable.model"><code>WaitForConditionResult</code></a>. When the maximum number of attempts
    + is exceeded, the strategy should throw a <a href="../exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception"><code>WaitForConditionFailedException</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="WaitStrategies.html" title="class in software.amazon.lambda.durable.retry"><code>WaitStrategies</code></a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#evaluate(T,int)" class="member-name-link">evaluate</a><wbr>(<a href="WaitForConditionWaitStrategy.html" title="type parameter in WaitForConditionWaitStrategy">T</a>&nbsp;state,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Computes the delay before the next polling attempt based on the current state and attempt number.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="evaluate(T,int)">
    +<h3 id="evaluate(java.lang.Object,int)">evaluate</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">evaluate</span><wbr><span class="parameters">(<a href="WaitForConditionWaitStrategy.html" title="type parameter in WaitForConditionWaitStrategy">T</a>&nbsp;state,
    + int&nbsp;attempt)</span></div>
    +<div class="block">Computes the delay before the next polling attempt based on the current state and attempt number.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>state</code> - the current state returned by the check function</dd>
    +<dd><code>attempt</code> - the attempt number (1-based)</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link"><code>Duration</code></a> representing the delay before the next polling attempt</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception">WaitForConditionFailedException</a></code> - if the maximum number of attempts has been exceeded</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.Presets.html
    new file mode 100644
    index 000000000..3358b87a7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.Presets.html
    @@ -0,0 +1,172 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: WaitStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitStrategies.Presets.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class WaitStrategies.Presets" class="title">Class WaitStrategies.Presets</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.WaitStrategies.Presets</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><a href="WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static class </span><span class="element-name type-name-label">WaitStrategies.Presets</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Preset wait strategies for common use cases.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
    + backoff rate, and FULL jitter.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Presets</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="DEFAULT">
    +<h3>DEFAULT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span>&nbsp;<span class="element-name">DEFAULT</span></div>
    +<div class="block">Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
    + backoff rate, and FULL jitter.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Presets</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Presets</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.html b/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.html
    new file mode 100644
    index 000000000..0950a1405
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/WaitStrategies.html
    @@ -0,0 +1,251 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>WaitStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry, class: WaitStrategies">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/WaitStrategies.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.retry</a></div>
    +<h1 title="Class WaitStrategies" class="title">Class WaitStrategies</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.retry.WaitStrategies</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">WaitStrategies</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Factory class for creating common <a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> implementations.
    +
    + <p>This class provides preset wait strategies (for use with waitForCondition) for common use cases, as well as
    + factory methods for creating custom retry strategies with exponential backoff and jitter.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="WaitStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Preset wait strategies for common use cases.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WaitStrategies</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#defaultStrategy()" class="member-name-link">defaultStrategy</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the default wait strategy.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates an exponential backoff wait strategy.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WaitStrategies</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WaitStrategies</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="defaultStrategy()">
    +<h3>defaultStrategy</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</span>&nbsp;<span class="element-name">defaultStrategy</span>()</div>
    +<div class="block">Returns the default wait strategy.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Returns:</dt>
    +<dd>the default wait strategy</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)">
    +<h3>exponentialBackoff</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</span>&nbsp;<span class="element-name">exponentialBackoff</span><wbr><span class="parameters">(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</span></div>
    +<div class="block">Creates an exponential backoff wait strategy.
    +
    + <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Parameters:</dt>
    +<dd><code>maxAttempts</code> - maximum number of attempts before throwing <a href="../exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception"><code>WaitForConditionFailedException</code></a></dd>
    +<dd><code>initialDelay</code> - initial delay before first retry</dd>
    +<dd><code>maxDelay</code> - maximum delay between retries</dd>
    +<dd><code>backoffRate</code> - multiplier for exponential backoff (must be >= 1.0)</dd>
    +<dd><code>jitter</code> - jitter strategy to apply to delays</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> implementing exponential backoff with jitter</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="fixedDelay(int,java.time.Duration)">
    +<h3>fixedDelay</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</span>&nbsp;<span class="element-name">fixedDelay</span><wbr><span class="parameters">(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</span></div>
    +<div class="block">Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the type of state being polled</dd>
    +<dt>Parameters:</dt>
    +<dd><code>maxAttempts</code> - maximum number of attempts before throwing <a href="../exception/WaitForConditionFailedException.html" title="class in software.amazon.lambda.durable.exception"><code>WaitForConditionFailedException</code></a></dd>
    +<dd><code>fixedDelay</code> - the constant delay between polling attempts</dd>
    +<dt>Returns:</dt>
    +<dd>a <a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> with fixed delay</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/JitterStrategy.html b/javadoc/software/amazon/lambda/durable/retry/class-use/JitterStrategy.html
    new file mode 100644
    index 000000000..a56ae111c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/JitterStrategy.html
    @@ -0,0 +1,128 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Enum Class software.amazon.lambda.durable.retry.JitterStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, enum: JitterStrategy">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Enum Class software.amazon.lambda.durable.retry.JitterStrategy" class="title">Uses of Enum Class<br>software.amazon.lambda.durable.retry.JitterStrategy</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<h2>Uses of <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a> in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> that return <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">JitterStrategy.</span><code><a href="../JitterStrategy.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>[]</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">JitterStrategy.</span><code><a href="../JitterStrategy.html#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> with parameters of type <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">PollingStrategies.</span><code><a href="../PollingStrategies.html#exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)" class="member-name-link">exponentialBackoff</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;baseInterval,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxInterval)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an exponential backoff polling strategy.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RetryStrategies.</span><code><a href="../RetryStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an exponential backoff retry strategy.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitStrategies.</span><code><a href="../WaitStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an exponential backoff wait strategy.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.Presets.html
    new file mode 100644
    index 000000000..8f7232c7e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.Presets.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.PollingStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: PollingStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../PollingStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.PollingStrategies.Presets" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.PollingStrategies.Presets</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.PollingStrategies.Presets</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.html b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.html
    new file mode 100644
    index 000000000..59ba08f0f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategies.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.PollingStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: PollingStrategies">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.PollingStrategies" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.PollingStrategies</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.PollingStrategies</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategy.html b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategy.html
    new file mode 100644
    index 000000000..9185e9d29
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/PollingStrategy.html
    @@ -0,0 +1,144 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.retry.PollingStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, interface: PollingStrategy">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.retry.PollingStrategy" class="title">Uses of Interface<br>software.amazon.lambda.durable.retry.PollingStrategy</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../../DurableConfig.html#getPollingStrategy()" class="member-name-link">getPollingStrategy</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the polling strategy.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../../DurableConfig.Builder.html#withPollingStrategy(software.amazon.lambda.durable.retry.PollingStrategy)" class="member-name-link">withPollingStrategy</a><wbr>(<a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a>&nbsp;pollingStrategy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the polling strategy.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<h2>Uses of <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a> in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a></h2>
    +<div class="caption"><span>Fields in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> declared as <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">PollingStrategies.Presets.</span><code><a href="../PollingStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
    + second</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> that return <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">PollingStrategies.</span><code><a href="../PollingStrategies.html#at(java.time.Instant)" class="member-name-link">at</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;instant)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a polling strategy that polls at a specific instant in time.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">PollingStrategies.</span><code><a href="../PollingStrategies.html#exponentialBackoff(java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy,java.time.Duration)" class="member-name-link">exponentialBackoff</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;baseInterval,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxInterval)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an exponential backoff polling strategy.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">PollingStrategies.</span><code><a href="../PollingStrategies.html#fixedDelay(java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a fixed-delay polling strategy that uses the same interval for every attempt.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/RetryDecision.html b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryDecision.html
    new file mode 100644
    index 000000000..d93b0d73e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryDecision.html
    @@ -0,0 +1,101 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.RetryDecision (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: RetryDecision">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.RetryDecision" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.RetryDecision</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<h2>Uses of <a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a> in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> that return <a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RetryDecision.</span><code><a href="../RetryDecision.html#fail()" class="member-name-link">fail</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a retry decision indicating the operation should not be retried.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RetryStrategy.</span><code><a href="../RetryStrategy.html#makeRetryDecision(java.lang.Throwable,int)" class="member-name-link">makeRetryDecision</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;error,
    + int&nbsp;attempt)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Determines whether to retry a failed operation and calculates the retry delay.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="../RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RetryDecision.</span><code><a href="../RetryDecision.html#retry(java.time.Duration)" class="member-name-link">retry</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;delay)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a retry decision indicating the operation should be retried after the specified delay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.Presets.html
    new file mode 100644
    index 000000000..1df0d598c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.Presets.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.RetryStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: RetryStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.RetryStrategies.Presets" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.RetryStrategies.Presets</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.RetryStrategies.Presets</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.html b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.html
    new file mode 100644
    index 000000000..4b22f85e6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategies.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.RetryStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: RetryStrategies">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.RetryStrategies" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.RetryStrategies</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.RetryStrategies</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategy.html b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategy.html
    new file mode 100644
    index 000000000..a0dddf6fc
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/RetryStrategy.html
    @@ -0,0 +1,157 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.retry.RetryStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, interface: RetryStrategy">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.retry.RetryStrategy" class="title">Uses of Interface<br>software.amazon.lambda.durable.retry.RetryStrategy</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a> in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.</span><code><a href="../../config/StepConfig.html#retryStrategy()" class="member-name-link">retryStrategy</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the retry strategy for this step, or the default strategy if not specified.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../../config/StepConfig.Builder.html#retryStrategy(software.amazon.lambda.durable.retry.RetryStrategy)" class="member-name-link">retryStrategy</a><wbr>(<a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the retry strategy for the step.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../config/StepConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy,
    + <a href="../../config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<h2>Uses of <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a> in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a></h2>
    +<div class="caption"><span>Fields in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> declared as <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RetryStrategies.Presets.</span><code><a href="../RetryStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
    + seconds - Backoff rate: 2x - Jitter: FULL</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RetryStrategies.Presets.</span><code><a href="../RetryStrategies.Presets.html#NO_RETRY" class="member-name-link">NO_RETRY</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">No retry strategy - fails immediately on first error.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> that return <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">RetryStrategies.</span><code><a href="../RetryStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an exponential backoff retry strategy.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="../RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RetryStrategies.</span><code><a href="../RetryStrategies.html#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a simple retry strategy that retries a fixed number of times with a fixed delay.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/WaitForConditionWaitStrategy.html b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitForConditionWaitStrategy.html
    new file mode 100644
    index 000000000..c882eb82d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitForConditionWaitStrategy.html
    @@ -0,0 +1,146 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, interface: WaitForConditionWaitStrategy">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy" class="title">Uses of Interface<br>software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a> in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="../../config/WaitForConditionConfig.html" title="type parameter in WaitForConditionConfig">T</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.</span><code><a href="../../config/WaitForConditionConfig.html#waitStrategy()" class="member-name-link">waitStrategy</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the wait strategy that controls polling behavior.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../../config/WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../../config/WaitForConditionConfig.Builder.html#waitStrategy(software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy)" class="member-name-link">waitStrategy</a><wbr>(<a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;<a href="../../config/WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;&nbsp;waitStrategy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets the wait strategy for the waitForCondition operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<h2>Uses of <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a> in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a></h2>
    +<div class="caption"><span>Fields in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> declared as <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitStrategies.Presets.</span><code><a href="../WaitStrategies.Presets.html#DEFAULT" class="member-name-link">DEFAULT</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
    + backoff rate, and FULL jitter.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.retry</a> that return <a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitStrategies.</span><code><a href="../WaitStrategies.html#defaultStrategy()" class="member-name-link">defaultStrategy</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the default wait strategy.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitStrategies.</span><code><a href="../WaitStrategies.html#exponentialBackoff(int,java.time.Duration,java.time.Duration,double,software.amazon.lambda.durable.retry.JitterStrategy)" class="member-name-link">exponentialBackoff</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;initialDelay,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;maxDelay,
    + double&nbsp;backoffRate,
    + <a href="../JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a>&nbsp;jitter)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates an exponential backoff wait strategy.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;T&gt;&nbsp;<a href="../WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">WaitStrategies.</span><code><a href="../WaitStrategies.html#fixedDelay(int,java.time.Duration)" class="member-name-link">fixedDelay</a><wbr>(int&nbsp;maxAttempts,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;fixedDelay)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.Presets.html b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.Presets.html
    new file mode 100644
    index 000000000..89d688003
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.Presets.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.WaitStrategies.Presets (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: WaitStrategies, class: Presets">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.WaitStrategies.Presets" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.WaitStrategies.Presets</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.WaitStrategies.Presets</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.html b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.html
    new file mode 100644
    index 000000000..b3297e148
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/class-use/WaitStrategies.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.retry.WaitStrategies (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry, class: WaitStrategies">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.retry.WaitStrategies" class="title">Uses of Class<br>software.amazon.lambda.durable.retry.WaitStrategies</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.retry.WaitStrategies</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/package-summary.html b/javadoc/software/amazon/lambda/durable/retry/package-summary.html
    new file mode 100644
    index 000000000..834bf6bd0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/package-summary.html
    @@ -0,0 +1,147 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.retry (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.retry">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.retry" class="title">Package software.amazon.lambda.durable.retry</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.retry</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab3"><a href="JitterStrategy.html" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab3">
    +<div class="block">Jitter strategy for retry delays to prevent thundering herd problems.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PollingStrategies.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Factory class for creating common polling strategies.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PollingStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Preset polling strategies for common use cases.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PollingStrategy.html" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="RetryDecision.html" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Represents a decision about whether to retry a failed operation and how long to wait.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RetryStrategies.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Factory class for creating common retry strategies.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="RetryStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Preset retry strategies for common use cases.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">Functional interface for determining retry behavior when operations fail.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WaitStrategies.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Factory class for creating common <a href="WaitForConditionWaitStrategy.html" title="interface in software.amazon.lambda.durable.retry"><code>WaitForConditionWaitStrategy</code></a> implementations.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="WaitStrategies.Presets.html" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Preset wait strategies for common use cases.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/package-tree.html b/javadoc/software/amazon/lambda/durable/retry/package-tree.html
    new file mode 100644
    index 000000000..be2701a78
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/package-tree.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.retry Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.retry">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.retry</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="PollingStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="PollingStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">PollingStrategies.Presets</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="RetryDecision.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryDecision</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="RetryStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="RetryStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">RetryStrategies.Presets</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="WaitStrategies.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="WaitStrategies.Presets.html" class="type-name-link" title="class in software.amazon.lambda.durable.retry">WaitStrategies.Presets</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="PollingStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">PollingStrategy</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="RetryStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a></li>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="WaitForConditionWaitStrategy.html" class="type-name-link" title="interface in software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a>&lt;T&gt;</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.retry.<a href="JitterStrategy.html" class="type-name-link" title="enum class in software.amazon.lambda.durable.retry">JitterStrategy</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/retry/package-use.html b/javadoc/software/amazon/lambda/durable/retry/package-use.html
    new file mode 100644
    index 000000000..ca5c420c2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/retry/package-use.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.retry (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.retry">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.retry" class="title">Uses of Package<br>software.amazon.lambda.durable.retry</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.retry</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.retry">software.amazon.lambda.durable.retry</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.retry</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/PollingStrategy.html#software.amazon.lambda.durable">PollingStrategy</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.retry</a> used by <a href="../config/package-summary.html">software.amazon.lambda.durable.config</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/RetryStrategy.html#software.amazon.lambda.durable.config">RetryStrategy</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Functional interface for determining retry behavior when operations fail.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/WaitForConditionWaitStrategy.html#software.amazon.lambda.durable.config">WaitForConditionWaitStrategy</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.retry">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.retry</a> used by <a href="package-summary.html">software.amazon.lambda.durable.retry</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/JitterStrategy.html#software.amazon.lambda.durable.retry">JitterStrategy</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Jitter strategy for retry delays to prevent thundering herd problems.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/PollingStrategy.html#software.amazon.lambda.durable.retry">PollingStrategy</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Functional interface for computing polling delays between attempts.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/RetryDecision.html#software.amazon.lambda.durable.retry">RetryDecision</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Represents a decision about whether to retry a failed operation and how long to wait.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/RetryStrategy.html#software.amazon.lambda.durable.retry">RetryStrategy</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Functional interface for determining retry behavior when operations fail.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/WaitForConditionWaitStrategy.html#software.amazon.lambda.durable.retry">WaitForConditionWaitStrategy</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Strategy that computes the delay before the next polling attempt in a <code>waitForCondition</code> operation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/AwsSdkV2Module.html b/javadoc/software/amazon/lambda/durable/serde/AwsSdkV2Module.html
    new file mode 100644
    index 000000000..93273116e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/AwsSdkV2Module.html
    @@ -0,0 +1,177 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>AwsSdkV2Module (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.serde, class: AwsSdkV2Module">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/AwsSdkV2Module.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<h1 title="Class AwsSdkV2Module" class="title">Class AwsSdkV2Module</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">com.fasterxml.jackson.databind.Module
    +<div class="inheritance">com.fasterxml.jackson.databind.module.SimpleModule
    +<div class="inheritance">software.amazon.lambda.durable.serde.AwsSdkV2Module</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.fasterxml.jackson.core.Versioned</code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AwsSdkV2Module</span>
    +<span class="extends-implements">extends com.fasterxml.jackson.databind.module.SimpleModule</span></div>
    +<div class="block">Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.
    +
    + <p>AWS SDK v2 model classes use an immutable builder pattern that Jackson cannot handle natively. This module bridges
    + the gap by serializing via <code>toBuilder()</code> and deserializing via <code>serializableBuilderClass()</code>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#software.amazon.lambda.durable.serde.AwsSdkV2Module">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-com.fasterxml.jackson.databind.Module">Nested classes/interfaces inherited from class&nbsp;com.fasterxml.jackson.databind.Module</h2>
    +<code>com.fasterxml.jackson.databind.Module.SetupContext</code></div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-com.fasterxml.jackson.databind.module.SimpleModule">Fields inherited from class&nbsp;com.fasterxml.jackson.databind.module.SimpleModule</h3>
    +<code>_abstractTypes, _deserializerModifier, _deserializers, _hasExplicitName, _keyDeserializers, _keySerializers, _mixins, _name, _namingStrategy, _serializerModifier, _serializers, _subtypes, _valueInstantiators, _version</code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AwsSdkV2Module</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-com.fasterxml.jackson.databind.module.SimpleModule">Methods inherited from class&nbsp;com.fasterxml.jackson.databind.module.SimpleModule</h3>
    +<code>_checkNotNull, addAbstractTypeMapping, addDeserializer, addKeyDeserializer, addKeySerializer, addSerializer, addSerializer, addValueInstantiator, getModuleName, getTypeId, registerSubtypes, registerSubtypes, registerSubtypes, setAbstractTypes, setDeserializerModifier, setDeserializers, setKeyDeserializers, setKeySerializers, setMixInAnnotation, setNamingStrategy, setSerializerModifier, setSerializers, setupModule, setValueInstantiators, version</code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-com.fasterxml.jackson.databind.Module">Methods inherited from class&nbsp;com.fasterxml.jackson.databind.Module</h3>
    +<code>getDependencies</code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>AwsSdkV2Module</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AwsSdkV2Module</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html b/javadoc/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html
    new file mode 100644
    index 000000000..ed21b8337
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.html
    @@ -0,0 +1,209 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>DurableInputOutputSerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.serde, class: DurableInputOutputSerDes">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/DurableInputOutputSerDes.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<h1 title="Class DurableInputOutputSerDes" class="title">Class DurableInputOutputSerDes</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.serde.DurableInputOutputSerDes</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DurableInputOutputSerDes</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="block">Serializer/Deserializer for Durable Execution Input and Output objects. This is for INTERNAL use only - handles
    + Lambda Durable Functions backend protocol.
    +
    + <p>Customer-facing serialization uses SerDes from DurableConfig.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DurableInputOutputSerDes</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes a JSON string to DurableExecutionInput object</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serialize(java.lang.Object)" class="member-name-link">serialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Serializes an object to a JSON string.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>DurableInputOutputSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DurableInputOutputSerDes</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serialize(java.lang.Object)">
    +<h3>serialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">serialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</span></div>
    +<div class="block">Serializes an object to a JSON string.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerDes.html#serialize(java.lang.Object)">serialize</a></code>&nbsp;in interface&nbsp;<code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the object to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>the JSON string representation, or null if value is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">
    +<h3>deserialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">deserialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</span></div>
    +<div class="block">Deserializes a JSON string to DurableExecutionInput object</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">deserialize</a></code>&nbsp;in interface&nbsp;<code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the target type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>data</code> - the JSON string to deserialize</dd>
    +<dd><code>typeToken</code> - the type token of DurableExecutionInput</dd>
    +<dt>Returns:</dt>
    +<dd>the deserialized object, or null if data is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/JacksonSerDes.html b/javadoc/software/amazon/lambda/durable/serde/JacksonSerDes.html
    new file mode 100644
    index 000000000..e8068fc73
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/JacksonSerDes.html
    @@ -0,0 +1,242 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>JacksonSerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.serde, class: JacksonSerDes">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/JacksonSerDes.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<h1 title="Class JacksonSerDes" class="title">Class JacksonSerDes</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.serde.JacksonSerDes</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">JacksonSerDes</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="block">Jackson-based implementation of <a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde"><code>SerDes</code></a>.
    +
    + <p>This implementation uses Jackson's ObjectMapper for JSON serialization and deserialization.
    +
    + <p>Features:
    +
    + <ul>
    +   <li>Java 8 time types support (Duration, Instant, LocalDateTime, etc.)
    +   <li>Dates serialized as ISO-8601 strings (not timestamps)
    +   <li>Unknown properties ignored during deserialization
    +   <li>Type cache for improved performance with generic types
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">JacksonSerDes</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a new JacksonSerDes with default ObjectMapper configuration.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(com.fasterxml.jackson.databind.ObjectMapper)" class="member-name-link">JacksonSerDes</a><wbr>(com.fasterxml.jackson.databind.ObjectMapper&nbsp;objectMapper)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a new JacksonSerDes with a custom ObjectMapper configuration.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serialize(java.lang.Object)" class="member-name-link">serialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Serializes an object to a JSON string.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>JacksonSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">JacksonSerDes</span>()</div>
    +<div class="block">Creates a new JacksonSerDes with default ObjectMapper configuration.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(com.fasterxml.jackson.databind.ObjectMapper)">
    +<h3>JacksonSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">JacksonSerDes</span><wbr><span class="parameters">(com.fasterxml.jackson.databind.ObjectMapper&nbsp;objectMapper)</span></div>
    +<div class="block">Creates a new JacksonSerDes with a custom ObjectMapper configuration.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serialize(java.lang.Object)">
    +<h3>serialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">serialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="SerDes.html#serialize(java.lang.Object)">SerDes</a></code></span></div>
    +<div class="block">Serializes an object to a JSON string.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerDes.html#serialize(java.lang.Object)">serialize</a></code>&nbsp;in interface&nbsp;<code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the object to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>the JSON string representation, or null if value is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">
    +<h3>deserialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">deserialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="SerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">SerDes</a></code></span></div>
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.
    +
    + <p>This method supports complex generic types like <code>List&lt;MyObject&gt;</code> or <code>Map&lt;String, MyObject&gt;</code> that
    + cannot be represented by a simple <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link"><code>Class</code></a> object.
    +
    + <p>Usage example:
    +
    + <pre><code>
    + List&lt;String&gt; items = serDes.deserialize(json, new TypeToken&lt;List&lt;String&gt;&gt;() {});
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="SerDes.html#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">deserialize</a></code>&nbsp;in interface&nbsp;<code><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></dd>
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the target type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>data</code> - the JSON string to deserialize</dd>
    +<dd><code>typeToken</code> - the type token capturing the generic type information</dd>
    +<dt>Returns:</dt>
    +<dd>the deserialized object, or null if data is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/SerDes.html b/javadoc/software/amazon/lambda/durable/serde/SerDes.html
    new file mode 100644
    index 000000000..8ca63b7d3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/SerDes.html
    @@ -0,0 +1,178 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>SerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.serde, interface: SerDes">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/SerDes.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.serde</a></div>
    +<h1 title="Interface SerDes" class="title">Interface SerDes</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></code>, <code><a href="JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">SerDes</span></div>
    +<div class="block">Interface for serialization and deserialization of objects.
    +
    + <p>Implementations must support both simple types via <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link"><code>Class</code></a> and complex generic types via <a href="../TypeToken.html" title="class in software.amazon.lambda.durable"><code>TypeToken</code></a>.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)" class="member-name-link">deserialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#serialize(java.lang.Object)" class="member-name-link">serialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Serializes an object to a JSON string.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serialize(java.lang.Object)">
    +<h3>serialize</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">serialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;value)</span></div>
    +<div class="block">Serializes an object to a JSON string.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the object to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>the JSON string representation, or null if value is null</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserialize(java.lang.String,software.amazon.lambda.durable.TypeToken)">
    +<h3>deserialize</h3>
    +<div class="member-signature"><span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">deserialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;data,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;typeToken)</span></div>
    +<div class="block">Deserializes a JSON string to an object of the specified generic type.
    +
    + <p>This method supports complex generic types like <code>List&lt;MyObject&gt;</code> or <code>Map&lt;String, MyObject&gt;</code> that
    + cannot be represented by a simple <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link"><code>Class</code></a> object.
    +
    + <p>Usage example:
    +
    + <pre><code>
    + List&lt;String&gt; items = serDes.deserialize(json, new TypeToken&lt;List&lt;String&gt;&gt;() {});
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the target type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>data</code> - the JSON string to deserialize</dd>
    +<dd><code>typeToken</code> - the type token capturing the generic type information</dd>
    +<dt>Returns:</dt>
    +<dd>the deserialized object, or null if data is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/class-use/AwsSdkV2Module.html b/javadoc/software/amazon/lambda/durable/serde/class-use/AwsSdkV2Module.html
    new file mode 100644
    index 000000000..2da449fa6
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/class-use/AwsSdkV2Module.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.serde.AwsSdkV2Module (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.serde, class: AwsSdkV2Module">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../AwsSdkV2Module.html" title="class in software.amazon.lambda.durable.serde">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.serde.AwsSdkV2Module" class="title">Uses of Class<br>software.amazon.lambda.durable.serde.AwsSdkV2Module</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.serde.AwsSdkV2Module</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/class-use/DurableInputOutputSerDes.html b/javadoc/software/amazon/lambda/durable/serde/class-use/DurableInputOutputSerDes.html
    new file mode 100644
    index 000000000..73dedd64b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/class-use/DurableInputOutputSerDes.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.serde.DurableInputOutputSerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.serde, class: DurableInputOutputSerDes">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.serde.DurableInputOutputSerDes" class="title">Uses of Class<br>software.amazon.lambda.durable.serde.DurableInputOutputSerDes</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.serde.DurableInputOutputSerDes</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/class-use/JacksonSerDes.html b/javadoc/software/amazon/lambda/durable/serde/class-use/JacksonSerDes.html
    new file mode 100644
    index 000000000..5ac82488e
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/class-use/JacksonSerDes.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.serde.JacksonSerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.serde, class: JacksonSerDes">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.serde.JacksonSerDes" class="title">Uses of Class<br>software.amazon.lambda.durable.serde.JacksonSerDes</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.serde.JacksonSerDes</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/class-use/SerDes.html b/javadoc/software/amazon/lambda/durable/serde/class-use/SerDes.html
    new file mode 100644
    index 000000000..2016604cd
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/class-use/SerDes.html
    @@ -0,0 +1,416 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Interface software.amazon.lambda.durable.serde.SerDes (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.serde, interface: SerDes">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Interface software.amazon.lambda.durable.serde.SerDes" class="title">Uses of Interface<br>software.amazon.lambda.durable.serde.SerDes</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.serde">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.util">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../package-summary.html">software.amazon.lambda.durable</a></h2>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> that return <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.</span><code><a href="../../DurableConfig.html#getSerDes()" class="member-name-link">getSerDes</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Gets the configured SerDes.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../package-summary.html">software.amazon.lambda.durable</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../DurableConfig.Builder.html" title="class in software.amazon.lambda.durable">DurableConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">DurableConfig.Builder.</span><code><a href="../../DurableConfig.Builder.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom SerDes implementation.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a></h2>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> that return <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.</span><code><a href="../../config/InvokeConfig.html#payloadSerDes()" class="member-name-link">payloadSerDes</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CallbackConfig.</span><code><a href="../../config/CallbackConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the custom serializer for this callback, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.</span><code><a href="../../config/InvokeConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapConfig.</span><code><a href="../../config/MapConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelBranchConfig.</span><code><a href="../../config/ParallelBranchConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RunInChildContextConfig.</span><code><a href="../../config/RunInChildContextConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
    + SerDes).</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.</span><code><a href="../../config/StepConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the custom serializer for this step, or null if not specified (uses default SerDes).</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionConfig.</span><code><a href="../../config/WaitForConditionConfig.html#serDes()" class="member-name-link">serDes</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the custom serializer, or null if not specified (uses default SerDes).</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../../config/InvokeConfig.Builder.html#payloadSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">payloadSerDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;payloadSerDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the invoke operation payload.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../../config/CallbackConfig.Builder.html" title="class in software.amazon.lambda.durable.config">CallbackConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CallbackConfig.Builder.</span><code><a href="../../config/CallbackConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the callback.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../../config/InvokeConfig.Builder.html" title="class in software.amazon.lambda.durable.config">InvokeConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">InvokeConfig.Builder.</span><code><a href="../../config/InvokeConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the invoke result.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../../config/MapConfig.Builder.html" title="class in software.amazon.lambda.durable.config">MapConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">MapConfig.Builder.</span><code><a href="../../config/MapConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets the custom serializer to use for serializing map items and results.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../../config/ParallelBranchConfig.Builder.html" title="class in software.amazon.lambda.durable.config">ParallelBranchConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ParallelBranchConfig.Builder.</span><code><a href="../../config/ParallelBranchConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../../config/RunInChildContextConfig.Builder.html" title="class in software.amazon.lambda.durable.config">RunInChildContextConfig.Builder</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">RunInChildContextConfig.Builder.</span><code><a href="../../config/RunInChildContextConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../../config/StepConfig.Builder.html" title="class in software.amazon.lambda.durable.config">StepConfig.Builder</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">StepConfig.Builder.</span><code><a href="../../config/StepConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Sets a custom serializer for the step.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../../config/WaitForConditionConfig.Builder.html" title="class in software.amazon.lambda.durable.config">WaitForConditionConfig.Builder</a>&lt;<a href="../../config/WaitForConditionConfig.Builder.html" title="type parameter in WaitForConditionConfig.Builder">T</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">WaitForConditionConfig.Builder.</span><code><a href="../../config/WaitForConditionConfig.Builder.html#serDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">serDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Sets a custom serializer for the waitForCondition operation.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../config/package-summary.html">software.amazon.lambda.durable.config</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../config/CallbackConfig.Builder.html#%3Cinit%3E(java.time.Duration,java.time.Duration,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;heartbeatTimeout,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../config/ParallelBranchConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../config/RunInChildContextConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../config/StepConfig.Builder.html#%3Cinit%3E(software.amazon.lambda.durable.retry.RetryStrategy,software.amazon.lambda.durable.config.StepSemantics,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">Builder</a><wbr>(<a href="../../retry/RetryStrategy.html" title="interface in software.amazon.lambda.durable.retry">RetryStrategy</a>&nbsp;retryStrategy,
    + <a href="../../config/StepSemantics.html" title="enum class in software.amazon.lambda.durable.config">StepSemantics</a>&nbsp;semantics,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a></h2>
    +<div class="caption"><span>Methods in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#createItem(java.lang.String,java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">createItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;parentContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a child context operation for a single item (branch or iteration).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected &lt;R&gt;&nbsp;<a href="../../operation/ChildContextOperation.html" title="class in software.amazon.lambda.durable.operation">ChildContextOperation</a>&lt;R&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">ConcurrencyOperation.</span><code><a href="../../operation/ConcurrencyOperation.html#enqueueItem(java.lang.String,java.util.function.Function,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.model.OperationSubType)" class="member-name-link">enqueueItem</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>R&gt;&nbsp;function,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;R&gt;&nbsp;resultType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="../../model/OperationSubType.html" title="enum class in software.amazon.lambda.durable.model">OperationSubType</a>&nbsp;branchSubType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates and enqueues an item without starting execution.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../operation/package-summary.html">software.amazon.lambda.durable.operation</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/ConcurrencyOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,int,java.lang.Integer,java.lang.Integer)" class="member-name-link">ConcurrencyOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/ConcurrencyOperation.html" title="type parameter in ConcurrencyOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + int&nbsp;maxConcurrency,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;minSuccessful,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;toleratedFailureCount)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/ParallelOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.config.ParallelConfig)" class="member-name-link">ParallelOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../config/ParallelConfig.html" title="class in software.amazon.lambda.durable.config">ParallelConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>protected </code></div>
    +<div class="col-second even-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructs a new durable operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>protected </code></div>
    +<div class="col-second odd-row-color"><code><a href="../../operation/SerializableDurableOperation.html#%3Cinit%3E(software.amazon.lambda.durable.model.OperationIdentifier,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,software.amazon.lambda.durable.context.DurableContextImpl,software.amazon.lambda.durable.operation.BaseDurableOperation)" class="member-name-link">SerializableDurableOperation</a><wbr>(<a href="../../model/OperationIdentifier.html" title="class in software.amazon.lambda.durable.model">OperationIdentifier</a>&nbsp;operationIdentifier,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../operation/SerializableDurableOperation.html" title="type parameter in SerializableDurableOperation">T</a>&gt;&nbsp;resultTypeToken,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;resultSerDes,
    + <a href="../../context/DurableContextImpl.html" title="class in software.amazon.lambda.durable.context">DurableContextImpl</a>&nbsp;durableContext,
    + <a href="../../operation/BaseDurableOperation.html" title="class in software.amazon.lambda.durable.operation">BaseDurableOperation</a>&nbsp;parentOperation)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.serde">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../package-summary.html">software.amazon.lambda.durable.serde</a></h2>
    +<div class="caption"><span>Classes in <a href="../package-summary.html">software.amazon.lambda.durable.serde</a> that implement <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../DurableInputOutputSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Serializer/Deserializer for Durable Execution Input and Output objects.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../JacksonSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Jackson-based implementation of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde"><code>SerDes</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../../testing/CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../../testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../../testing/CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../../testing/CloudDurableTestRunner.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Constructors in <a href="../../testing/package-summary.html">software.amazon.lambda.durable.testing</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../testing/AsyncExecution.html#%3Cinit%3E(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)" class="member-name-link">AsyncExecution</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../testing/AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&nbsp;outputType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../testing/TestOperation.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.util.List,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../../testing/TestOperation.html#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="../../testing/TestResult.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult</a><wbr>(<a href="../../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../testing/TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../../testing/TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></h2>
    +<div class="caption"><span>Methods in <a href="../../testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">HistoryEventProcessor.</span><code><a href="../../testing/cloud/HistoryEventProcessor.html#processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">processEvents</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Processes a list of execution history events into a structured <a href="../../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Methods in <a href="../../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../../testing/TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../../testing/local/LocalMemoryExecutionClient.html#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult</a><wbr>(<a href="../../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Build TestResult from current state.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.util">
    +<h2>Uses of <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a> in <a href="../../util/package-summary.html">software.amazon.lambda.durable.util</a></h2>
    +<div class="caption"><span>Methods in <a href="../../util/package-summary.html">software.amazon.lambda.durable.util</a> with parameters of type <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">ExceptionHelper.</span><code><a href="../../util/ExceptionHelper.html#buildErrorObject(java.lang.Throwable,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">buildErrorObject</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable,
    + <a href="../SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">build an ErrorObject from a Throwable</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/package-summary.html b/javadoc/software/amazon/lambda/durable/serde/package-summary.html
    new file mode 100644
    index 000000000..302fabbf3
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/package-summary.html
    @@ -0,0 +1,119 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.serde (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.serde">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.serde" class="title">Package software.amazon.lambda.durable.serde</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.serde</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AwsSdkV2Module.html" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DurableInputOutputSerDes.html" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Serializer/Deserializer for Durable Execution Input and Output objects.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JacksonSerDes.html" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Jackson-based implementation of <a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde"><code>SerDes</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/package-tree.html b/javadoc/software/amazon/lambda/durable/serde/package-tree.html
    new file mode 100644
    index 000000000..5a29449d7
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/package-tree.html
    @@ -0,0 +1,93 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.serde Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.serde">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.serde</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="DurableInputOutputSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">DurableInputOutputSerDes</a> (implements software.amazon.lambda.durable.serde.<a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>)</li>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="JacksonSerDes.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">JacksonSerDes</a> (implements software.amazon.lambda.durable.serde.<a href="SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>)</li>
    +<li class="circle">com.fasterxml.jackson.databind.Module (implements com.fasterxml.jackson.core.Versioned)
    +<ul>
    +<li class="circle">com.fasterxml.jackson.databind.module.SimpleModule (implements java.io.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="AwsSdkV2Module.html" class="type-name-link" title="class in software.amazon.lambda.durable.serde">AwsSdkV2Module</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.serde.<a href="SerDes.html" class="type-name-link" title="interface in software.amazon.lambda.durable.serde">SerDes</a></li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/serde/package-use.html b/javadoc/software/amazon/lambda/durable/serde/package-use.html
    new file mode 100644
    index 000000000..07240a459
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/serde/package-use.html
    @@ -0,0 +1,192 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.serde (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.serde">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.serde" class="title">Uses of Package<br>software.amazon.lambda.durable.serde</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.serde</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.config">software.amazon.lambda.durable.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.operation">software.amazon.lambda.durable.operation</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.serde">software.amazon.lambda.durable.serde</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.util">software.amazon.lambda.durable.util</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../package-summary.html">software.amazon.lambda.durable</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.config">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../config/package-summary.html">software.amazon.lambda.durable.config</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.config">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.operation">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../operation/package-summary.html">software.amazon.lambda.durable.operation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.operation">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.serde">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="package-summary.html">software.amazon.lambda.durable.serde</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.serde">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../testing/package-summary.html">software.amazon.lambda.durable.testing</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.testing">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../testing/cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.testing.cloud">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../testing/local/package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.testing.local">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.util">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.serde</a> used by <a href="../util/package-summary.html">software.amazon.lambda.durable.util</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/SerDes.html#software.amazon.lambda.durable.util">SerDes</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface for serialization and deserialization of objects.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/AsyncExecution.html b/javadoc/software/amazon/lambda/durable/testing/AsyncExecution.html
    new file mode 100644
    index 000000000..405849e1d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/AsyncExecution.html
    @@ -0,0 +1,345 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>AsyncExecution (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing, class: AsyncExecution">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/AsyncExecution.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<h1 title="Class AsyncExecution" class="title">Class AsyncExecution&lt;O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.AsyncExecution&lt;O&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AsyncExecution&lt;O&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Handle for an asynchronously executing durable function. Allows incremental polling and inspection of execution
    + state.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)" class="member-name-link">AsyncExecution</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&nbsp;outputType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completeCallback(java.lang.String,java.lang.String)" class="member-name-link">completeCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">calls sendDurableExecutionCallbackSuccess with the given callbackId and result</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">calls sendDurableExecutionCallbackFailure with the give callbackId and error</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get the callback ID for a callback operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionArn()" class="member-name-link">getExecutionArn</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get the execution ARN.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get details for a specific operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperations()" class="member-name-link">getOperations</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get all operations in the execution.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get current execution status.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasCallback(java.lang.String)" class="member-name-link">hasCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Check if a callback operation with the given name exists and is started.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasOperation(java.lang.String)" class="member-name-link">hasOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Check if an operation with the given name exists.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#heartbeatCallback(java.lang.String)" class="member-name-link">heartbeatCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">call sendDurableExecutionCallbackHeartbeat API with the give callbackId</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isComplete()" class="member-name-link">isComplete</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Check if execution has completed (succeeded or failed).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollUntil(java.util.function.Predicate)" class="member-name-link">pollUntil</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&gt;&nbsp;condition)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Poll execution history until the given condition is met.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollUntilComplete()" class="member-name-link">pollUntilComplete</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Poll until execution completes and return the final result.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,software.amazon.awssdk.services.lambda.LambdaClient,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes,java.time.Duration,java.time.Duration)">
    +<h3>AsyncExecution</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AsyncExecution</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&nbsp;outputType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="pollUntil(java.util.function.Predicate)">
    +<h3>pollUntil</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</span>&nbsp;<span class="element-name">pollUntil</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&gt;&nbsp;condition)</span></div>
    +<div class="block">Poll execution history until the given condition is met.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>condition</code> - predicate to test on each poll</dd>
    +<dt>Returns:</dt>
    +<dd>this execution for chaining</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pollUntilComplete()">
    +<h3>pollUntilComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</span>&nbsp;<span class="element-name">pollUntilComplete</span>()</div>
    +<div class="block">Poll until execution completes and return the final result.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>test result with execution status and output</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isComplete()">
    +<h3>isComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isComplete</span>()</div>
    +<div class="block">Check if execution has completed (succeeded or failed).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hasOperation(java.lang.String)">
    +<h3>hasOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Check if an operation with the given name exists.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hasCallback(java.lang.String)">
    +<h3>hasCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Check if a callback operation with the given name exists and is started.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCallbackId(java.lang.String)">
    +<h3>getCallbackId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getCallbackId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</span></div>
    +<div class="block">Get the callback ID for a callback operation.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationName</code> - name of the callback operation</dd>
    +<dt>Returns:</dt>
    +<dd>callback ID</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if no callback found for operation</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation(java.lang.String)">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span>&nbsp;<span class="element-name">getOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Get details for a specific operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperations()">
    +<h3>getOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</span>&nbsp;<span class="element-name">getOperations</span>()</div>
    +<div class="block">Get all operations in the execution.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStatus()">
    +<h3>getStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">getStatus</span>()</div>
    +<div class="block">Get current execution status.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionArn()">
    +<h3>getExecutionArn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getExecutionArn</span>()</div>
    +<div class="block">Get the execution ARN.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completeCallback(java.lang.String,java.lang.String)">
    +<h3>completeCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completeCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +<div class="block">calls sendDurableExecutionCallbackSuccess with the given callbackId and result</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>failCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">failCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">calls sendDurableExecutionCallbackFailure with the give callbackId and error</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="heartbeatCallback(java.lang.String)">
    +<h3>heartbeatCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">heartbeatCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId)</span></div>
    +<div class="block">call sendDurableExecutionCallbackHeartbeat API with the give callbackId</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/CloudDurableTestRunner.html b/javadoc/software/amazon/lambda/durable/testing/CloudDurableTestRunner.html
    new file mode 100644
    index 000000000..bc372203c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/CloudDurableTestRunner.html
    @@ -0,0 +1,323 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CloudDurableTestRunner (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing, class: CloudDurableTestRunner">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CloudDurableTestRunner.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<h1 title="Class CloudDurableTestRunner" class="title">Class CloudDurableTestRunner&lt;I,<wbr>O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.CloudDurableTestRunner&lt;I,<wbr>O&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the handler input type</dd>
    +<dd><code>O</code> - the handler output type</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CloudDurableTestRunner&lt;I,<wbr>O&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Test runner for durable Lambda functions deployed to AWS. Invokes a real Lambda function, polls execution history,
    + and returns structured test results.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a runner for the given function ARN with Class-based input/output types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.String,java.lang.Class,java.lang.Class,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and Class-based input/output types.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a runner for the given function ARN with TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given name from the last execution result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run(I)" class="member-name-link">run</a><wbr>(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runUntilComplete(I)" class="member-name-link">runUntilComplete</a><wbr>(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startAsync(I)" class="member-name-link">startAsync</a><wbr>(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Start an asynchronous execution and return a handle for incremental polling.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withInvocationType(software.amazon.awssdk.services.lambda.model.InvocationType)" class="member-name-link">withInvocationType</a><wbr>(software.amazon.awssdk.services.lambda.model.InvocationType&nbsp;type)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a new runner with the specified Lambda invocation type.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withLambdaClient(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">withLambdaClient</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a new runner with the specified lambda client.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withPollInterval(java.time.Duration)" class="member-name-link">withPollInterval</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a new runner with the specified poll interval between history checks.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withTimeout(java.time.Duration)" class="member-name-link">withTimeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a new runner with the specified maximum wait time for execution completion.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="create(java.lang.String,java.lang.Class,java.lang.Class)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType)</span></div>
    +<div class="block">Creates a runner for the given function ARN with Class-based input/output types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType)</span></div>
    +<div class="block">Creates a runner for the given function ARN with TypeToken-based input/output types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(java.lang.String,java.lang.Class,java.lang.Class,software.amazon.awssdk.services.lambda.LambdaClient)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</span></div>
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and Class-based input/output types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</span></div>
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and TypeToken-based input/output types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withLambdaClient(software.amazon.awssdk.services.lambda.LambdaClient)">
    +<h3>withLambdaClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withLambdaClient</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</span></div>
    +<div class="block">Returns a new runner with the specified lambda client.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withPollInterval(java.time.Duration)">
    +<h3>withPollInterval</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withPollInterval</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</span></div>
    +<div class="block">Returns a new runner with the specified poll interval between history checks.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withTimeout(java.time.Duration)">
    +<h3>withTimeout</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withTimeout</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span></div>
    +<div class="block">Returns a new runner with the specified maximum wait time for execution completion.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withInvocationType(software.amazon.awssdk.services.lambda.model.InvocationType)">
    +<h3>withInvocationType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withInvocationType</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.InvocationType&nbsp;type)</span></div>
    +<div class="block">Returns a new runner with the specified Lambda invocation type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withSerDes(software.amazon.lambda.durable.serde.SerDes)">
    +<h3>withSerDes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withSerDes</span><wbr><span class="parameters">(<a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runUntilComplete(I)">
    +<h3 id="runUntilComplete(java.lang.Object)">runUntilComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">runUntilComplete</span><wbr><span class="parameters">(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</span></div>
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="run(I)">
    +<h3 id="run(java.lang.Object)">run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">run</span><wbr><span class="parameters">(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</span></div>
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="startAsync(I)">
    +<h3 id="startAsync(java.lang.Object)">startAsync</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">startAsync</span><wbr><span class="parameters">(<a href="CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</span></div>
    +<div class="block">Start an asynchronous execution and return a handle for incremental polling. Use this for callback-based tests
    + where you need to interact with the execution while it's running.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - the input to the function</dd>
    +<dt>Returns:</dt>
    +<dd>execution handle for polling and inspection</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation(java.lang.String)">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span>&nbsp;<span class="element-name">getOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given name from the last execution result.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/LocalDurableTestRunner.html b/javadoc/software/amazon/lambda/durable/testing/LocalDurableTestRunner.html
    new file mode 100644
    index 000000000..fedd6dc04
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/LocalDurableTestRunner.html
    @@ -0,0 +1,577 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>LocalDurableTestRunner (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing, class: LocalDurableTestRunner">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/LocalDurableTestRunner.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<h1 title="Class LocalDurableTestRunner" class="title">Class LocalDurableTestRunner&lt;I,<wbr>O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.LocalDurableTestRunner&lt;I,<wbr>O&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - the handler input type</dd>
    +<dd><code>O</code> - the handler output type</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LocalDurableTestRunner&lt;I,<wbr>O&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">In-memory test runner for durable Lambda functions. Simulates the Lambda re-invocation loop locally without requiring
    + AWS infrastructure, enabling fast unit and integration tests.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#advanceTime()" class="member-name-link">advanceTime</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Advances all pending operations, simulating time passing for retries and waits.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completeCallback(java.lang.String,java.lang.String)" class="member-name-link">completeCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Complete a callback with success result.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completeChainedInvoke(java.lang.String,java.lang.String)" class="member-name-link">completeChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Completes a chained invoke operation with a successful result.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.Class,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Fail a callback with error.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#failChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Fails a chained invoke operation with the given error.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given operation name, or null if not found.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#resetCheckpointToStarted(java.lang.String)" class="member-name-link">resetCheckpointToStarted</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Resets a named step operation to STARTED status, simulating a checkpoint failure.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run(I)" class="member-name-link">run</a><wbr>(<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Run a single invocation (may return PENDING if waiting/retrying).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runUntilComplete(I)" class="member-name-link">runUntilComplete</a><wbr>(<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#simulateFireAndForgetCheckpointLoss(java.lang.String)" class="member-name-link">simulateFireAndForgetCheckpointLoss</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Removes a named step operation entirely, simulating loss of a fire-and-forget checkpoint.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stopChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">stopChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Stops a chained invoke operation with the given error.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#timeoutCallback(java.lang.String)" class="member-name-link">timeoutCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Timeout a callback.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#timeoutChainedInvoke(java.lang.String)" class="member-name-link">timeoutChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Marks a chained invoke operation as timed out.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withDurableConfig(software.amazon.lambda.durable.DurableConfig)" class="member-name-link">withDurableConfig</a><wbr>(<a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Overrides the DurableConfig for this test runner.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withOutputType(java.lang.Class)" class="member-name-link">withOutputType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Overrides the output type for this test runner.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withOutputType(software.amazon.lambda.durable.TypeToken)" class="member-name-link">withOutputType</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Overrides the output type for this test runner.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="create(java.lang.Class,java.util.function.BiFunction)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
    + DurableConfig.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handlerFn</code> - The handler function</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner with default configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
    + DurableConfig.
    +
    + <p>If your handler has custom configuration (custom SerDes, ExecutorService, etc.), use <a href="#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)"><code>create(TypeToken, DurableHandler)</code></a> instead to ensure the test runner uses the same configuration as your handler.
    +
    + <p>Optionally, you can also use <a href="#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)"><code>create(TypeToken, BiFunction, DurableConfig)</code></a> to pass in any
    + DurableConfig directly.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handlerFn</code> - The handler function</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner with default configuration</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
    + SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handlerFn</code> - The handler function</dd>
    +<dd><code>config</code> - The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner configured with the provided settings</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
    + SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.
    +
    + <p>Use this method when you need to pass a custom DurableConfig directly, for example when testing with a custom
    + SerDes without using a DurableHandler.
    +
    + <p>Example usage:
    +
    + <pre><code>
    + // Create a custom DurableConfig with custom SerDes
    + var config = DurableConfig.builder()
    +     .withSerDes(new MyCustomSerDes())
    +     .build();
    +
    + // Create test runner with custom configuration
    + var runner = LocalDurableTestRunner.create(
    +     String.class,
    +     (input, context) -&gt; context.step("process", String.class, stepCtx -&gt; "result"),
    +     config
    + );
    +
    + // Run test with custom configuration
    + var result = runner.run("test-input");
    + assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handlerFn</code> - The handler function</dd>
    +<dd><code>config</code> - The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner configured with the provided settings</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
    + is a convenient method when you have a handler instance and want to test it with the same configuration it uses
    + in production.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handler</code> - The DurableHandler instance to test</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner configured with the handler's settings</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withDurableConfig(software.amazon.lambda.durable.DurableConfig)">
    +<h3>withDurableConfig</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withDurableConfig</span><wbr><span class="parameters">(<a href="../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</span></div>
    +<div class="block">Overrides the DurableConfig for this test runner. Use this to test with different configurations without creating
    + a new runner instance.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withOutputType(software.amazon.lambda.durable.TypeToken)">
    +<h3>withOutputType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withOutputType</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</span></div>
    +<div class="block">Overrides the output type for this test runner.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="withOutputType(java.lang.Class)">
    +<h3>withOutputType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">withOutputType</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</span></div>
    +<div class="block">Overrides the output type for this test runner.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;I,<wbr>
    +O&gt;</span>&nbsp;<span class="return-type"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</span></div>
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
    + is a convenient method when you have a handler instance and want to test it with the same configuration it uses
    + in production.
    +
    + <p>This method automatically:
    +
    + <ul>
    +   <li>Uses the handler's configuration (SerDes, ExecutorService, etc.)
    +   <li>Overrides the DurableExecutionClient with the in-memory implementation for testing
    + </ul>
    +
    + <p>Example usage:
    +
    + <pre><code>
    + // Create handler instance
    + var handler = new MyCustomHandler();
    +
    + // Create test runner from handler (automatically extracts config)
    + var runner = LocalDurableTestRunner.create(String.class, handler);
    +
    + // Run test with the handler's configuration
    + var result = runner.run("test-input");
    + assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    + </code></pre></div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>I</code> - Input type</dd>
    +<dd><code>O</code> - Output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>inputType</code> - The input type class</dd>
    +<dd><code>handler</code> - The DurableHandler instance to test</dd>
    +<dt>Returns:</dt>
    +<dd>LocalDurableTestRunner configured with the handler's settings</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="run(I)">
    +<h3 id="run(java.lang.Object)">run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">run</span><wbr><span class="parameters">(<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</span></div>
    +<div class="block">Run a single invocation (may return PENDING if waiting/retrying).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runUntilComplete(I)">
    +<h3 id="runUntilComplete(java.lang.Object)">runUntilComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</span>&nbsp;<span class="element-name">runUntilComplete</span><wbr><span class="parameters">(<a href="LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</span></div>
    +<div class="block">Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.
    + Operations that don't require manual intervention (like WAIT in STARTED or STEP in PENDING) will be automatically
    + advanced.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>input</code> - The input to process</dd>
    +<dt>Returns:</dt>
    +<dd>Final test result (SUCCEEDED or FAILED) or PENDING if operations pending manual intervention</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="resetCheckpointToStarted(java.lang.String)">
    +<h3>resetCheckpointToStarted</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">resetCheckpointToStarted</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</span></div>
    +<div class="block">Resets a named step operation to STARTED status, simulating a checkpoint failure.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="simulateFireAndForgetCheckpointLoss(java.lang.String)">
    +<h3>simulateFireAndForgetCheckpointLoss</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">simulateFireAndForgetCheckpointLoss</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</span></div>
    +<div class="block">Removes a named step operation entirely, simulating loss of a fire-and-forget checkpoint.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation(java.lang.String)">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span>&nbsp;<span class="element-name">getOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given operation name, or null if not found.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCallbackId(java.lang.String)">
    +<h3>getCallbackId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getCallbackId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</span></div>
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completeCallback(java.lang.String,java.lang.String)">
    +<h3>completeCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completeCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +<div class="block">Complete a callback with success result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failCallback(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>failCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">failCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">Fail a callback with error.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="timeoutCallback(java.lang.String)">
    +<h3>timeoutCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">timeoutCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId)</span></div>
    +<div class="block">Timeout a callback.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="advanceTime()">
    +<h3>advanceTime</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">advanceTime</span>()</div>
    +<div class="block">Advances all pending operations, simulating time passing for retries and waits.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completeChainedInvoke(java.lang.String,java.lang.String)">
    +<h3>completeChainedInvoke</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completeChainedInvoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +<div class="block">Completes a chained invoke operation with a successful result.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="timeoutChainedInvoke(java.lang.String)">
    +<h3>timeoutChainedInvoke</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">timeoutChainedInvoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Marks a chained invoke operation as timed out.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>failChainedInvoke</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">failChainedInvoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">Fails a chained invoke operation with the given error.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stopChainedInvoke(java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>stopChainedInvoke</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">stopChainedInvoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">Stops a chained invoke operation with the given error.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/TestOperation.html b/javadoc/software/amazon/lambda/durable/testing/TestOperation.html
    new file mode 100644
    index 000000000..6136d705f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/TestOperation.html
    @@ -0,0 +1,374 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>TestOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing, class: TestOperation">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/TestOperation.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<h1 title="Class TestOperation" class="title">Class TestOperation</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.TestOperation</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TestOperation</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Wrapper for AWS SDK Operation providing convenient access methods.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,java.util.List,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestOperation</a><wbr>(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAttempt()" class="member-name-link">getAttempt</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the current retry attempt number (0-based), defaulting to 0 if not available.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.CallbackDetails</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCallbackDetails()" class="member-name-link">getCallbackDetails</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the callback details, or null if this is not a callback operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getChainedInvokeDetails()" class="member-name-link">getChainedInvokeDetails</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the chained invoke details, or null if this is not a chained invoke operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ContextDetails</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getContextDetails()" class="member-name-link">getContextDetails</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the context details, or null if this operation is not a context.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDuration()" class="member-name-link">getDuration</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the duration of the operation</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getError()" class="member-name-link">getError</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the step error, or null if the step succeeded or this is not a step operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getEvents()" class="member-name-link">getEvents</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the raw history events associated with this operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ExecutionDetails</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionDetails()" class="member-name-link">getExecutionDetails</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the execution details, or null if this operation is not an EXECUTION operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">getName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the operation name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationStatus</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the current status of this operation (e.g.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.StepDetails</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStepDetails()" class="member-name-link">getStepDetails</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the step details, or null if this is not a step operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStepResult(java.lang.Class)" class="member-name-link">getStepResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;type)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes and returns the step result as the given type.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStepResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getStepResult</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;type)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes and returns the step result using a TypeToken for generic types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSubtype()" class="member-name-link">getSubtype</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the operation's subtype</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationType</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getType()" class="member-name-link">getType</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the operation type (STEP, WAIT, CALLBACK, etc.).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.WaitDetails</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWaitDetails()" class="member-name-link">getWaitDetails</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the wait details, or null if this is not a wait operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isCompleted()" class="member-name-link">isCompleted</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns true if the operation has completed (either succeeded or failed).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>TestOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TestOperation</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.Operation,java.util.List,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>TestOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TestOperation</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.Operation&nbsp;operation,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getEvents()">
    +<h3>getEvents</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">getEvents</span>()</div>
    +<div class="block">Returns the raw history events associated with this operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getName()">
    +<h3>getName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getName</span>()</div>
    +<div class="block">Returns the operation name.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStatus()">
    +<h3>getStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationStatus</span>&nbsp;<span class="element-name">getStatus</span>()</div>
    +<div class="block">Returns the current status of this operation (e.g. STARTED, SUCCEEDED, FAILED).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getType()">
    +<h3>getType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationType</span>&nbsp;<span class="element-name">getType</span>()</div>
    +<div class="block">Returns the operation type (STEP, WAIT, CALLBACK, etc.).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSubtype()">
    +<h3>getSubtype</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getSubtype</span>()</div>
    +<div class="block">Returns the operation's subtype</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isCompleted()">
    +<h3>isCompleted</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isCompleted</span>()</div>
    +<div class="block">Returns true if the operation has completed (either succeeded or failed).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDuration()">
    +<h3>getDuration</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a></span>&nbsp;<span class="element-name">getDuration</span>()</div>
    +<div class="block">Returns the duration of the operation</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStepDetails()">
    +<h3>getStepDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.StepDetails</span>&nbsp;<span class="element-name">getStepDetails</span>()</div>
    +<div class="block">Returns the step details, or null if this is not a step operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getWaitDetails()">
    +<h3>getWaitDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.WaitDetails</span>&nbsp;<span class="element-name">getWaitDetails</span>()</div>
    +<div class="block">Returns the wait details, or null if this is not a wait operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCallbackDetails()">
    +<h3>getCallbackDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.CallbackDetails</span>&nbsp;<span class="element-name">getCallbackDetails</span>()</div>
    +<div class="block">Returns the callback details, or null if this is not a callback operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getChainedInvokeDetails()">
    +<h3>getChainedInvokeDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails</span>&nbsp;<span class="element-name">getChainedInvokeDetails</span>()</div>
    +<div class="block">Returns the chained invoke details, or null if this is not a chained invoke operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getContextDetails()">
    +<h3>getContextDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ContextDetails</span>&nbsp;<span class="element-name">getContextDetails</span>()</div>
    +<div class="block">Returns the context details, or null if this operation is not a context.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionDetails()">
    +<h3>getExecutionDetails</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ExecutionDetails</span>&nbsp;<span class="element-name">getExecutionDetails</span>()</div>
    +<div class="block">Returns the execution details, or null if this operation is not an EXECUTION operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStepResult(java.lang.Class)">
    +<h3>getStepResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">getStepResult</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;type)</span></div>
    +<div class="block">Deserializes and returns the step result as the given type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStepResult(software.amazon.lambda.durable.TypeToken)">
    +<h3>getStepResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">getStepResult</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;type)</span></div>
    +<div class="block">Deserializes and returns the step result using a TypeToken for generic types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getError()">
    +<h3>getError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">getError</span>()</div>
    +<div class="block">Returns the step error, or null if the step succeeded or this is not a step operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAttempt()">
    +<h3>getAttempt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getAttempt</span>()</div>
    +<div class="block">Returns the current retry attempt number (0-based), defaulting to 0 if not available.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/TestResult.html b/javadoc/software/amazon/lambda/durable/testing/TestResult.html
    new file mode 100644
    index 000000000..46a60b8d4
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/TestResult.html
    @@ -0,0 +1,329 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>TestResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing, class: TestResult">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/TestResult.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<h1 title="Class TestResult" class="title">Class TestResult&lt;O&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.TestResult&lt;O&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>O</code> - the handler output type</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TestResult&lt;O&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult</a><wbr>(<a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;software.amazon.awssdk.services.lambda.model.ErrorObject&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getError()" class="member-name-link">getError</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the execution error, if present.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getEventsForOperation(java.lang.String)" class="member-name-link">getEventsForOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the raw history events for the given operation name, or an empty list if not found.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFailedOperations()" class="member-name-link">getFailedOperations</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all operations that failed, were cancelled, timed out, or stopped.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getHistoryEvents()" class="member-name-link">getHistoryEvents</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all raw history events from the execution.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> with the given name, or null if not found.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperations()" class="member-name-link">getOperations</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all operations from the execution.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="TestResult.html" title="type parameter in TestResult">O</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getResult()" class="member-name-link">getResult</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes and returns the execution output if the result type is known.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getResult(java.lang.Class)" class="member-name-link">getResult</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes and returns the execution output, throwing if the execution did not succeed.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;T</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getResult(software.amazon.lambda.durable.TypeToken)" class="member-name-link">getResult</a><wbr>(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Deserializes and returns the execution output using a TypeToken for generic types.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the execution status (SUCCEEDED, FAILED, or PENDING).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSucceededOperations()" class="member-name-link">getSucceededOperations</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all operations that completed successfully.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isFailed()" class="member-name-link">isFailed</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns true if the execution failed.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSucceeded()" class="member-name-link">isSucceeded</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns true if the execution completed successfully.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>TestResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TestResult</span><wbr><span class="parameters">(<a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getStatus()">
    +<h3>getStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a></span>&nbsp;<span class="element-name">getStatus</span>()</div>
    +<div class="block">Returns the execution status (SUCCEEDED, FAILED, or PENDING).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getResult(java.lang.Class)">
    +<h3>getResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">getResult</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Deserializes and returns the execution output, throwing if the execution did not succeed.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getResult(software.amazon.lambda.durable.TypeToken)">
    +<h3>getResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">getResult</span><wbr><span class="parameters">(<a href="../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;T&gt;&nbsp;resultType)</span></div>
    +<div class="block">Deserializes and returns the execution output using a TypeToken for generic types.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getResult()">
    +<h3>getResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestResult.html" title="type parameter in TestResult">O</a></span>&nbsp;<span class="element-name">getResult</span>()</div>
    +<div class="block">Deserializes and returns the execution output if the result type is known.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getError()">
    +<h3>getError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;software.amazon.awssdk.services.lambda.model.ErrorObject&gt;</span>&nbsp;<span class="element-name">getError</span>()</div>
    +<div class="block">Returns the execution error, if present.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperations()">
    +<h3>getOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</span>&nbsp;<span class="element-name">getOperations</span>()</div>
    +<div class="block">Returns all operations from the execution.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperation(java.lang.String)">
    +<h3>getOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span>&nbsp;<span class="element-name">getOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the <a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> with the given name, or null if not found.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getHistoryEvents()">
    +<h3>getHistoryEvents</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">getHistoryEvents</span>()</div>
    +<div class="block">Returns all raw history events from the execution.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getEventsForOperation(java.lang.String)">
    +<h3>getEventsForOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">getEventsForOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</span></div>
    +<div class="block">Returns the raw history events for the given operation name, or an empty list if not found.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isSucceeded()">
    +<h3>isSucceeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSucceeded</span>()</div>
    +<div class="block">Returns true if the execution completed successfully.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isFailed()">
    +<h3>isFailed</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isFailed</span>()</div>
    +<div class="block">Returns true if the execution failed.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSucceededOperations()">
    +<h3>getSucceededOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</span>&nbsp;<span class="element-name">getSucceededOperations</span>()</div>
    +<div class="block">Returns all operations that completed successfully.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getFailedOperations()">
    +<h3>getFailedOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</span>&nbsp;<span class="element-name">getFailedOperations</span>()</div>
    +<div class="block">Returns all operations that failed, were cancelled, timed out, or stopped.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/class-use/AsyncExecution.html b/javadoc/software/amazon/lambda/durable/testing/class-use/AsyncExecution.html
    new file mode 100644
    index 000000000..a9d5725d5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/class-use/AsyncExecution.html
    @@ -0,0 +1,106 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.AsyncExecution (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing, class: AsyncExecution">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.AsyncExecution" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.AsyncExecution</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="../AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../AsyncExecution.html#pollUntil(java.util.function.Predicate)" class="member-name-link">pollUntil</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="../AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&gt;&nbsp;condition)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Poll execution history until the given condition is met.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#startAsync(I)" class="member-name-link">startAsync</a><wbr>(<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Start an asynchronous execution and return a handle for incremental polling.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Method parameters in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> with type arguments of type <a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="../AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../AsyncExecution.html#pollUntil(java.util.function.Predicate)" class="member-name-link">pollUntil</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;<a href="../AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;&gt;&nbsp;condition)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Poll execution history until the given condition is met.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/class-use/CloudDurableTestRunner.html b/javadoc/software/amazon/lambda/durable/testing/class-use/CloudDurableTestRunner.html
    new file mode 100644
    index 000000000..0e339476b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/class-use/CloudDurableTestRunner.html
    @@ -0,0 +1,142 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.CloudDurableTestRunner (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing, class: CloudDurableTestRunner">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.CloudDurableTestRunner" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.CloudDurableTestRunner</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#create(java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a runner for the given function ARN with Class-based input/output types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#create(java.lang.String,java.lang.Class,java.lang.Class,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and Class-based input/output types.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a runner for the given function ARN with TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#create(java.lang.String,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.TypeToken,software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;functionArn,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a runner with a custom <code>LambdaClient</code> and TypeToken-based input/output types.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#withInvocationType(software.amazon.awssdk.services.lambda.model.InvocationType)" class="member-name-link">withInvocationType</a><wbr>(software.amazon.awssdk.services.lambda.model.InvocationType&nbsp;type)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns a new runner with the specified Lambda invocation type.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#withLambdaClient(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">withLambdaClient</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns a new runner with the specified lambda client.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#withPollInterval(java.time.Duration)" class="member-name-link">withPollInterval</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;interval)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns a new runner with the specified poll interval between history checks.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#withSerDes(software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">withSerDes</a><wbr>(<a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>,<wbr><a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#withTimeout(java.time.Duration)" class="member-name-link">withTimeout</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns a new runner with the specified maximum wait time for execution completion.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/class-use/LocalDurableTestRunner.html b/javadoc/software/amazon/lambda/durable/testing/class-use/LocalDurableTestRunner.html
    new file mode 100644
    index 000000000..1263722cf
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/class-use/LocalDurableTestRunner.html
    @@ -0,0 +1,144 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.LocalDurableTestRunner (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing, class: LocalDurableTestRunner">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.LocalDurableTestRunner" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.LocalDurableTestRunner</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(java.lang.Class,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(java.lang.Class,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction)" class="member-name-link">create</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner with default configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,java.util.function.BiFunction,software.amazon.lambda.durable.DurableConfig)" class="member-name-link">create</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/BiFunction.html" title="class or interface in java.util.function" class="external-link">BiFunction</a>&lt;I,<wbr><a href="../../DurableContext.html" title="interface in software.amazon.lambda.durable">DurableContext</a>,<wbr>O&gt;&nbsp;handlerFn,
    + <a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a LocalDurableTestRunner that uses a custom configuration.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static &lt;I,<wbr>
    +O&gt;&nbsp;<a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#create(software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.DurableHandler)" class="member-name-link">create</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;I&gt;&nbsp;inputType,
    + <a href="../../DurableHandler.html" title="class in software.amazon.lambda.durable">DurableHandler</a>&lt;I,<wbr>O&gt;&nbsp;handler)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#withDurableConfig(software.amazon.lambda.durable.DurableConfig)" class="member-name-link">withDurableConfig</a><wbr>(<a href="../../DurableConfig.html" title="class in software.amazon.lambda.durable">DurableConfig</a>&nbsp;config)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Overrides the DurableConfig for this test runner.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#withOutputType(java.lang.Class)" class="member-name-link">withOutputType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Overrides the output type for this test runner.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>,<wbr><a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#withOutputType(software.amazon.lambda.durable.TypeToken)" class="member-name-link">withOutputType</a><wbr>(<a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;&nbsp;outputType)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Overrides the output type for this test runner.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/class-use/TestOperation.html b/javadoc/software/amazon/lambda/durable/testing/class-use/TestOperation.html
    new file mode 100644
    index 000000000..49a3fdff9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/class-use/TestOperation.html
    @@ -0,0 +1,146 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.TestOperation (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing, class: TestOperation">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.TestOperation" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.TestOperation</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../AsyncExecution.html#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Get details for a specific operation.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given name from the last execution result.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns the <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> for the given operation name, or null if not found.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">TestResult.</span><code><a href="../TestResult.html#getOperation(java.lang.String)" class="member-name-link">getOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns the <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing"><code>TestOperation</code></a> with the given name, or null if not found.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return types with arguments of type <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">TestResult.</span><code><a href="../TestResult.html#getFailedOperations()" class="member-name-link">getFailedOperations</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns all operations that failed, were cancelled, timed out, or stopped.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../AsyncExecution.html#getOperations()" class="member-name-link">getOperations</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Get all operations in the execution.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">TestResult.</span><code><a href="../TestResult.html#getOperations()" class="member-name-link">getOperations</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Returns all operations from the execution.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">TestResult.</span><code><a href="../TestResult.html#getSucceededOperations()" class="member-name-link">getSucceededOperations</a>()</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Returns all operations that completed successfully.</div>
    +</div>
    +</div>
    +<div class="caption"><span>Constructor parameters in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> with type arguments of type <a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier</div>
    +<div class="table-header col-second">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="../TestResult.html#%3Cinit%3E(software.amazon.lambda.durable.model.ExecutionStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject,java.util.List,java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">TestResult</a><wbr>(<a href="../../model/ExecutionStatus.html" title="enum class in software.amazon.lambda.durable.model">ExecutionStatus</a>&nbsp;status,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;resultPayload,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a>&gt;&nbsp;operations,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;allEvents,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;<a href="../TestResult.html" title="type parameter in TestResult">O</a>&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/class-use/TestResult.html b/javadoc/software/amazon/lambda/durable/testing/class-use/TestResult.html
    new file mode 100644
    index 000000000..f1b54cf9c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/class-use/TestResult.html
    @@ -0,0 +1,150 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.TestResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing, class: TestResult">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.TestResult" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.TestResult</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<h2>Uses of <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing</a> that return <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="../AsyncExecution.html" title="type parameter in AsyncExecution">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">AsyncExecution.</span><code><a href="../AsyncExecution.html#pollUntilComplete()" class="member-name-link">pollUntilComplete</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Poll until execution completes and return the final result.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#run(I)" class="member-name-link">run</a><wbr>(<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#run(I)" class="member-name-link">run</a><wbr>(<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Run a single invocation (may return PENDING if waiting/retrying).</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">CloudDurableTestRunner.</span><code><a href="../CloudDurableTestRunner.html#runUntilComplete(I)" class="member-name-link">runUntilComplete</a><wbr>(<a href="../CloudDurableTestRunner.html" title="type parameter in CloudDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Invokes the Lambda function, polls execution history until completion, and returns the result.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">O</a>&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalDurableTestRunner.</span><code><a href="../LocalDurableTestRunner.html#runUntilComplete(I)" class="member-name-link">runUntilComplete</a><wbr>(<a href="../LocalDurableTestRunner.html" title="type parameter in LocalDurableTestRunner">I</a>&nbsp;input)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<h2>Uses of <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a> in <a href="../cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></h2>
    +<div class="caption"><span>Methods in <a href="../cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a> that return <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">HistoryEventProcessor.</span><code><a href="../cloud/HistoryEventProcessor.html#processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">processEvents</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Processes a list of execution history events into a structured <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a> in <a href="../local/package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Methods in <a href="../local/package-summary.html">software.amazon.lambda.durable.testing.local</a> that return <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>&lt;O&gt;&nbsp;<a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../local/LocalMemoryExecutionClient.html#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult</a><wbr>(<a href="../../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Build TestResult from current state.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html b/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html
    new file mode 100644
    index 000000000..21fd392e9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.html
    @@ -0,0 +1,182 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>HistoryEventProcessor (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.cloud, class: HistoryEventProcessor">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/HistoryEventProcessor.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<h1 title="Class HistoryEventProcessor" class="title">Class HistoryEventProcessor</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">HistoryEventProcessor</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Processes execution history events from the GetDurableExecutionHistory API into <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a> objects. Used by
    + <a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing"><code>CloudDurableTestRunner</code></a> and <a href="../AsyncExecution.html" title="class in software.amazon.lambda.durable.testing"><code>AsyncExecution</code></a> to convert cloud execution history into testable results.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">HistoryEventProcessor</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;O&gt;&nbsp;<a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">processEvents</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Processes a list of execution history events into a structured <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>HistoryEventProcessor</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">HistoryEventProcessor</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="processEvents(java.util.List,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>processEvents</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;O&gt;</span>&nbsp;<span class="return-type"><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">processEvents</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;&nbsp;events,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;outputType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Processes a list of execution history events into a structured <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a>.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>O</code> - the handler output type</dd>
    +<dt>Parameters:</dt>
    +<dd><code>events</code> - the raw history events from the GetDurableExecutionHistory API</dd>
    +<dd><code>outputType</code> - the expected output type for deserialization</dd>
    +<dt>Returns:</dt>
    +<dd>a TestResult containing the execution status, output, and operation details</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryPoller.html b/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryPoller.html
    new file mode 100644
    index 000000000..e9fe0d055
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/HistoryPoller.html
    @@ -0,0 +1,186 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>HistoryPoller (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.cloud, class: HistoryPoller">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/HistoryPoller.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<h1 title="Class HistoryPoller" class="title">Class HistoryPoller</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.cloud.HistoryPoller</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">HistoryPoller</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached. Used by
    + <a href="../CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing"><code>CloudDurableTestRunner</code></a> for synchronous test execution.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.LambdaClient)" class="member-name-link">HistoryPoller</a><wbr>(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates a poller backed by the given Lambda client.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pollUntilComplete(java.lang.String,java.time.Duration,java.time.Duration)" class="member-name-link">pollUntilComplete</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Polls execution history until a terminal event is found or the timeout is exceeded.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.LambdaClient)">
    +<h3>HistoryPoller</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">HistoryPoller</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.LambdaClient&nbsp;lambdaClient)</span></div>
    +<div class="block">Creates a poller backed by the given Lambda client.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="pollUntilComplete(java.lang.String,java.time.Duration,java.time.Duration)">
    +<h3>pollUntilComplete</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">pollUntilComplete</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;executionArn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;pollInterval,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;timeout)</span></div>
    +<div class="block">Polls execution history until a terminal event is found or the timeout is exceeded.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>executionArn</code> - the durable execution ARN to poll</dd>
    +<dd><code>pollInterval</code> - the interval between poll requests</dd>
    +<dd><code>timeout</code> - the maximum time to wait for completion</dd>
    +<dt>Returns:</dt>
    +<dd>all history events collected during polling</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the timeout is exceeded or polling is interrupted</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryEventProcessor.html b/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryEventProcessor.html
    new file mode 100644
    index 000000000..d8e10eb29
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryEventProcessor.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.cloud, class: HistoryEventProcessor">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../HistoryEventProcessor.html" title="class in software.amazon.lambda.durable.testing.cloud">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryPoller.html b/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryPoller.html
    new file mode 100644
    index 000000000..ac4a83a3d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/class-use/HistoryPoller.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.cloud.HistoryPoller (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.cloud, class: HistoryPoller">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../HistoryPoller.html" title="class in software.amazon.lambda.durable.testing.cloud">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.cloud.HistoryPoller" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.cloud.HistoryPoller</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.testing.cloud.HistoryPoller</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/package-summary.html b/javadoc/software/amazon/lambda/durable/testing/cloud/package-summary.html
    new file mode 100644
    index 000000000..c1da4f46b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/package-summary.html
    @@ -0,0 +1,107 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing.cloud (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.cloud">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.testing.cloud" class="title">Package software.amazon.lambda.durable.testing.cloud</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.testing.cloud</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../local/package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="HistoryEventProcessor.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Processes execution history events from the GetDurableExecutionHistory API into <a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing"><code>TestResult</code></a> objects.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="HistoryPoller.html" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/package-tree.html b/javadoc/software/amazon/lambda/durable/testing/cloud/package-tree.html
    new file mode 100644
    index 000000000..70333303c
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/package-tree.html
    @@ -0,0 +1,78 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing.cloud Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.testing.cloud">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.testing.cloud</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.testing.cloud.<a href="HistoryEventProcessor.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryEventProcessor</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.cloud.<a href="HistoryPoller.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.cloud">HistoryPoller</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/cloud/package-use.html b/javadoc/software/amazon/lambda/durable/testing/cloud/package-use.html
    new file mode 100644
    index 000000000..5d259bad9
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/cloud/package-use.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.testing.cloud (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.cloud">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.testing.cloud" class="title">Uses of Package<br>software.amazon.lambda.durable.testing.cloud</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.testing.cloud</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html b/javadoc/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html
    new file mode 100644
    index 000000000..7bd9ec3b2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.html
    @@ -0,0 +1,384 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>LocalMemoryExecutionClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.local, class: LocalMemoryExecutionClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/LocalMemoryExecutionClient.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<h1 title="Class LocalMemoryExecutionClient" class="title">Class LocalMemoryExecutionClient</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LocalMemoryExecutionClient</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></span></div>
    +<div class="block">In-memory implementation of <a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> for local testing. Stores operations and checkpoint state
    + in memory, simulating the durable execution backend without AWS infrastructure.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">LocalMemoryExecutionClient</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#advanceTime()" class="member-name-link">advanceTime</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Advance all operations (simulates time passing for retries/waits).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkpoint(java.lang.String,java.lang.String,java.util.List)" class="member-name-link">checkpoint</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completeCallback(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Simulate external system completing callback.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#completeChainedInvoke(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Completes a chained invoke operation with the given result, simulating a child Lambda response.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllEvents()" class="member-name-link">getAllEvents</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get all events in order.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllOperations()" class="member-name-link">getAllOperations</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns all operations currently stored.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCallbackId(java.lang.String)" class="member-name-link">getCallbackId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getEventsForOperation(java.lang.String)" class="member-name-link">getEventsForOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get events for a specific operation.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExecutionState(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getExecutionState</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.Operation</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationByName(java.lang.String)" class="member-name-link">getOperationByName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the operation with the given name, or null if not found.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationUpdates()" class="member-name-link">getOperationUpdates</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get all operation updates that have been sent to this client.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reset()" class="member-name-link">reset</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Clears all operations and events, resetting the client to its initial state.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#resetCheckpointToStarted(java.lang.String)" class="member-name-link">resetCheckpointToStarted</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Simulate checkpoint failure by forcing an operation into STARTED state</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#simulateFireAndForgetCheckpointLoss(java.lang.String)" class="member-name-link">simulateFireAndForgetCheckpointLoss</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Simulate fire-and-forget checkpoint loss by removing the operation entirely</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;O&gt;&nbsp;<a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">toTestResult</a><wbr>(<a href="../../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Build TestResult from current state.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>LocalMemoryExecutionClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LocalMemoryExecutionClient</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="checkpoint(java.lang.String,java.lang.String,java.util.List)">
    +<h3>checkpoint</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse</span>&nbsp;<span class="element-name">checkpoint</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;token,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;&nbsp;updates)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../../client/DurableExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)">DurableExecutionClient</a></code></span></div>
    +<div class="block">Sends a batch of operation updates to the backend.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../client/DurableExecutionClient.html#checkpoint(java.lang.String,java.lang.String,java.util.List)">checkpoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>token</code> - the checkpoint token</dd>
    +<dd><code>updates</code> - the operation updates to send</dd>
    +<dt>Returns:</dt>
    +<dd>the checkpoint response</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExecutionState(java.lang.String,java.lang.String,java.lang.String)">
    +<h3>getExecutionState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse</span>&nbsp;<span class="element-name">getExecutionState</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arn,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;checkpointToken,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;marker)</span></div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../../client/DurableExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)">DurableExecutionClient</a></code></span></div>
    +<div class="block">Retrieves the current execution state from the backend.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../../client/DurableExecutionClient.html#getExecutionState(java.lang.String,java.lang.String,java.lang.String)">getExecutionState</a></code>&nbsp;in interface&nbsp;<code><a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>arn</code> - the durable execution ARN</dd>
    +<dd><code>checkpointToken</code> - the checkpoint token</dd>
    +<dd><code>marker</code> - pagination marker, or null for the first page</dd>
    +<dt>Returns:</dt>
    +<dd>the execution state response</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationUpdates()">
    +<h3>getOperationUpdates</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.OperationUpdate&gt;</span>&nbsp;<span class="element-name">getOperationUpdates</span>()</div>
    +<div class="block">Get all operation updates that have been sent to this client. Useful for testing and verification.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAllEvents()">
    +<h3>getAllEvents</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">getAllEvents</span>()</div>
    +<div class="block">Get all events in order.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getEventsForOperation(java.lang.String)">
    +<h3>getEventsForOperation</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Event&gt;</span>&nbsp;<span class="element-name">getEventsForOperation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationId)</span></div>
    +<div class="block">Get events for a specific operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="advanceTime()">
    +<h3>advanceTime</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">advanceTime</span>()</div>
    +<div class="block">Advance all operations (simulates time passing for retries/waits).</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>true if any operations were advanced, false otherwise</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completeChainedInvoke(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)">
    +<h3>completeChainedInvoke</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completeChainedInvoke</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</span></div>
    +<div class="block">Completes a chained invoke operation with the given result, simulating a child Lambda response.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getOperationByName(java.lang.String)">
    +<h3>getOperationByName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.Operation</span>&nbsp;<span class="element-name">getOperationByName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the operation with the given name, or null if not found.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAllOperations()">
    +<h3>getAllOperations</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;software.amazon.awssdk.services.lambda.model.Operation&gt;</span>&nbsp;<span class="element-name">getAllOperations</span>()</div>
    +<div class="block">Returns all operations currently stored.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="reset()">
    +<h3>reset</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reset</span>()</div>
    +<div class="block">Clears all operations and events, resetting the client to its initial state.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toTestResult(software.amazon.lambda.durable.model.DurableExecutionOutput,software.amazon.lambda.durable.TypeToken,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>toTestResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;O&gt;</span>&nbsp;<span class="return-type"><a href="../TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</span>&nbsp;<span class="element-name">toTestResult</span><wbr><span class="parameters">(<a href="../../model/DurableExecutionOutput.html" title="class in software.amazon.lambda.durable.model">DurableExecutionOutput</a>&nbsp;output,
    + <a href="../../TypeToken.html" title="class in software.amazon.lambda.durable">TypeToken</a>&lt;O&gt;&nbsp;resultType,
    + <a href="../../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">Build TestResult from current state.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="resetCheckpointToStarted(java.lang.String)">
    +<h3>resetCheckpointToStarted</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">resetCheckpointToStarted</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</span></div>
    +<div class="block">Simulate checkpoint failure by forcing an operation into STARTED state</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="simulateFireAndForgetCheckpointLoss(java.lang.String)">
    +<h3>simulateFireAndForgetCheckpointLoss</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">simulateFireAndForgetCheckpointLoss</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;stepName)</span></div>
    +<div class="block">Simulate fire-and-forget checkpoint loss by removing the operation entirely</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCallbackId(java.lang.String)">
    +<h3>getCallbackId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getCallbackId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;operationName)</span></div>
    +<div class="block">Get callback ID for a named callback operation.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="completeCallback(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)">
    +<h3>completeCallback</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completeCallback</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</span></div>
    +<div class="block">Simulate external system completing callback.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/OperationResult.html b/javadoc/software/amazon/lambda/durable/testing/local/OperationResult.html
    new file mode 100644
    index 000000000..7db7956b0
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/OperationResult.html
    @@ -0,0 +1,311 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>OperationResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.local, record: OperationResult">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/OperationResult.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<h1 title="Record Class OperationResult" class="title">Record Class OperationResult</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">java.lang.Record</a>
    +<div class="inheritance">software.amazon.lambda.durable.testing.local.OperationResult</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public record </span><span class="element-name type-name-label">OperationResult</span>(software.amazon.awssdk.services.lambda.model.OperationStatus&nbsp;operationStatus, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result, software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></span></div>
    +<div class="block">The operation status and result/error from Step, Context, Callback and ChainedInvoke operations</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(software.amazon.awssdk.services.lambda.model.OperationStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">OperationResult</a><wbr>(software.amazon.awssdk.services.lambda.model.OperationStatus&nbsp;operationStatus,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Creates an instance of a <code>OperationResult</code> record class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Indicates whether some other object is "equal to" this one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error()" class="member-name-link">error</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>error</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#failed(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failed</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a hash code value for this object.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>software.amazon.awssdk.services.lambda.model.OperationStatus</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#operationStatus()" class="member-name-link">operationStatus</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>operationStatus</code> record component.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#result()" class="member-name-link">result</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#stopped(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">stopped</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#succeeded(java.lang.String)" class="member-name-link">succeeded</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#timedout()" class="member-name-link">timedout</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Returns a string representation of this record class.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(software.amazon.awssdk.services.lambda.model.OperationStatus,java.lang.String,software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>OperationResult</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">OperationResult</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.OperationStatus&nbsp;operationStatus,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result,
    + software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +<div class="block">Creates an instance of a <code>OperationResult</code> record class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>operationStatus</code> - the value for the <code>operationStatus</code> record component</dd>
    +<dd><code>result</code> - the value for the <code>result</code> record component</dd>
    +<dd><code>error</code> - the value for the <code>error</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="succeeded(java.lang.String)">
    +<h3>succeeded</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span>&nbsp;<span class="element-name">succeeded</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="failed(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>failed</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span>&nbsp;<span class="element-name">failed</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stopped(software.amazon.awssdk.services.lambda.model.ErrorObject)">
    +<h3>stopped</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span>&nbsp;<span class="element-name">stopped</span><wbr><span class="parameters">(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="timedout()">
    +<h3>timedout</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span>&nbsp;<span class="element-name">timedout</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<div class="block">Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a string representation of this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">Returns a hash code value for this object. The value is derived from the hash code of each of the record components.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>a hash code value for this object</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
    +<div class="block">Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#equals(java.lang.Object,java.lang.Object)" title="class or interface in java.util" class="external-link"><code>Objects::equals(Object,Object)</code></a>.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" title="class or interface in java.lang" class="external-link">Record</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>o</code> - the object with which to compare</dd>
    +<dt>Returns:</dt>
    +<dd><code>true</code> if this object is the same as the <code>o</code> argument; <code>false</code> otherwise.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="operationStatus()">
    +<h3>operationStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.OperationStatus</span>&nbsp;<span class="element-name">operationStatus</span>()</div>
    +<div class="block">Returns the value of the <code>operationStatus</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>operationStatus</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="result()">
    +<h3>result</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">result</span>()</div>
    +<div class="block">Returns the value of the <code>result</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>result</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error()">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">error</span>()</div>
    +<div class="block">Returns the value of the <code>error</code> record component.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the value of the <code>error</code> record component</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/class-use/LocalMemoryExecutionClient.html b/javadoc/software/amazon/lambda/durable/testing/local/class-use/LocalMemoryExecutionClient.html
    new file mode 100644
    index 000000000..4a12c7cee
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/class-use/LocalMemoryExecutionClient.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.local, class: LocalMemoryExecutionClient">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient" class="title">Uses of Class<br>software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/class-use/OperationResult.html b/javadoc/software/amazon/lambda/durable/testing/local/class-use/OperationResult.html
    new file mode 100644
    index 000000000..6987ea569
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/class-use/OperationResult.html
    @@ -0,0 +1,115 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Record Class software.amazon.lambda.durable.testing.local.OperationResult (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.local, record: OperationResult">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Record Class software.amazon.lambda.durable.testing.local.OperationResult" class="title">Uses of Record Class<br>software.amazon.lambda.durable.testing.local.OperationResult</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="class-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<h2>Uses of <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a> in <a href="../package-summary.html">software.amazon.lambda.durable.testing.local</a></h2>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing.local</a> that return <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationResult.</span><code><a href="../OperationResult.html#failed(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">failed</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">OperationResult.</span><code><a href="../OperationResult.html#stopped(software.amazon.awssdk.services.lambda.model.ErrorObject)" class="member-name-link">stopped</a><wbr>(software.amazon.awssdk.services.lambda.model.ErrorObject&nbsp;error)</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">OperationResult.</span><code><a href="../OperationResult.html#succeeded(java.lang.String)" class="member-name-link">succeeded</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">OperationResult.</span><code><a href="../OperationResult.html#timedout()" class="member-name-link">timedout</a>()</code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +<div class="caption"><span>Methods in <a href="../package-summary.html">software.amazon.lambda.durable.testing.local</a> with parameters of type <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>void</code></div>
    +<div class="col-second even-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../LocalMemoryExecutionClient.html#completeCallback(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeCallback</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;callbackId,
    + <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Simulate external system completing callback.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>void</code></div>
    +<div class="col-second odd-row-color"><span class="type-name-label">LocalMemoryExecutionClient.</span><code><a href="../LocalMemoryExecutionClient.html#completeChainedInvoke(java.lang.String,software.amazon.lambda.durable.testing.local.OperationResult)" class="member-name-link">completeChainedInvoke</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + <a href="../OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a>&nbsp;result)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Completes a chained invoke operation with the given result, simulating a child Lambda response.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/package-summary.html b/javadoc/software/amazon/lambda/durable/testing/local/package-summary.html
    new file mode 100644
    index 000000000..6d7429432
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/package-summary.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing.local (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing.local">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.testing.local" class="title">Package software.amazon.lambda.durable.testing.local</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.testing.local</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab4" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab4', 2)" class="table-tab">Record Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LocalMemoryExecutionClient.html" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">In-memory implementation of <a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client"><code>DurableExecutionClient</code></a> for local testing.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="OperationResult.html" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab4">
    +<div class="block">The operation status and result/error from Step, Context, Callback and ChainedInvoke operations</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/package-tree.html b/javadoc/software/amazon/lambda/durable/testing/local/package-tree.html
    new file mode 100644
    index 000000000..ab76d5794
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/package-tree.html
    @@ -0,0 +1,82 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing.local Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.testing.local">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.testing.local</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.testing.local.<a href="LocalMemoryExecutionClient.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">LocalMemoryExecutionClient</a> (implements software.amazon.lambda.durable.client.<a href="../../client/DurableExecutionClient.html" title="interface in software.amazon.lambda.durable.client">DurableExecutionClient</a>)</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Record.html" class="type-name-link external-link" title="class or interface in java.lang">Record</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.testing.local.<a href="OperationResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing.local">OperationResult</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/local/package-use.html b/javadoc/software/amazon/lambda/durable/testing/local/package-use.html
    new file mode 100644
    index 000000000..836f6b5ba
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/local/package-use.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.testing.local (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing.local">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.testing.local" class="title">Uses of Package<br>software.amazon.lambda.durable.testing.local</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.testing.local</a> used by <a href="package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/OperationResult.html#software.amazon.lambda.durable.testing.local">OperationResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">The operation status and result/error from Step, Context, Callback and ChainedInvoke operations</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/package-summary.html b/javadoc/software/amazon/lambda/durable/testing/package-summary.html
    new file mode 100644
    index 000000000..fbb8b8fc5
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/package-summary.html
    @@ -0,0 +1,122 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.testing">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.testing" class="title">Package software.amazon.lambda.durable.testing</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.testing</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="local/package-summary.html">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AsyncExecution.html" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;O&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Handle for an asynchronously executing durable function.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CloudDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Test runner for durable Lambda functions deployed to AWS.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LocalDurableTestRunner.html" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">In-memory test runner for durable Lambda functions.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="TestOperation.html" title="class in software.amazon.lambda.durable.testing">TestOperation</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Wrapper for AWS SDK Operation providing convenient access methods.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="TestResult.html" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/package-tree.html b/javadoc/software/amazon/lambda/durable/testing/package-tree.html
    new file mode 100644
    index 000000000..ca0247497
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.testing Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.testing">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.testing</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="AsyncExecution.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">AsyncExecution</a>&lt;O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="CloudDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">CloudDurableTestRunner</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="LocalDurableTestRunner.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">LocalDurableTestRunner</a>&lt;I,<wbr>O&gt;</li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="TestOperation.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestOperation</a></li>
    +<li class="circle">software.amazon.lambda.durable.testing.<a href="TestResult.html" class="type-name-link" title="class in software.amazon.lambda.durable.testing">TestResult</a>&lt;O&gt;</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/testing/package-use.html b/javadoc/software/amazon/lambda/durable/testing/package-use.html
    new file mode 100644
    index 000000000..67ebd999f
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/testing/package-use.html
    @@ -0,0 +1,136 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.testing (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.testing">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.testing" class="title">Uses of Package<br>software.amazon.lambda.durable.testing</h1>
    +</div>
    +<div class="caption"><span>Packages that use <a href="package-summary.html">software.amazon.lambda.durable.testing</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing">software.amazon.lambda.durable.testing</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="#software.amazon.lambda.durable.testing.cloud">software.amazon.lambda.durable.testing.cloud</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="#software.amazon.lambda.durable.testing.local">software.amazon.lambda.durable.testing.local</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +<section class="package-uses">
    +<ul class="block-list">
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.testing</a> used by <a href="package-summary.html">software.amazon.lambda.durable.testing</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/AsyncExecution.html#software.amazon.lambda.durable.testing">AsyncExecution</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Handle for an asynchronously executing durable function.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/CloudDurableTestRunner.html#software.amazon.lambda.durable.testing">CloudDurableTestRunner</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Test runner for durable Lambda functions deployed to AWS.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/LocalDurableTestRunner.html#software.amazon.lambda.durable.testing">LocalDurableTestRunner</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">In-memory test runner for durable Lambda functions.</div>
    +</div>
    +<div class="col-first odd-row-color"><a href="class-use/TestOperation.html#software.amazon.lambda.durable.testing">TestOperation</a></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Wrapper for AWS SDK Operation providing convenient access methods.</div>
    +</div>
    +<div class="col-first even-row-color"><a href="class-use/TestResult.html#software.amazon.lambda.durable.testing">TestResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.cloud">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.testing</a> used by <a href="cloud/package-summary.html">software.amazon.lambda.durable.testing.cloud</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/TestResult.html#software.amazon.lambda.durable.testing.cloud">TestResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="software.amazon.lambda.durable.testing.local">
    +<div class="caption"><span>Classes in <a href="package-summary.html">software.amazon.lambda.durable.testing</a> used by <a href="local/package-summary.html">software.amazon.lambda.durable.testing.local</a></span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="class-use/TestResult.html#software.amazon.lambda.durable.testing.local">TestResult</a></div>
    +<div class="col-last even-row-color">
    +<div class="block">Represents the result of a durable execution, providing access to the execution status, output, operations, and
    + history events.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/CompletedDurableFuture.html b/javadoc/software/amazon/lambda/durable/util/CompletedDurableFuture.html
    new file mode 100644
    index 000000000..8e59e469d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/CompletedDurableFuture.html
    @@ -0,0 +1,189 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>CompletedDurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.util, class: CompletedDurableFuture">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/CompletedDurableFuture.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<h1 title="Class CompletedDurableFuture" class="title">Class CompletedDurableFuture&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.util.CompletedDurableFuture&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the result type</dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CompletedDurableFuture&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;</span></div>
    +<div class="block">A <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that is already completed with a value.
    +
    + <p>Used for short-circuit cases (e.g., empty collection in map) where no checkpoint or async execution is needed.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(T)" class="member-name-link">CompletedDurableFuture</a><wbr>(<a href="CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a>&nbsp;value)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get()" class="member-name-link">get</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Blocks until the operation completes and returns the result.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(T)">
    +<h3 id="&lt;init&gt;(java.lang.Object)">CompletedDurableFuture</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CompletedDurableFuture</span><wbr><span class="parameters">(<a href="CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a>&nbsp;value)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="get()">
    +<h3>get</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a></span>&nbsp;<span class="element-name">get</span>()</div>
    +<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../DurableFuture.html#get()">DurableFuture</a></code></span></div>
    +<div class="block">Blocks until the operation completes and returns the result.
    +
    + <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    + reactivation (resumes execution) - Result retrieval</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="../DurableFuture.html#get()">get</a></code>&nbsp;in interface&nbsp;<code><a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;<a href="CompletedDurableFuture.html" title="type parameter in CompletedDurableFuture">T</a>&gt;</code></dd>
    +<dt>Returns:</dt>
    +<dd>the operation result</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/ExceptionHelper.html b/javadoc/software/amazon/lambda/durable/util/ExceptionHelper.html
    new file mode 100644
    index 000000000..59f72737d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/ExceptionHelper.html
    @@ -0,0 +1,254 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ExceptionHelper (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.util, class: ExceptionHelper">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ExceptionHelper.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<h1 title="Class ExceptionHelper" class="title">Class ExceptionHelper</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.util.ExceptionHelper</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ExceptionHelper</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Utility class for handling exceptions</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ExceptionHelper</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static software.amazon.awssdk.services.lambda.model.ErrorObject</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#buildErrorObject(java.lang.Throwable,software.amazon.lambda.durable.serde.SerDes)" class="member-name-link">buildErrorObject</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">build an ErrorObject from a Throwable</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#deserializeStackTrace(java.util.List)" class="member-name-link">deserializeStackTrace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;stackTrace)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Deserializes a list of pipe-delimited strings back into stack trace elements.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#serializeStackTrace(java.lang.StackTraceElement%5B%5D)" class="member-name-link">serializeStackTrace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Serializes a stack trace to a list of pipe-delimited strings in the format
    + <code>className|methodName|fileName|lineNumber</code>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&gt;<br>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sneakyThrow(java.lang.Throwable)" class="member-name-link">sneakyThrow</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;exception)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Throws any exception as if it were unchecked using type erasure.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#unwrapCompletableFuture(java.lang.Throwable)" class="member-name-link">unwrapCompletableFuture</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">unwrap the exception that is wrapped by CompletionException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ExceptionHelper</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ExceptionHelper</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="sneakyThrow(java.lang.Throwable)">
    +<h3>sneakyThrow</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&gt;</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sneakyThrow</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;exception)</span>
    +                                              throws <span class="exceptions">T</span></div>
    +<div class="block">Throws any exception as if it were unchecked using type erasure. This preserves the original exception type and
    + stack trace.</div>
    +<dl class="notes">
    +<dt>Type Parameters:</dt>
    +<dd><code>T</code> - the exception type (erased at runtime)</dd>
    +<dt>Parameters:</dt>
    +<dd><code>exception</code> - the exception to throw</dd>
    +<dt>Throws:</dt>
    +<dd><code>T</code> - the exception as an unchecked exception</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="unwrapCompletableFuture(java.lang.Throwable)">
    +<h3>unwrapCompletableFuture</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></span>&nbsp;<span class="element-name">unwrapCompletableFuture</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable)</span></div>
    +<div class="block">unwrap the exception that is wrapped by CompletionException</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>throwable</code> - the throwable to unwrap</dd>
    +<dt>Returns:</dt>
    +<dd>the original Throwable that is not a CompletionException</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="buildErrorObject(java.lang.Throwable,software.amazon.lambda.durable.serde.SerDes)">
    +<h3>buildErrorObject</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">software.amazon.awssdk.services.lambda.model.ErrorObject</span>&nbsp;<span class="element-name">buildErrorObject</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;throwable,
    + <a href="../serde/SerDes.html" title="interface in software.amazon.lambda.durable.serde">SerDes</a>&nbsp;serDes)</span></div>
    +<div class="block">build an ErrorObject from a Throwable</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>throwable</code> - the Throwable from which to build the errorObject</dd>
    +<dt>Returns:</dt>
    +<dd>the ErrorObject</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="serializeStackTrace(java.lang.StackTraceElement[])">
    +<h3>serializeStackTrace</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">serializeStackTrace</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]&nbsp;stackTrace)</span></div>
    +<div class="block">Serializes a stack trace to a list of pipe-delimited strings in the format
    + <code>className|methodName|fileName|lineNumber</code>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>stackTrace</code> - the stack trace elements to serialize</dd>
    +<dt>Returns:</dt>
    +<dd>list of serialized stack trace strings</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserializeStackTrace(java.util.List)">
    +<h3>deserializeStackTrace</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackTraceElement.html" title="class or interface in java.lang" class="external-link">StackTraceElement</a>[]</span>&nbsp;<span class="element-name">deserializeStackTrace</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;stackTrace)</span></div>
    +<div class="block">Deserializes a list of pipe-delimited strings back into stack trace elements.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>stackTrace</code> - the serialized stack trace strings</dd>
    +<dt>Returns:</dt>
    +<dd>array of reconstructed StackTraceElements</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/ParameterValidator.html b/javadoc/software/amazon/lambda/durable/util/ParameterValidator.html
    new file mode 100644
    index 000000000..622349242
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/ParameterValidator.html
    @@ -0,0 +1,294 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>ParameterValidator (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.util, class: ParameterValidator">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var evenRowColor = "even-row-color";
    +var oddRowColor = "odd-row-color";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="class-use/ParameterValidator.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">software.amazon.lambda.durable.util</a></div>
    +<h1 title="Class ParameterValidator" class="title">Class ParameterValidator</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">software.amazon.lambda.durable.util.ParameterValidator</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ParameterValidator</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Utility class for validating input parameters in the Durable Execution SDK.
    +
    + <p>Provides common validation methods to ensure consistent error messages and validation logic across the SDK.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final int</code></div>
    +<div class="col-second even-row-color"><code><a href="#MAX_OPERATION_NAME_LENGTH" class="member-name-link">MAX_OPERATION_NAME_LENGTH</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateDuration(java.time.Duration,java.lang.String)" class="member-name-link">validateDuration</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates that a duration is at least 1 second.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateOperationName(java.lang.String)" class="member-name-link">validateOperationName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateOperationName(java.lang.String,int)" class="member-name-link">validateOperationName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + int&nbsp;maxLength)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateOptionalDuration(java.time.Duration,java.lang.String)" class="member-name-link">validateOptionalDuration</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates that an optional duration (if provided) is at least 1 second.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateOptionalPositiveInteger(java.lang.Integer,java.lang.String)" class="member-name-link">validateOptionalPositiveInteger</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;value,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates that an optional integer value (if provided) is positive (greater than 0).</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateOrderedCollection(java.util.Collection)" class="member-name-link">validateOrderedCollection</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;?&gt;&nbsp;items)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates that a collection has deterministic iteration order.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validatePositiveInteger(java.lang.Integer,java.lang.String)" class="member-name-link">validatePositiveInteger</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;value,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates that an integer value is positive (greater than 0).</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="MAX_OPERATION_NAME_LENGTH">
    +<h3>MAX_OPERATION_NAME_LENGTH</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">MAX_OPERATION_NAME_LENGTH</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#software.amazon.lambda.durable.util.ParameterValidator.MAX_OPERATION_NAME_LENGTH">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="validateDuration(java.time.Duration,java.lang.String)">
    +<h3>validateDuration</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateDuration</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</span></div>
    +<div class="block">Validates that a duration is at least 1 second.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>duration</code> - the duration to validate</dd>
    +<dd><code>parameterName</code> - the name of the parameter (for error messages)</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if duration is null or less than 1 second</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateOptionalDuration(java.time.Duration,java.lang.String)">
    +<h3>validateOptionalDuration</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateOptionalDuration</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;duration,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</span></div>
    +<div class="block">Validates that an optional duration (if provided) is at least 1 second.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>duration</code> - the duration to validate (can be null)</dd>
    +<dd><code>parameterName</code> - the name of the parameter (for error messages)</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if duration is non-null and less than 1 second</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validatePositiveInteger(java.lang.Integer,java.lang.String)">
    +<h3>validatePositiveInteger</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validatePositiveInteger</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;value,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</span></div>
    +<div class="block">Validates that an integer value is positive (greater than 0).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the value to validate</dd>
    +<dd><code>parameterName</code> - the name of the parameter (for error messages)</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if value is null or not positive</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateOptionalPositiveInteger(java.lang.Integer,java.lang.String)">
    +<h3>validateOptionalPositiveInteger</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateOptionalPositiveInteger</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;value,
    + <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;parameterName)</span></div>
    +<div class="block">Validates that an optional integer value (if provided) is positive (greater than 0).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>value</code> - the value to validate (can be null)</dd>
    +<dd><code>parameterName</code> - the name of the parameter (for error messages)</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if value is non-null and not positive</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateOperationName(java.lang.String)">
    +<h3>validateOperationName</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateOperationName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateOperationName(java.lang.String,int)">
    +<h3>validateOperationName</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateOperationName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
    + int&nbsp;maxLength)</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateOrderedCollection(java.util.Collection)">
    +<h3>validateOrderedCollection</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateOrderedCollection</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;?&gt;&nbsp;items)</span></div>
    +<div class="block">Validates that a collection has deterministic iteration order.
    +
    + <p>Rejects known unordered collection types: <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashSet.html" title="class or interface in java.util" class="external-link"><code>HashSet</code></a> (but not <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/LinkedHashSet.html" title="class or interface in java.util" class="external-link"><code>LinkedHashSet</code></a>, which has stable
    + insertion-order iteration), and views returned by <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link"><code>HashMap</code></a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/IdentityHashMap.html" title="class or interface in java.util" class="external-link"><code>IdentityHashMap</code></a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/WeakHashMap.html" title="class or interface in java.util" class="external-link"><code>WeakHashMap</code></a>,
    + and <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ConcurrentHashMap.html" title="class or interface in java.util.concurrent" class="external-link"><code>ConcurrentHashMap</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>items</code> - the collection to validate</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if items is null or has non-deterministic iteration order</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/class-use/CompletedDurableFuture.html b/javadoc/software/amazon/lambda/durable/util/class-use/CompletedDurableFuture.html
    new file mode 100644
    index 000000000..bc5f72f7b
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/class-use/CompletedDurableFuture.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.util.CompletedDurableFuture (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.util, class: CompletedDurableFuture">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.util.CompletedDurableFuture" class="title">Uses of Class<br>software.amazon.lambda.durable.util.CompletedDurableFuture</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.util.CompletedDurableFuture</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/class-use/ExceptionHelper.html b/javadoc/software/amazon/lambda/durable/util/class-use/ExceptionHelper.html
    new file mode 100644
    index 000000000..e58898185
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/class-use/ExceptionHelper.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.util.ExceptionHelper (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.util, class: ExceptionHelper">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.util.ExceptionHelper" class="title">Uses of Class<br>software.amazon.lambda.durable.util.ExceptionHelper</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.util.ExceptionHelper</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/class-use/ParameterValidator.html b/javadoc/software/amazon/lambda/durable/util/class-use/ParameterValidator.html
    new file mode 100644
    index 000000000..6d593fe49
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/class-use/ParameterValidator.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Class software.amazon.lambda.durable.util.ParameterValidator (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.util, class: ParameterValidator">
    +<meta name="generator" content="javadoc/ClassUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="../package-summary.html">Package</a></li>
    +<li><a href="../ParameterValidator.html" title="class in software.amazon.lambda.durable.util">Class</a></li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="../package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Class software.amazon.lambda.durable.util.ParameterValidator" class="title">Uses of Class<br>software.amazon.lambda.durable.util.ParameterValidator</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.util.ParameterValidator</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/package-summary.html b/javadoc/software/amazon/lambda/durable/util/package-summary.html
    new file mode 100644
    index 000000000..349d02a0d
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.util (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="declaration: package: software.amazon.lambda.durable.util">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-use.html">Use</a></li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div>
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package software.amazon.lambda.durable.util" class="title">Package software.amazon.lambda.durable.util</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">software.amazon.lambda.durable.util</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">software.amazon.lambda.durable</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CompletedDurableFuture.html" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A <a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable"><code>DurableFuture</code></a> that is already completed with a value.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ExceptionHelper.html" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Utility class for handling exceptions</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParameterValidator.html" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Utility class for validating input parameters in the Durable Execution SDK.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/package-tree.html b/javadoc/software/amazon/lambda/durable/util/package-tree.html
    new file mode 100644
    index 000000000..a59e6dcb2
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/package-tree.html
    @@ -0,0 +1,79 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>software.amazon.lambda.durable.util Class Hierarchy (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="tree: package: software.amazon.lambda.durable.util">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li>Use</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package software.amazon.lambda.durable.util</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="CompletedDurableFuture.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">CompletedDurableFuture</a>&lt;T&gt; (implements software.amazon.lambda.durable.<a href="../DurableFuture.html" title="interface in software.amazon.lambda.durable">DurableFuture</a>&lt;T&gt;)</li>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="ExceptionHelper.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ExceptionHelper</a></li>
    +<li class="circle">software.amazon.lambda.durable.util.<a href="ParameterValidator.html" class="type-name-link" title="class in software.amazon.lambda.durable.util">ParameterValidator</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/software/amazon/lambda/durable/util/package-use.html b/javadoc/software/amazon/lambda/durable/util/package-use.html
    new file mode 100644
    index 000000000..35e340440
    --- /dev/null
    +++ b/javadoc/software/amazon/lambda/durable/util/package-use.html
    @@ -0,0 +1,63 @@
    +<!DOCTYPE HTML>
    +<html lang>
    +<head>
    +<!-- Generated by javadoc (17) on Thu Apr 09 00:40:24 UTC 2026 -->
    +<title>Uses of Package software.amazon.lambda.durable.util (AWS Lambda Durable Execution SDK 1.0.1-SNAPSHOT API)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    +<meta name="dc.created" content="2026-04-09">
    +<meta name="description" content="use: package: software.amazon.lambda.durable.util">
    +<meta name="generator" content="javadoc/PackageUseWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-use-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top">
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Use</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
    +<li><a href="../../../../../index-all.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#use">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div class="nav-list-search"><label for="search-input">SEARCH:</label>
    +<input type="text" id="search-input" value="search" disabled="disabled">
    +<input type="reset" id="reset-button" value="reset" disabled="disabled">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Uses of Package software.amazon.lambda.durable.util" class="title">Uses of Package<br>software.amazon.lambda.durable.util</h1>
    +</div>
    +No usage of software.amazon.lambda.durable.util</main>
    +<footer role="contentinfo">
    +<hr>
    +<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
    +</footer>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css
    new file mode 100644
    index 000000000..4a576bd24
    --- /dev/null
    +++ b/javadoc/stylesheet.css
    @@ -0,0 +1,869 @@
    +/*
    + * Javadoc style sheet
    + */
    +
    +@import url('resources/fonts/dejavu.css');
    +
    +/*
    + * Styles for individual HTML elements.
    + *
    + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
    + * HTML element throughout the page.
    + */
    +
    +body {
    +    background-color:#ffffff;
    +    color:#353833;
    +    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size:14px;
    +    margin:0;
    +    padding:0;
    +    height:100%;
    +    width:100%;
    +}
    +iframe {
    +    margin:0;
    +    padding:0;
    +    height:100%;
    +    width:100%;
    +    overflow-y:scroll;
    +    border:none;
    +}
    +a:link, a:visited {
    +    text-decoration:none;
    +    color:#4A6782;
    +}
    +a[href]:hover, a[href]:focus {
    +    text-decoration:none;
    +    color:#bb7a2a;
    +}
    +a[name] {
    +    color:#353833;
    +}
    +pre {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +}
    +h1 {
    +    font-size:20px;
    +}
    +h2 {
    +    font-size:18px;
    +}
    +h3 {
    +    font-size:16px;
    +}
    +h4 {
    +    font-size:15px;
    +}
    +h5 {
    +    font-size:14px;
    +}
    +h6 {
    +    font-size:13px;
    +}
    +ul {
    +    list-style-type:disc;
    +}
    +code, tt {
    +    font-family:'DejaVu Sans Mono', monospace;
    +}
    +:not(h1, h2, h3, h4, h5, h6) > code,
    +:not(h1, h2, h3, h4, h5, h6) > tt {
    +    font-size:14px;
    +    padding-top:4px;
    +    margin-top:8px;
    +    line-height:1.4em;
    +}
    +dt code {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    padding-top:4px;
    +}
    +.summary-table dt code {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    vertical-align:top;
    +    padding-top:4px;
    +}
    +sup {
    +    font-size:8px;
    +}
    +button {
    +    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size: 14px;
    +}
    +/*
    + * Styles for HTML generated by javadoc.
    + *
    + * These are style classes that are used by the standard doclet to generate HTML documentation.
    + */
    +
    +/*
    + * Styles for document title and copyright.
    + */
    +.clear {
    +    clear:both;
    +    height:0;
    +    overflow:hidden;
    +}
    +.about-language {
    +    float:right;
    +    padding:0 21px 8px 8px;
    +    font-size:11px;
    +    margin-top:-9px;
    +    height:2.9em;
    +}
    +.legal-copy {
    +    margin-left:.5em;
    +}
    +.tab {
    +    background-color:#0066FF;
    +    color:#ffffff;
    +    padding:8px;
    +    width:5em;
    +    font-weight:bold;
    +}
    +/*
    + * Styles for navigation bar.
    + */
    +@media screen {
    +    .flex-box {
    +        position:fixed;
    +        display:flex;
    +        flex-direction:column;
    +        height: 100%;
    +        width: 100%;
    +    }
    +    .flex-header {
    +        flex: 0 0 auto;
    +    }
    +    .flex-content {
    +        flex: 1 1 auto;
    +        overflow-y: auto;
    +    }
    +}
    +.top-nav {
    +    background-color:#4D7A97;
    +    color:#FFFFFF;
    +    float:left;
    +    padding:0;
    +    width:100%;
    +    clear:right;
    +    min-height:2.8em;
    +    padding-top:10px;
    +    overflow:hidden;
    +    font-size:12px;
    +}
    +.sub-nav {
    +    background-color:#dee3e9;
    +    float:left;
    +    width:100%;
    +    overflow:hidden;
    +    font-size:12px;
    +}
    +.sub-nav div {
    +    clear:left;
    +    float:left;
    +    padding:0 0 5px 6px;
    +    text-transform:uppercase;
    +}
    +.sub-nav .nav-list {
    +    padding-top:5px;
    +}
    +ul.nav-list {
    +    display:block;
    +    margin:0 25px 0 0;
    +    padding:0;
    +}
    +ul.sub-nav-list {
    +    float:left;
    +    margin:0 25px 0 0;
    +    padding:0;
    +}
    +ul.nav-list li {
    +    list-style:none;
    +    float:left;
    +    padding: 5px 6px;
    +    text-transform:uppercase;
    +}
    +.sub-nav .nav-list-search {
    +    float:right;
    +    margin:0 0 0 0;
    +    padding:5px 6px;
    +    clear:none;
    +}
    +.nav-list-search label {
    +    position:relative;
    +    right:-16px;
    +}
    +ul.sub-nav-list li {
    +    list-style:none;
    +    float:left;
    +    padding-top:10px;
    +}
    +.top-nav a:link, .top-nav a:active, .top-nav a:visited {
    +    color:#FFFFFF;
    +    text-decoration:none;
    +    text-transform:uppercase;
    +}
    +.top-nav a:hover {
    +    text-decoration:none;
    +    color:#bb7a2a;
    +    text-transform:uppercase;
    +}
    +.nav-bar-cell1-rev {
    +    background-color:#F8981D;
    +    color:#253441;
    +    margin: auto 5px;
    +}
    +.skip-nav {
    +    position:absolute;
    +    top:auto;
    +    left:-9999px;
    +    overflow:hidden;
    +}
    +/*
    + * Hide navigation links and search box in print layout
    + */
    +@media print {
    +    ul.nav-list, div.sub-nav  {
    +        display:none;
    +    }
    +}
    +/*
    + * Styles for page header and footer.
    + */
    +.title {
    +    color:#2c4557;
    +    margin:10px 0;
    +}
    +.sub-title {
    +    margin:5px 0 0 0;
    +}
    +.header ul {
    +    margin:0 0 15px 0;
    +    padding:0;
    +}
    +.header ul li, .footer ul li {
    +    list-style:none;
    +    font-size:13px;
    +}
    +/*
    + * Styles for headings.
    + */
    +body.class-declaration-page .summary h2,
    +body.class-declaration-page .details h2,
    +body.class-use-page  h2,
    +body.module-declaration-page  .block-list h2 {
    +    font-style: italic;
    +    padding:0;
    +    margin:15px 0;
    +}
    +body.class-declaration-page .summary h3,
    +body.class-declaration-page .details h3,
    +body.class-declaration-page .summary .inherited-list h2 {
    +    background-color:#dee3e9;
    +    border:1px solid #d0d9e0;
    +    margin:0 0 6px -8px;
    +    padding:7px 5px;
    +}
    +/*
    + * Styles for page layout containers.
    + */
    +main {
    +    clear:both;
    +    padding:10px 20px;
    +    position:relative;
    +}
    +dl.notes > dt {
    +    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size:12px;
    +    font-weight:bold;
    +    margin:10px 0 0 0;
    +    color:#4E4E4E;
    +}
    +dl.notes > dd {
    +    margin:5px 10px 10px 0;
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +}
    +dl.name-value > dt {
    +    margin-left:1px;
    +    font-size:1.1em;
    +    display:inline;
    +    font-weight:bold;
    +}
    +dl.name-value > dd {
    +    margin:0 0 0 1px;
    +    font-size:1.1em;
    +    display:inline;
    +}
    +/*
    + * Styles for lists.
    + */
    +li.circle {
    +    list-style:circle;
    +}
    +ul.horizontal li {
    +    display:inline;
    +    font-size:0.9em;
    +}
    +div.inheritance {
    +    margin:0;
    +    padding:0;
    +}
    +div.inheritance div.inheritance {
    +    margin-left:2em;
    +}
    +ul.block-list,
    +ul.details-list,
    +ul.member-list,
    +ul.summary-list {
    +    margin:10px 0 10px 0;
    +    padding:0;
    +}
    +ul.block-list > li,
    +ul.details-list > li,
    +ul.member-list > li,
    +ul.summary-list > li {
    +    list-style:none;
    +    margin-bottom:15px;
    +    line-height:1.4;
    +}
    +.summary-table dl, .summary-table dl dt, .summary-table dl dd {
    +    margin-top:0;
    +    margin-bottom:1px;
    +}
    +ul.see-list, ul.see-list-long {
    +    padding-left: 0;
    +    list-style: none;
    +}
    +ul.see-list li {
    +    display: inline;
    +}
    +ul.see-list li:not(:last-child):after,
    +ul.see-list-long li:not(:last-child):after {
    +    content: ", ";
    +    white-space: pre-wrap;
    +}
    +/*
    + * Styles for tables.
    + */
    +.summary-table, .details-table {
    +    width:100%;
    +    border-spacing:0;
    +    border-left:1px solid #EEE;
    +    border-right:1px solid #EEE;
    +    border-bottom:1px solid #EEE;
    +    padding:0;
    +}
    +.caption {
    +    position:relative;
    +    text-align:left;
    +    background-repeat:no-repeat;
    +    color:#253441;
    +    font-weight:bold;
    +    clear:none;
    +    overflow:hidden;
    +    padding:0;
    +    padding-top:10px;
    +    padding-left:1px;
    +    margin:0;
    +    white-space:pre;
    +}
    +.caption a:link, .caption a:visited {
    +    color:#1f389c;
    +}
    +.caption a:hover,
    +.caption a:active {
    +    color:#FFFFFF;
    +}
    +.caption span {
    +    white-space:nowrap;
    +    padding-top:5px;
    +    padding-left:12px;
    +    padding-right:12px;
    +    padding-bottom:7px;
    +    display:inline-block;
    +    float:left;
    +    background-color:#F8981D;
    +    border: none;
    +    height:16px;
    +}
    +div.table-tabs {
    +    padding:10px 0 0 1px;
    +    margin:0;
    +}
    +div.table-tabs > button {
    +   border: none;
    +   cursor: pointer;
    +   padding: 5px 12px 7px 12px;
    +   font-weight: bold;
    +   margin-right: 3px;
    +}
    +div.table-tabs > button.active-table-tab {
    +   background: #F8981D;
    +   color: #253441;
    +}
    +div.table-tabs > button.table-tab {
    +   background: #4D7A97;
    +   color: #FFFFFF;
    +}
    +.two-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
    +}
    +.three-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
    +}
    +.four-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
    +}
    +@media screen and (max-width: 600px) {
    +    .two-column-summary {
    +        display: grid;
    +        grid-template-columns: 1fr;
    +    }
    +}
    +@media screen and (max-width: 800px) {
    +    .three-column-summary {
    +        display: grid;
    +        grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
    +    }
    +    .three-column-summary .col-last {
    +        grid-column-end: span 2;
    +    }
    +}
    +@media screen and (max-width: 1000px) {
    +    .four-column-summary {
    +        display: grid;
    +        grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
    +    }
    +}
    +.summary-table > div, .details-table > div {
    +    text-align:left;
    +    padding: 8px 3px 3px 7px;
    +}
    +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
    +    vertical-align:top;
    +    padding-right:0;
    +    padding-top:8px;
    +    padding-bottom:3px;
    +}
    +.table-header {
    +    background:#dee3e9;
    +    font-weight: bold;
    +}
    +.col-first, .col-first {
    +    font-size:13px;
    +}
    +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
    +    font-size:13px;
    +}
    +.col-first, .col-second, .col-constructor-name {
    +    vertical-align:top;
    +    overflow: auto;
    +}
    +.col-last {
    +    white-space:normal;
    +}
    +.col-first a:link, .col-first a:visited,
    +.col-second a:link, .col-second a:visited,
    +.col-first a:link, .col-first a:visited,
    +.col-second a:link, .col-second a:visited,
    +.col-constructor-name a:link, .col-constructor-name a:visited,
    +.col-summary-item-name a:link, .col-summary-item-name a:visited,
    +.constant-values-container a:link, .constant-values-container a:visited,
    +.all-classes-container a:link, .all-classes-container a:visited,
    +.all-packages-container a:link, .all-packages-container a:visited {
    +    font-weight:bold;
    +}
    +.table-sub-heading-color {
    +    background-color:#EEEEFF;
    +}
    +.even-row-color, .even-row-color .table-header {
    +    background-color:#FFFFFF;
    +}
    +.odd-row-color, .odd-row-color .table-header {
    +    background-color:#EEEEEF;
    +}
    +/*
    + * Styles for contents.
    + */
    +.deprecated-content {
    +    margin:0;
    +    padding:10px 0;
    +}
    +div.block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +}
    +.col-last div {
    +    padding-top:0;
    +}
    +.col-last a {
    +    padding-bottom:3px;
    +}
    +.module-signature,
    +.package-signature,
    +.type-signature,
    +.member-signature {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    margin:14px 0;
    +    white-space: pre-wrap;
    +}
    +.module-signature,
    +.package-signature,
    +.type-signature {
    +    margin-top: 0;
    +}
    +.member-signature .type-parameters-long,
    +.member-signature .parameters,
    +.member-signature .exceptions {
    +    display: inline-block;
    +    vertical-align: top;
    +    white-space: pre;
    +}
    +.member-signature .type-parameters {
    +    white-space: normal;
    +}
    +/*
    + * Styles for formatting effect.
    + */
    +.source-line-no {
    +    color:green;
    +    padding:0 30px 0 0;
    +}
    +h1.hidden {
    +    visibility:hidden;
    +    overflow:hidden;
    +    font-size:10px;
    +}
    +.block {
    +    display:block;
    +    margin:0 10px 5px 0;
    +    color:#474747;
    +}
    +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
    +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
    +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
    +    font-weight:bold;
    +}
    +.deprecation-comment, .help-footnote, .preview-comment {
    +    font-style:italic;
    +}
    +.deprecation-block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +    border-style:solid;
    +    border-width:thin;
    +    border-radius:10px;
    +    padding:10px;
    +    margin-bottom:10px;
    +    margin-right:10px;
    +    display:inline-block;
    +}
    +.preview-block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +    border-style:solid;
    +    border-width:thin;
    +    border-radius:10px;
    +    padding:10px;
    +    margin-bottom:10px;
    +    margin-right:10px;
    +    display:inline-block;
    +}
    +div.block div.deprecation-comment {
    +    font-style:normal;
    +}
    +/*
    + * Styles specific to HTML5 elements.
    + */
    +main, nav, header, footer, section {
    +    display:block;
    +}
    +/*
    + * Styles for javadoc search.
    + */
    +.ui-autocomplete-category {
    +    font-weight:bold;
    +    font-size:15px;
    +    padding:7px 0 7px 3px;
    +    background-color:#4D7A97;
    +    color:#FFFFFF;
    +}
    +.result-item {
    +    font-size:13px;
    +}
    +.ui-autocomplete {
    +    max-height:85%;
    +    max-width:65%;
    +    overflow-y:scroll;
    +    overflow-x:scroll;
    +    white-space:nowrap;
    +    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
    +}
    +ul.ui-autocomplete {
    +    position:fixed;
    +    z-index:999999;
    +    background-color: #FFFFFF;
    +}
    +ul.ui-autocomplete  li {
    +    float:left;
    +    clear:both;
    +    width:100%;
    +}
    +.result-highlight {
    +    font-weight:bold;
    +}
    +.ui-autocomplete .result-item {
    +    font-size: inherit;
    +}
    +#search-input {
    +    background-image:url('resources/glass.png');
    +    background-size:13px;
    +    background-repeat:no-repeat;
    +    background-position:2px 3px;
    +    padding-left:20px;
    +    position:relative;
    +    right:-18px;
    +    width:400px;
    +}
    +#reset-button {
    +    background-color: rgb(255,255,255);
    +    background-image:url('resources/x.png');
    +    background-position:center;
    +    background-repeat:no-repeat;
    +    background-size:12px;
    +    border:0 none;
    +    width:16px;
    +    height:16px;
    +    position:relative;
    +    left:-4px;
    +    top:-4px;
    +    font-size:0px;
    +}
    +.watermark {
    +    color:#545454;
    +}
    +.search-tag-desc-result {
    +    font-style:italic;
    +    font-size:11px;
    +}
    +.search-tag-holder-result {
    +    font-style:italic;
    +    font-size:12px;
    +}
    +.search-tag-result:target {
    +    background-color:yellow;
    +}
    +.module-graph span {
    +    display:none;
    +    position:absolute;
    +}
    +.module-graph:hover span {
    +    display:block;
    +    margin: -100px 0 0 100px;
    +    z-index: 1;
    +}
    +.inherited-list {
    +    margin: 10px 0 10px 0;
    +}
    +section.class-description {
    +    line-height: 1.4;
    +}
    +.summary section[class$="-summary"], .details section[class$="-details"],
    +.class-uses .detail, .serialized-class-details {
    +    padding: 0px 20px 5px 10px;
    +    border: 1px solid #ededed;
    +    background-color: #f8f8f8;
    +}
    +.inherited-list, section[class$="-details"] .detail {
    +    padding:0 0 5px 8px;
    +    background-color:#ffffff;
    +    border:none;
    +}
    +.vertical-separator {
    +    padding: 0 5px;
    +}
    +ul.help-section-list {
    +    margin: 0;
    +}
    +ul.help-subtoc > li {
    +  display: inline-block;
    +  padding-right: 5px;
    +  font-size: smaller;
    +}
    +ul.help-subtoc > li::before {
    +  content: "\2022" ;
    +  padding-right:2px;
    +}
    +span.help-note {
    +    font-style: italic;
    +}
    +/*
    + * Indicator icon for external links.
    + */
    +main a[href*="://"]::after {
    +    content:"";
    +    display:inline-block;
    +    background-image:url('data:image/svg+xml; utf8, \
    +      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
    +        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
    +        132-240 240 120 120 240-240 132 132V0z" fill="%234a6782"/>\
    +      </svg>');
    +    background-size:100% 100%;
    +    width:7px;
    +    height:7px;
    +    margin-left:2px;
    +    margin-bottom:4px;
    +}
    +main a[href*="://"]:hover::after,
    +main a[href*="://"]:focus::after {
    +    background-image:url('data:image/svg+xml; utf8, \
    +      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
    +        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
    +        132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\
    +      </svg>');
    +}
    +
    +/*
    + * Styles for user-provided tables.
    + *
    + * borderless:
    + *      No borders, vertical margins, styled caption.
    + *      This style is provided for use with existing doc comments.
    + *      In general, borderless tables should not be used for layout purposes.
    + *
    + * plain:
    + *      Plain borders around table and cells, vertical margins, styled caption.
    + *      Best for small tables or for complex tables for tables with cells that span
    + *      rows and columns, when the "striped" style does not work well.
    + *
    + * striped:
    + *      Borders around the table and vertical borders between cells, striped rows,
    + *      vertical margins, styled caption.
    + *      Best for tables that have a header row, and a body containing a series of simple rows.
    + */
    +
    +table.borderless,
    +table.plain,
    +table.striped {
    +    margin-top: 10px;
    +    margin-bottom: 10px;
    +}
    +table.borderless > caption,
    +table.plain > caption,
    +table.striped > caption {
    +    font-weight: bold;
    +    font-size: smaller;
    +}
    +table.borderless th, table.borderless td,
    +table.plain th, table.plain td,
    +table.striped th, table.striped td {
    +    padding: 2px 5px;
    +}
    +table.borderless,
    +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
    +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
    +    border: none;
    +}
    +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
    +    background-color: transparent;
    +}
    +table.plain {
    +    border-collapse: collapse;
    +    border: 1px solid black;
    +}
    +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
    +    background-color: transparent;
    +}
    +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
    +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
    +    border: 1px solid black;
    +}
    +table.striped {
    +    border-collapse: collapse;
    +    border: 1px solid black;
    +}
    +table.striped > thead {
    +    background-color: #E3E3E3;
    +}
    +table.striped > thead > tr > th, table.striped > thead > tr > td {
    +    border: 1px solid black;
    +}
    +table.striped > tbody > tr:nth-child(even) {
    +    background-color: #EEE
    +}
    +table.striped > tbody > tr:nth-child(odd) {
    +    background-color: #FFF
    +}
    +table.striped > tbody > tr > th, table.striped > tbody > tr > td {
    +    border-left: 1px solid black;
    +    border-right: 1px solid black;
    +}
    +table.striped > tbody > tr > th {
    +    font-weight: normal;
    +}
    +/**
    + * Tweak font sizes and paddings for small screens.
    + */
    +@media screen and (max-width: 1050px) {
    +    #search-input {
    +        width: 300px;
    +    }
    +}
    +@media screen and (max-width: 800px) {
    +    #search-input {
    +        width: 200px;
    +    }
    +    .top-nav,
    +    .bottom-nav {
    +        font-size: 11px;
    +        padding-top: 6px;
    +    }
    +    .sub-nav {
    +        font-size: 11px;
    +    }
    +    .about-language {
    +        padding-right: 16px;
    +    }
    +    ul.nav-list li,
    +    .sub-nav .nav-list-search {
    +        padding: 6px;
    +    }
    +    ul.sub-nav-list li {
    +        padding-top: 5px;
    +    }
    +    main {
    +        padding: 10px;
    +    }
    +    .summary section[class$="-summary"], .details section[class$="-details"],
    +    .class-uses .detail, .serialized-class-details {
    +        padding: 0 8px 5px 8px;
    +    }
    +    body {
    +        -webkit-text-size-adjust: none;
    +    }
    +}
    +@media screen and (max-width: 500px) {
    +    #search-input {
    +        width: 150px;
    +    }
    +    .top-nav,
    +    .bottom-nav {
    +        font-size: 10px;
    +    }
    +    .sub-nav {
    +        font-size: 10px;
    +    }
    +    .about-language {
    +        font-size: 10px;
    +        padding-right: 12px;
    +    }
    +}
    diff --git a/javadoc/tag-search-index.js b/javadoc/tag-search-index.js
    new file mode 100644
    index 000000000..bf10aaf6d
    --- /dev/null
    +++ b/javadoc/tag-search-index.js
    @@ -0,0 +1 @@
    +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/javadoc/type-search-index.js b/javadoc/type-search-index.js
    new file mode 100644
    index 000000000..e8e911648
    --- /dev/null
    +++ b/javadoc/type-search-index.js
    @@ -0,0 +1 @@
    +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"software.amazon.lambda.durable.execution","l":"ApiRequestDelayedBatcher"},{"p":"software.amazon.lambda.durable.examples.types","l":"ApprovalRequest"},{"p":"software.amazon.lambda.durable.testing","l":"AsyncExecution"},{"p":"software.amazon.lambda.durable.serde","l":"AwsSdkV2Module"},{"p":"software.amazon.lambda.durable.context","l":"BaseContext"},{"p":"software.amazon.lambda.durable.context","l":"BaseContextImpl"},{"p":"software.amazon.lambda.durable.operation","l":"BaseDurableOperation"},{"p":"software.amazon.lambda.durable.config","l":"CallbackConfig.Builder"},{"p":"software.amazon.lambda.durable","l":"DurableConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"InvokeConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"MapConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"ParallelBranchConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"ParallelConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"RunInChildContextConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"StepConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"WaitForCallbackConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"WaitForConditionConfig.Builder"},{"p":"software.amazon.lambda.durable.config","l":"CallbackConfig"},{"p":"software.amazon.lambda.durable.examples.callback","l":"CallbackExample"},{"p":"software.amazon.lambda.durable.exception","l":"CallbackException"},{"p":"software.amazon.lambda.durable.exception","l":"CallbackFailedException"},{"p":"software.amazon.lambda.durable.operation","l":"CallbackOperation"},{"p":"software.amazon.lambda.durable.exception","l":"CallbackSubmitterException"},{"p":"software.amazon.lambda.durable.exception","l":"CallbackTimeoutException"},{"p":"software.amazon.lambda.durable.examples.child","l":"ChildContextExample"},{"p":"software.amazon.lambda.durable.exception","l":"ChildContextFailedException"},{"p":"software.amazon.lambda.durable.operation","l":"ChildContextOperation"},{"p":"software.amazon.lambda.durable.testing","l":"CloudDurableTestRunner"},{"p":"software.amazon.lambda.durable.util","l":"CompletedDurableFuture"},{"p":"software.amazon.lambda.durable.config","l":"CompletionConfig"},{"p":"software.amazon.lambda.durable.examples.map","l":"ComplexMapExample"},{"p":"software.amazon.lambda.durable.model","l":"ConcurrencyCompletionStatus"},{"p":"software.amazon.lambda.durable.operation","l":"ConcurrencyOperation"},{"p":"software.amazon.lambda.durable.examples.wait","l":"ConcurrentWaitForConditionExample"},{"p":"software.amazon.lambda.durable.examples.general","l":"CustomConfigExample"},{"p":"software.amazon.lambda.durable.examples.general","l":"CustomConfigExample.CustomData"},{"p":"software.amazon.lambda.durable.examples.general","l":"CustomPollingExample"},{"p":"software.amazon.lambda.durable.examples.map","l":"DeserializationFailedMapExample"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"DeserializationFailedParallelExample"},{"p":"software.amazon.lambda.durable.examples.step","l":"DeserializationFailureExample"},{"p":"software.amazon.lambda.durable","l":"DurableCallbackFuture"},{"p":"software.amazon.lambda.durable","l":"DurableConfig"},{"p":"software.amazon.lambda.durable","l":"DurableContext"},{"p":"software.amazon.lambda.durable.context","l":"DurableContextImpl"},{"p":"software.amazon.lambda.durable.client","l":"DurableExecutionClient"},{"p":"software.amazon.lambda.durable.exception","l":"DurableExecutionException"},{"p":"software.amazon.lambda.durable.model","l":"DurableExecutionInput"},{"p":"software.amazon.lambda.durable.model","l":"DurableExecutionOutput"},{"p":"software.amazon.lambda.durable.execution","l":"DurableExecutor"},{"p":"software.amazon.lambda.durable","l":"DurableFuture"},{"p":"software.amazon.lambda.durable","l":"DurableHandler"},{"p":"software.amazon.lambda.durable.serde","l":"DurableInputOutputSerDes"},{"p":"software.amazon.lambda.durable.logging","l":"DurableLogger"},{"p":"software.amazon.lambda.durable.exception","l":"DurableOperationException"},{"p":"software.amazon.lambda.durable.examples.general","l":"ErrorHandlingExample"},{"p":"software.amazon.lambda.durable.util","l":"ExceptionHelper"},{"p":"software.amazon.lambda.durable.execution","l":"ExecutionManager"},{"p":"software.amazon.lambda.durable.model","l":"ExecutionStatus"},{"p":"software.amazon.lambda.durable.examples.general","l":"GenericInputOutputExample"},{"p":"software.amazon.lambda.durable.examples.general","l":"GenericTypesExample"},{"p":"software.amazon.lambda.durable.examples.types","l":"GreetingRequest"},{"p":"software.amazon.lambda.durable.testing.cloud","l":"HistoryEventProcessor"},{"p":"software.amazon.lambda.durable.testing.cloud","l":"HistoryPoller"},{"p":"software.amazon.lambda.durable.exception","l":"IllegalDurableOperationException"},{"p":"software.amazon.lambda.durable.examples.wait","l":"ConcurrentWaitForConditionExample.Input"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"DeserializationFailedParallelExample.Input"},{"p":"software.amazon.lambda.durable.examples.general","l":"GenericTypesExample.Input"},{"p":"software.amazon.lambda.durable.examples.child","l":"ManyAsyncChildContextExample.Input"},{"p":"software.amazon.lambda.durable.examples.step","l":"ManyAsyncStepsExample.Input"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelExample.Input"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelFailureToleranceExample.Input"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelWithWaitExample.Input"},{"p":"software.amazon.lambda.durable.config","l":"InvokeConfig"},{"p":"software.amazon.lambda.durable.exception","l":"InvokeException"},{"p":"software.amazon.lambda.durable.exception","l":"InvokeFailedException"},{"p":"software.amazon.lambda.durable.operation","l":"InvokeOperation"},{"p":"software.amazon.lambda.durable.exception","l":"InvokeStoppedException"},{"p":"software.amazon.lambda.durable.exception","l":"InvokeTimedOutException"},{"p":"software.amazon.lambda.durable.serde","l":"JacksonSerDes"},{"p":"software.amazon.lambda.durable.retry","l":"JitterStrategy"},{"p":"software.amazon.lambda.durable.client","l":"LambdaDurableFunctionsClient"},{"p":"software.amazon.lambda.durable.testing","l":"LocalDurableTestRunner"},{"p":"software.amazon.lambda.durable.testing.local","l":"LocalMemoryExecutionClient"},{"p":"software.amazon.lambda.durable.logging","l":"LoggerConfig"},{"p":"software.amazon.lambda.durable.examples.general","l":"LoggingExample"},{"p":"software.amazon.lambda.durable.examples.child","l":"ManyAsyncChildContextExample"},{"p":"software.amazon.lambda.durable.examples.step","l":"ManyAsyncStepsExample"},{"p":"software.amazon.lambda.durable.config","l":"MapConfig"},{"p":"software.amazon.lambda.durable.model","l":"MapResult.MapError"},{"p":"software.amazon.lambda.durable","l":"DurableContext.MapFunction"},{"p":"software.amazon.lambda.durable.exception","l":"MapIterationFailedException"},{"p":"software.amazon.lambda.durable.operation","l":"MapOperation"},{"p":"software.amazon.lambda.durable.model","l":"MapResult"},{"p":"software.amazon.lambda.durable.model","l":"MapResult.MapResultItem"},{"p":"software.amazon.lambda.durable.exception","l":"NonDeterministicExecutionException"},{"p":"software.amazon.lambda.durable.examples.general","l":"NoopExample"},{"p":"software.amazon.lambda.durable.model","l":"OperationIdentifier"},{"p":"software.amazon.lambda.durable.execution","l":"OperationIdGenerator"},{"p":"software.amazon.lambda.durable.testing.local","l":"OperationResult"},{"p":"software.amazon.lambda.durable.model","l":"OperationSubType"},{"p":"software.amazon.lambda.durable.examples.general","l":"GenericTypesExample.Output"},{"p":"software.amazon.lambda.durable.examples.child","l":"ManyAsyncChildContextExample.Output"},{"p":"software.amazon.lambda.durable.examples.step","l":"ManyAsyncStepsExample.Output"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelExample.Output"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelFailureToleranceExample.Output"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelWithWaitExample.Output"},{"p":"software.amazon.lambda.durable.config","l":"ParallelBranchConfig"},{"p":"software.amazon.lambda.durable.exception","l":"ParallelBranchFailedException"},{"p":"software.amazon.lambda.durable.config","l":"ParallelConfig"},{"p":"software.amazon.lambda.durable","l":"ParallelDurableFuture"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelExample"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelFailureToleranceExample"},{"p":"software.amazon.lambda.durable.operation","l":"ParallelOperation"},{"p":"software.amazon.lambda.durable.model","l":"ParallelResult"},{"p":"software.amazon.lambda.durable.examples.parallel","l":"ParallelWithWaitExample"},{"p":"software.amazon.lambda.durable.util","l":"ParameterValidator"},{"p":"software.amazon.lambda.durable.retry","l":"PollingStrategies"},{"p":"software.amazon.lambda.durable.retry","l":"PollingStrategy"},{"p":"software.amazon.lambda.durable.retry","l":"PollingStrategies.Presets"},{"p":"software.amazon.lambda.durable.retry","l":"RetryStrategies.Presets"},{"p":"software.amazon.lambda.durable.retry","l":"WaitStrategies.Presets"},{"p":"software.amazon.lambda.durable.retry","l":"RetryDecision"},{"p":"software.amazon.lambda.durable.examples.step","l":"RetryExample"},{"p":"software.amazon.lambda.durable.examples.step","l":"RetryInProcessExample"},{"p":"software.amazon.lambda.durable.retry","l":"RetryStrategies"},{"p":"software.amazon.lambda.durable.retry","l":"RetryStrategy"},{"p":"software.amazon.lambda.durable.config","l":"RunInChildContextConfig"},{"p":"software.amazon.lambda.durable.serde","l":"SerDes"},{"p":"software.amazon.lambda.durable.exception","l":"SerDesException"},{"p":"software.amazon.lambda.durable.operation","l":"SerializableDurableOperation"},{"p":"software.amazon.lambda.durable.examples.general","l":"ErrorHandlingExample.ServiceUnavailableException"},{"p":"software.amazon.lambda.durable.examples.invoke","l":"SimpleInvokeExample"},{"p":"software.amazon.lambda.durable.examples.map","l":"SimpleMapExample"},{"p":"software.amazon.lambda.durable.examples.step","l":"SimpleStepExample"},{"p":"software.amazon.lambda.durable.model","l":"MapResult.MapResultItem.Status"},{"p":"software.amazon.lambda.durable.config","l":"StepConfig"},{"p":"software.amazon.lambda.durable","l":"StepContext"},{"p":"software.amazon.lambda.durable.context","l":"StepContextImpl"},{"p":"software.amazon.lambda.durable.exception","l":"StepException"},{"p":"software.amazon.lambda.durable.exception","l":"StepFailedException"},{"p":"software.amazon.lambda.durable.exception","l":"StepInterruptedException"},{"p":"software.amazon.lambda.durable.operation","l":"StepOperation"},{"p":"software.amazon.lambda.durable.config","l":"StepSemantics"},{"p":"software.amazon.lambda.durable.execution","l":"SuspendExecutionException"},{"p":"software.amazon.lambda.durable.testing","l":"TestOperation"},{"p":"software.amazon.lambda.durable.testing","l":"TestResult"},{"p":"software.amazon.lambda.durable.execution","l":"ThreadContext"},{"p":"software.amazon.lambda.durable.execution","l":"ThreadType"},{"p":"software.amazon.lambda.durable","l":"TypeToken"},{"p":"software.amazon.lambda.durable.exception","l":"UnrecoverableDurableExecutionException"},{"p":"software.amazon.lambda.durable.examples.wait","l":"WaitAsyncExample"},{"p":"software.amazon.lambda.durable.examples.wait","l":"WaitAtLeastExample"},{"p":"software.amazon.lambda.durable.examples.wait","l":"WaitAtLeastInProcessExample"},{"p":"software.amazon.lambda.durable.examples.wait","l":"WaitExample"},{"p":"software.amazon.lambda.durable.config","l":"WaitForCallbackConfig"},{"p":"software.amazon.lambda.durable.examples.callback","l":"WaitForCallbackFailedExample"},{"p":"software.amazon.lambda.durable.config","l":"WaitForConditionConfig"},{"p":"software.amazon.lambda.durable.examples.wait","l":"WaitForConditionExample"},{"p":"software.amazon.lambda.durable.exception","l":"WaitForConditionFailedException"},{"p":"software.amazon.lambda.durable.operation","l":"WaitForConditionOperation"},{"p":"software.amazon.lambda.durable.model","l":"WaitForConditionResult"},{"p":"software.amazon.lambda.durable.retry","l":"WaitForConditionWaitStrategy"},{"p":"software.amazon.lambda.durable.operation","l":"WaitOperation"},{"p":"software.amazon.lambda.durable.retry","l":"WaitStrategies"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/license-header b/license-header
    deleted file mode 100644
    index cf1406c94..000000000
    --- a/license-header
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    diff --git a/milestone/badge.svg b/milestone/badge.svg
    new file mode 100644
    index 000000000..94ad470a3
    --- /dev/null
    +++ b/milestone/badge.svg
    @@ -0,0 +1 @@
    +<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20" role="img" aria-label="Next Milestone: 1.1 - Apr 30 2026"><title>Next Milestone: 1.1 - Apr 30 2026</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="200" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="91" height="20" fill="#555"/><rect x="91" width="109" height="20" fill="#007ec6"/><rect width="200" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="465" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="810">Next Milestone</text><text x="465" y="140" transform="scale(.1)" fill="#fff" textLength="810">Next Milestone</text><text aria-hidden="true" x="1445" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="990">1.1 - Apr 30 2026</text><text x="1445" y="140" transform="scale(.1)" fill="#fff" textLength="990">1.1 - Apr 30 2026</text></g></svg>
    \ No newline at end of file
    diff --git a/pom.xml b/pom.xml
    deleted file mode 100644
    index 15127a1ad..000000000
    --- a/pom.xml
    +++ /dev/null
    @@ -1,262 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<project xmlns="http://maven.apache.org/POM/4.0.0"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -    <modelVersion>4.0.0</modelVersion>
    -
    -    <groupId>software.amazon.lambda.durable</groupId>
    -    <artifactId>aws-durable-execution-sdk-java-parent</artifactId>
    -    <version>1.0.1-SNAPSHOT</version>
    -    <packaging>pom</packaging>
    -
    -    <name>AWS Lambda Durable Execution SDK</name>
    -    <description>Parent POM for AWS Lambda Durable Execution SDK and Examples</description>
    -    <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -
    -    <licenses>
    -        <license>
    -            <name>Apache License 2.0</name>
    -            <url>http://aws.amazon.com/apache2.0</url>
    -            <distribution>repo</distribution>
    -        </license>
    -    </licenses>
    -
    -    <developers>
    -        <developer>
    -            <id>amazonwebservices</id>
    -            <organization>Amazon Web Services</organization>
    -            <organizationUrl>http://aws.amazon.com</organizationUrl>
    -            <roles>
    -                <role>developer</role>
    -            </roles>
    -        </developer>
    -    </developers>
    -
    -    <scm>
    -        <connection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</connection>
    -        <developerConnection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</developerConnection>
    -        <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -    </scm>
    -
    -    <modules>
    -        <module>sdk</module>
    -        <module>sdk-testing</module>
    -        <module>sdk-integration-tests</module>
    -        <module>examples</module>
    -        <module>coverage-report</module>
    -    </modules>
    -
    -    <properties>
    -        <maven.compiler.source>17</maven.compiler.source>
    -        <maven.compiler.target>17</maven.compiler.target>
    -        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    -        <aws.sdk.version>2.42.30</aws.sdk.version>
    -        <jackson.version>2.21.2</jackson.version>
    -        <junit.version>6.0.3</junit.version>
    -        <mockito.version>5.23.0</mockito.version>
    -        <slf4j.version>2.0.17</slf4j.version>
    -        <jacoco.version>0.8.14</jacoco.version>
    -        <spotless.version>3.4.0</spotless.version>
    -    </properties>
    -
    -    <dependencyManagement>
    -        <dependencies>
    -            <!-- AWS SDK BOM -->
    -            <dependency>
    -                <groupId>software.amazon.awssdk</groupId>
    -                <artifactId>bom</artifactId>
    -                <version>${aws.sdk.version}</version>
    -                <type>pom</type>
    -                <scope>import</scope>
    -            </dependency>
    -
    -            <!-- AWS Lambda Java Core -->
    -            <dependency>
    -                <groupId>com.amazonaws</groupId>
    -                <artifactId>aws-lambda-java-core</artifactId>
    -                <version>1.4.0</version>
    -            </dependency>
    -
    -            <!-- Jackson -->
    -            <dependency>
    -                <groupId>com.fasterxml.jackson</groupId>
    -                <artifactId>jackson-bom</artifactId>
    -                <version>${jackson.version}</version>
    -                <scope>import</scope>
    -                <type>pom</type>
    -            </dependency>
    -
    -            <dependency>
    -                <groupId>org.slf4j</groupId>
    -                <artifactId>slf4j-api</artifactId>
    -                <version>${slf4j.version}</version>
    -            </dependency>
    -
    -            <!-- Testing -->
    -            <dependency>
    -                <groupId>org.junit.jupiter</groupId>
    -                <artifactId>junit-jupiter</artifactId>
    -                <version>${junit.version}</version>
    -                <scope>test</scope>
    -            </dependency>
    -            <dependency>
    -                <groupId>org.mockito</groupId>
    -                <artifactId>mockito-core</artifactId>
    -                <version>${mockito.version}</version>
    -                <scope>test</scope>
    -            </dependency>
    -        </dependencies>
    -    </dependencyManagement>
    -
    -    <build>
    -        <pluginManagement>
    -            <plugins>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-compiler-plugin</artifactId>
    -                    <version>3.15.0</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-surefire-plugin</artifactId>
    -                    <version>3.5.5</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-shade-plugin</artifactId>
    -                    <version>3.6.2</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.jacoco</groupId>
    -                    <artifactId>jacoco-maven-plugin</artifactId>
    -                    <version>${jacoco.version}</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>com.diffplug.spotless</groupId>
    -                    <artifactId>spotless-maven-plugin</artifactId>
    -                    <version>${spotless.version}</version>
    -                    <configuration>
    -                        <java>
    -                            <palantirJavaFormat>
    -                                <formatJavadoc>true</formatJavadoc>
    -                            </palantirJavaFormat>
    -                            <formatAnnotations />
    -                            <importOrder />
    -                            <licenseHeader>
    -                                <file>${maven.multiModuleProjectDirectory}/license-header</file>
    -                            </licenseHeader>
    -                            <trimTrailingWhitespace />
    -                            <endWithNewline />
    -                            <removeUnusedImports />
    -                        </java>
    -                    </configuration>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-gpg-plugin</artifactId>
    -                    <version>3.2.8</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-source-plugin</artifactId>
    -                    <version>3.4.0</version>
    -                </plugin>
    -                <plugin>
    -                    <groupId>org.apache.maven.plugins</groupId>
    -                    <artifactId>maven-javadoc-plugin</artifactId>
    -                    <version>3.12.0</version>
    -                    <configuration>
    -                        <doclint>none</doclint>
    -                    </configuration>
    -                </plugin>
    -            </plugins>
    -        </pluginManagement>
    -
    -        <plugins>
    -            <plugin>
    -                <groupId>org.jacoco</groupId>
    -                <artifactId>jacoco-maven-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <goals>
    -                            <goal>prepare-agent</goal>
    -                        </goals>
    -                    </execution>
    -                    <execution>
    -                        <id>report</id>
    -                        <phase>test</phase>
    -                        <goals>
    -                            <goal>report</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>com.diffplug.spotless</groupId>
    -                <artifactId>spotless-maven-plugin</artifactId>
    -            </plugin>
    -            <!-- Flatten the POM so that we can store the oss info in parent POM -->
    -            <plugin>
    -                <groupId>org.codehaus.mojo</groupId>
    -                <artifactId>flatten-maven-plugin</artifactId>
    -                <version>1.7.3</version>
    -                <configuration>
    -                    <flattenMode>oss</flattenMode>
    -                </configuration>
    -                <executions>
    -                    <!-- enable flattening -->
    -                    <execution>
    -                        <id>flatten</id>
    -                        <phase>process-resources</phase>
    -                        <goals>
    -                        <goal>flatten</goal>
    -                        </goals>
    -                    </execution>
    -                    <!-- ensure proper cleanup -->
    -                    <execution>
    -                        <id>flatten.clean</id>
    -                        <goals>
    -                        <goal>clean</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -        </plugins>
    -    </build>
    -
    -    <profiles>
    -        <profile>
    -            <id>publishing</id>
    -            <build>
    -                <plugins>
    -                    <plugin>
    -                        <groupId>org.apache.maven.plugins</groupId>
    -                        <artifactId>maven-gpg-plugin</artifactId>
    -                        <executions>
    -                            <execution>
    -                                <id>sign-artifacts</id>
    -                                <phase>verify</phase>
    -                                <goals>
    -                                    <goal>sign</goal>
    -                                </goals>
    -                                <configuration>
    -                                    <signer>bc</signer>
    -                                </configuration>
    -                            </execution>
    -                        </executions>
    -                    </plugin>
    -                    <plugin>
    -                        <groupId>org.sonatype.central</groupId>
    -                        <artifactId>central-publishing-maven-plugin</artifactId>
    -                        <version>0.10.0</version>
    -                        <extensions>true</extensions>
    -                        <configuration>
    -                            <serverId>central</serverId>
    -                            <autoPublish>false</autoPublish>
    -                        </configuration>
    -                    </plugin>
    -                </plugins>
    -            </build>
    -        </profile>
    -    </profiles>
    -</project>
    diff --git a/sdk-integration-tests/pom.xml b/sdk-integration-tests/pom.xml
    deleted file mode 100644
    index a174ca005..000000000
    --- a/sdk-integration-tests/pom.xml
    +++ /dev/null
    @@ -1,94 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<project xmlns="http://maven.apache.org/POM/4.0.0"
    -         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -    <modelVersion>4.0.0</modelVersion>
    -
    -    <parent>
    -        <groupId>software.amazon.lambda.durable</groupId>
    -        <artifactId>aws-durable-execution-sdk-java-parent</artifactId>
    -        <version>1.0.1-SNAPSHOT</version>
    -    </parent>
    -
    -    <artifactId>aws-durable-execution-sdk-java-integration-tests</artifactId>
    -    <packaging>jar</packaging>
    -
    -    <name>AWS Lambda Durable Execution SDK Integration Tests</name>
    -    <description>Integration tests for AWS Lambda Durable Execution SDK</description>
    -    <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -
    -    <scm>
    -        <connection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</connection>
    -        <developerConnection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</developerConnection>
    -        <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -    </scm>
    -
    -    <dependencies>
    -        <dependency>
    -            <groupId>software.amazon.lambda.durable</groupId>
    -            <artifactId>aws-durable-execution-sdk-java</artifactId>
    -            <version>${project.version}</version>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>software.amazon.lambda.durable</groupId>
    -            <artifactId>aws-durable-execution-sdk-java-testing</artifactId>
    -            <version>${project.version}</version>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.junit.jupiter</groupId>
    -            <artifactId>junit-jupiter</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -    </dependencies>
    -
    -    <build>
    -        <plugins>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-compiler-plugin</artifactId>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-surefire-plugin</artifactId>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-jar-plugin</artifactId>
    -                <version>3.5.0</version>
    -                <executions>
    -                    <execution>
    -                        <goals>
    -                            <goal>test-jar</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-source-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-sources</id>
    -                        <goals>
    -                            <goal>jar-no-fork</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-javadoc-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-javadocs</id>
    -                        <goals>
    -                            <goal>jar</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -        </plugins>
    -    </build>
    -</project>
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CallbackIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CallbackIntegrationTest.java
    deleted file mode 100644
    index 4bd95806b..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CallbackIntegrationTest.java
    +++ /dev/null
    @@ -1,363 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.exception.CallbackFailedException;
    -import software.amazon.lambda.durable.exception.CallbackTimeoutException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class CallbackIntegrationTest {
    -
    -    /** Custom SerDes that tracks deserialization calls for testing. */
    -    static class TrackingSerDes implements SerDes {
    -        private final JacksonSerDes delegate = new JacksonSerDes();
    -        private final AtomicInteger deserializeCount = new AtomicInteger(0);
    -
    -        @Override
    -        public String serialize(Object value) {
    -            return delegate.serialize(value);
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            deserializeCount.incrementAndGet();
    -            return delegate.deserialize(data, typeToken);
    -        }
    -
    -        public int getDeserializeCount() {
    -            return deserializeCount.get();
    -        }
    -    }
    -
    -    @Test
    -    void callbackSuccessFlow() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb = ctx.createCallback("approval", String.class);
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        var op = runner.getOperation("approval");
    -        assertNotNull(op);
    -        assertEquals(OperationType.CALLBACK, op.getType());
    -        assertEquals(OperationStatus.STARTED, op.getStatus());
    -
    -        // Simulate external system completing callback
    -        var callbackId = runner.getCallbackId("approval");
    -        assertNotNull(callbackId);
    -        runner.completeCallback(callbackId, "\"approved\"");
    -
    -        // Re-run - callback complete, returns result
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("approved", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void callbackFailureFlow() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb = ctx.createCallback("approval", String.class);
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Simulate external system failing callback
    -        var callbackId = runner.getCallbackId("approval");
    -        var error = ErrorObject.builder()
    -                .errorType("Rejected")
    -                .errorMessage("Request denied")
    -                .build();
    -        runner.failCallback(callbackId, error);
    -
    -        // Re-run - callback failed, throws CallbackFailedException
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertTrue(result.getError().isPresent());
    -        assertEquals("Rejected", result.getError().get().errorType());
    -        assertEquals("Request denied", result.getError().get().errorMessage());
    -    }
    -
    -    @Test
    -    void callbackTimeoutFlow() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb = ctx.createCallback(
    -                    "approval",
    -                    String.class,
    -                    CallbackConfig.builder().timeout(Duration.ofMinutes(5)).build());
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Simulate timeout
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.timeoutCallback(callbackId);
    -
    -        // Re-run - callback timed out, throws CallbackTimeoutException
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertFalse(result.getError().isPresent());
    -        assertEquals(
    -                OperationStatus.TIMED_OUT, result.getFailedOperations().get(0).getStatus());
    -    }
    -
    -    @Test
    -    void multipleCallbacksInSameExecution() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb1 = ctx.createCallback("approval1", String.class);
    -            var cb2 = ctx.createCallback("approval2", String.class);
    -
    -            var result1 = cb1.get();
    -            var result2 = cb2.get();
    -
    -            return result1 + " and " + result2;
    -        });
    -
    -        // First run - creates both callbacks, suspends on first
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Complete first callback
    -        var callbackId1 = runner.getCallbackId("approval1");
    -        runner.completeCallback(callbackId1, "\"first\"");
    -
    -        // Second run - first callback done, suspends on second
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Complete second callback
    -        var callbackId2 = runner.getCallbackId("approval2");
    -        runner.completeCallback(callbackId2, "\"second\"");
    -
    -        // Third run - both callbacks done, returns result
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("first and second", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void callbackWithSteps() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var step1 = ctx.step("prepare", String.class, stepCtx -> "prepared");
    -
    -            var cb = ctx.createCallback("approval", String.class);
    -            var approval = cb.get();
    -
    -            return ctx.step("finalize", String.class, stepCtx -> step1 + " -> " + approval + " -> done");
    -        });
    -
    -        // First run - step1 completes, callback created, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Complete callback
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.completeCallback(callbackId, "\"approved\"");
    -
    -        // Second run - callback done, step2 completes
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("prepared -> approved -> done", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void callbackWithCustomSerDes() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb = ctx.createCallback(
    -                    "approval",
    -                    String.class,
    -                    CallbackConfig.builder().serDes(customSerDes).build());
    -
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Complete the callback
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.completeCallback(callbackId, "\"approved\"");
    -
    -        // Second run - callback complete, returns result
    -        result = runner.run("test");
    -
    -        assertEquals("approved", result.getResult(String.class));
    -        assertTrue(customSerDes.getDeserializeCount() > 0, "Custom SerDes should have been used");
    -    }
    -
    -    @Test
    -    void callbackWithNullSerDesUsesDefault() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            // Explicitly pass null SerDes - should use default
    -            var cb = ctx.createCallback(
    -                    "approval",
    -                    String.class,
    -                    CallbackConfig.builder().serDes(null).build());
    -
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback, suspends
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Complete the callback
    -        var callbackId = runner.getCallbackId("approval");
    -        runner.completeCallback(callbackId, "\"result\"");
    -
    -        // Second run - callback complete, returns result
    -        result = runner.run("test");
    -
    -        assertEquals("result", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void callbackFailedExceptionHandlesVariousErrorFormats() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var cb = ctx.createCallback("approval", String.class);
    -            return cb.get();
    -        });
    -
    -        // First run - creates callback
    -        runner.run("test");
    -
    -        // Fail callback with errorType, errorMessage, and stack trace
    -        var callbackId = runner.getCallbackId("approval");
    -        var error = ErrorObject.builder()
    -                .errorType("ValidationError")
    -                .errorMessage("Invalid input data")
    -                .stackTrace(java.util.List.of("com.example.Service|validate|Service.java|42"))
    -                .build();
    -        runner.failCallback(callbackId, error);
    -
    -        // Second run - should fail with formatted message and preserved stack trace
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertTrue(result.getError().isPresent());
    -        assertEquals("ValidationError", result.getError().get().errorType());
    -        assertEquals("Invalid input data", result.getError().get().errorMessage());
    -        assertNotNull(result.getError().get().stackTrace());
    -        assertEquals(1, result.getError().get().stackTrace().size());
    -    }
    -
    -    @Test
    -    void waitForCallbackCallbackFailed() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            try {
    -                ctx.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {});
    -                fail();
    -                return "should not reach here";
    -            } catch (Exception e) {
    -                if (e instanceof SuspendExecutionException) {
    -                    throw e;
    -                }
    -                assertInstanceOf(CallbackFailedException.class, e);
    -                throw e;
    -            }
    -        });
    -
    -        // First run - creates callback
    -        runner.run("test");
    -
    -        // Fail callback with errorType, errorMessage, and stack trace
    -        var callbackId = runner.getCallbackId("approval-callback");
    -        var error = ErrorObject.builder()
    -                .errorType("ValidationError")
    -                .errorMessage("Invalid input data")
    -                .stackTrace(java.util.List.of("com.example.Service|validate|Service.java|42"))
    -                .build();
    -        runner.failCallback(callbackId, error);
    -
    -        // Second run - should fail with formatted message and preserved stack trace
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertTrue(result.getError().isPresent());
    -        assertEquals("ValidationError", result.getError().get().errorType());
    -        assertEquals("Invalid input data", result.getError().get().errorMessage());
    -        assertNotNull(result.getError().get().stackTrace());
    -        assertEquals(1, result.getError().get().stackTrace().size());
    -    }
    -
    -    @Test
    -    void waitForCallbackCallbackTimeout() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            try {
    -                ctx.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {});
    -                fail();
    -                return "should not reach here";
    -            } catch (Exception e) {
    -                if (e instanceof SuspendExecutionException) {
    -                    throw e;
    -                }
    -                assertInstanceOf(CallbackTimeoutException.class, e);
    -                throw e;
    -            }
    -        });
    -
    -        // First run - creates callback
    -        runner.run("test");
    -
    -        // Fail callback with errorType, errorMessage, and stack trace
    -        var callbackId = runner.getCallbackId("approval-callback");
    -        runner.timeoutCallback(callbackId);
    -
    -        // Second run - should fail with formatted message and preserved stack trace
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void waitForCallbackCallbackFailedWithUserException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var errorMessage = "user exception";
    -            try {
    -                return ctx.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {
    -                    // original exception
    -                    throw new IllegalArgumentException(errorMessage);
    -                });
    -            } catch (Exception e) {
    -                if (e instanceof SuspendExecutionException) {
    -                    throw e;
    -                }
    -                assertInstanceOf(IllegalArgumentException.class, e);
    -                assertEquals(errorMessage, e.getMessage());
    -                throw e;
    -            }
    -        });
    -
    -        // First run - creates callback
    -        runner.run("test");
    -
    -        // Fail callback with errorType, errorMessage, and stack trace
    -        var callbackId = runner.getCallbackId("approval-callback");
    -        runner.timeoutCallback(callbackId);
    -
    -        // Second run - should fail with formatted message and preserved stack trace
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ChildContextIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ChildContextIntegrationTest.java
    deleted file mode 100644
    index 688291b81..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ChildContextIntegrationTest.java
    +++ /dev/null
    @@ -1,494 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Integration tests for child context behavior. */
    -class ChildContextIntegrationTest {
    -
    -    /**
    -     * A child context that completes successfully SHALL produce the same result on replay without re-executing the user
    -     * function.
    -     */
    -    @Test
    -    void childContextResultSurvivesReplay() {
    -        var childExecutionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("compute", TypeToken.get(String.class), child -> {
    -                childExecutionCount.incrementAndGet();
    -                return child.step("work", String.class, stepCtx -> "result-" + input);
    -            });
    -        });
    -
    -        // First run - executes child context
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("result-test", result.getResult(String.class));
    -        assertEquals(1, childExecutionCount.get());
    -
    -        // Second run - replays, should return cached result without re-executing
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("result-test", result.getResult(String.class));
    -        assertEquals(1, childExecutionCount.get(), "Child function should not re-execute on replay");
    -    }
    -
    -    /**
    -     * A child context that fails with a reconstructable exception SHALL preserve the exception type, message, and error
    -     * details through the checkpoint-and-replay cycle.
    -     */
    -    @Test
    -    void childContextExceptionPreservedOnReplay() {
    -        var childExecutionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("failing", String.class, child -> {
    -                childExecutionCount.incrementAndGet();
    -                throw new IllegalArgumentException("bad input: " + input);
    -            });
    -        });
    -
    -        // First run - child context fails
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals(1, childExecutionCount.get());
    -
    -        // Second run - replays, should throw same exception without re-executing
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertTrue(result.getError().isPresent());
    -        var error = result.getError().get();
    -        assertEquals("java.lang.IllegalArgumentException", error.errorType());
    -        assertEquals("bad input: test", error.errorMessage());
    -        assertEquals(1, childExecutionCount.get(), "Child function should not re-execute on failed replay");
    -    }
    -
    -    /** Operations checkpointed from within a child context SHALL have the child context's ID as their parentId. */
    -    @Test
    -    void operationsInChildContextHaveCorrectParentId() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("child-ctx", String.class, child -> {
    -                var step1 = child.step("inner-step", String.class, stepCtx -> "step-result");
    -                return step1;
    -            });
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("step-result", result.getResult(String.class));
    -
    -        // Verify the inner step has the child context's operation ID as parentId
    -        var innerStep = result.getOperation("inner-step");
    -        assertNotNull(innerStep, "Inner step should exist");
    -    }
    -
    -    /** Each child context SHALL maintain its own operation counter. */
    -    @Test
    -    void childContextsHaveIndependentOperationCounters() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var r1 = ctx.runInChildContext("child-a", String.class, child -> {
    -                return child.step("step-a", String.class, stepCtx -> "a-result");
    -            });
    -            var r2 = ctx.runInChildContext("child-b", String.class, child -> {
    -                return child.step("step-b", String.class, stepCtx -> "b-result");
    -            });
    -            return r1 + "+" + r2;
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("a-result+b-result", result.getResult(String.class));
    -
    -        // Both child contexts should have completed successfully
    -        var stepA = result.getOperation("step-a");
    -        var stepB = result.getOperation("step-b");
    -        assertNotNull(stepA);
    -        assertNotNull(stepB);
    -    }
    -
    -    /** Two child contexts with operations that have the same local IDs SHALL NOT interfere with each other. */
    -    @Test
    -    void parallelChildContextsWithSameLocalIdsDoNotInterfere() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            // Both child contexts will have a step with local operation ID "1"
    -            var futureA = ctx.runInChildContextAsync("ctx-a", String.class, child -> {
    -                return child.step("work", String.class, stepCtx -> "result-a");
    -            });
    -            var futureB = ctx.runInChildContextAsync("ctx-b", String.class, child -> {
    -                return child.step("work", String.class, stepCtx -> "result-b");
    -            });
    -            return futureA.get() + "+" + futureB.get();
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("result-a+result-b", result.getResult(String.class));
    -    }
    -
    -    /** Each concurrently running async child context SHALL complete with its own correct result. */
    -    @Test
    -    void multipleAsyncChildContextsReturnCorrectResults() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var f1 = ctx.runInChildContextAsync("async-1", String.class, child -> {
    -                return child.step("s1", String.class, stepCtx -> "one");
    -            });
    -            var f2 = ctx.runInChildContextAsync("async-2", String.class, child -> {
    -                return child.step("s2", String.class, stepCtx -> "two");
    -            });
    -            var f3 = ctx.runInChildContextAsync("async-3", String.class, child -> {
    -                return child.step("s3", String.class, stepCtx -> "three");
    -            });
    -            return f1.get() + "," + f2.get() + "," + f3.get();
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("one,two,three", result.getResult(String.class));
    -    }
    -
    -    /** The results returned by DurableFuture.allOf() SHALL be in the same order as the input futures. */
    -    @Test
    -    void allOfReturnsResultsInOrder() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var f1 = ctx.runInChildContextAsync("first", String.class, child -> {
    -                return child.step("s1", String.class, stepCtx -> "alpha");
    -            });
    -            var f2 = ctx.runInChildContextAsync("second", String.class, child -> {
    -                return child.step("s2", String.class, stepCtx -> "beta");
    -            });
    -            var f3 = ctx.runInChildContextAsync("third", String.class, child -> {
    -                return child.step("s3", String.class, stepCtx -> "gamma");
    -            });
    -
    -            var results = DurableFuture.allOf(f1, f2, f3);
    -            return String.join(",", results);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("alpha,beta,gamma", result.getResult(String.class));
    -    }
    -
    -    /**
    -     * A wait() inside a child context SHALL suspend the execution. After the wait completes, the child context SHALL
    -     * resume and complete with the correct result.
    -     */
    -    @Test
    -    void waitInsideChildContextSuspendsAndResumes() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("workflow", String.class, child -> {
    -                child.step("before-wait", Void.class, stepCtx -> null);
    -                child.wait(null, Duration.ofSeconds(10));
    -                return child.step("after-wait", String.class, stepCtx -> "done");
    -            });
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("done", result.getResult(String.class));
    -    }
    -
    -    /**
    -     * A wait() inside a child context SHALL cause the execution to return PENDING. After advancing time and re-running,
    -     * the execution SHALL complete successfully.
    -     */
    -    @Test
    -    void waitInsideChildContextReturnsPendingThenCompletes() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("workflow", String.class, child -> {
    -                child.step("before-wait", Void.class, stepCtx -> null);
    -                child.wait(null, Duration.ofSeconds(10));
    -                return child.step("after-wait", String.class, stepCtx -> "done");
    -            });
    -        });
    -        // First run - should suspend at the wait
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Advance time so the wait completes
    -        runner.advanceTime();
    -
    -        // Second run - should complete
    -        var result2 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("done", result2.getResult(String.class));
    -    }
    -
    -    /**
    -     * When two concurrent child contexts each contain a wait(), the execution SHALL return PENDING. After advancing
    -     * time and re-running, both child contexts SHALL resume and complete with correct results.
    -     */
    -    @Test
    -    void twoAsyncChildContextsBothWaitSuspendAndResume() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var f1 = ctx.runInChildContextAsync("child-a", String.class, child -> {
    -                child.step("a-before", Void.class, stepCtx -> null);
    -                child.wait(null, Duration.ofSeconds(5));
    -                return child.step("a-after", String.class, stepCtx -> "a-done");
    -            });
    -            var f2 = ctx.runInChildContextAsync("child-b", String.class, child -> {
    -                child.step("b-before", Void.class, stepCtx -> null);
    -                child.wait(null, Duration.ofSeconds(10));
    -                return child.step("b-after", String.class, stepCtx -> "b-done");
    -            });
    -            return f1.get() + "+" + f2.get();
    -        });
    -
    -        // First run - both child contexts should suspend at their waits
    -        // TODO: Using run() + runUntilComplete() instead of manual run/advanceTime/run due to a
    -        //  thread coordination race condition that causes flakiness on slow CI workers.
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Now let runUntilComplete handle the rest (with skipTime so waits auto-advance)
    -        var finalResult = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, finalResult.getStatus());
    -        assertEquals("a-done+b-done", finalResult.getResult(String.class));
    -    }
    -
    -    /**
    -     * When one async child context contains a long wait and another is actively processing, the execution SHALL NOT
    -     * suspend until the busy child finishes its work. After the busy child completes, the execution suspends (PENDING)
    -     * because the waiting child's wait is still outstanding. After advancing time, both complete.
    -     */
    -    @Test
    -    void oneChildWaitsWhileOtherKeepsProcessingSuspendsAfterWorkDone() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var waiting = ctx.runInChildContextAsync("waiter", String.class, child -> {
    -                child.wait(null, Duration.ofSeconds(30));
    -                return child.step("w-after", String.class, stepCtx -> "waited");
    -            });
    -            var busy = ctx.runInChildContextAsync("busy", String.class, child -> {
    -                return child.step("slow-work", String.class, stepCtx -> {
    -                    try {
    -                        Thread.sleep(200); // Simulate real work keeping the thread active
    -                    } catch (InterruptedException e) {
    -                        Thread.currentThread().interrupt();
    -                    }
    -                    return "done-working";
    -                });
    -            });
    -            return busy.get() + "|" + waiting.get();
    -        });
    -
    -        // First run: busy child completes its work, but waiter's wait is still outstanding β†’ PENDING
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // The busy child's step should have been checkpointed before suspension
    -        var busyStep = result.getOperation("slow-work");
    -        assertNotNull(busyStep, "Busy child's step should have completed before suspension");
    -
    -        // Advance time so the wait completes
    -        runner.advanceTime();
    -
    -        // Second run: both children complete
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("done-working|waited", result2.getResult(String.class));
    -    }
    -
    -    /**
    -     * A child context with a result β‰₯256KB SHALL trigger the ReplayChildren flow. On replay, the child context SHALL be
    -     * re-executed to reconstruct the result.
    -     */
    -    @Test
    -    void largeResultTriggersReplayChildrenAndReconstructsCorrectly() {
    -        var childExecutionCount = new AtomicInteger(0);
    -
    -        // Generate a string larger than 256KB
    -        var largePayload = "x".repeat(256 * 1024 + 100);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("large-result", String.class, child -> {
    -                childExecutionCount.incrementAndGet();
    -                return child.step("produce", String.class, stepCtx -> largePayload);
    -            });
    -        });
    -
    -        // First run - executes child context, triggers ReplayChildren
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(largePayload, result.getResult(String.class));
    -        assertEquals(1, childExecutionCount.get());
    -
    -        // Second run - replays with ReplayChildren, re-executes child to reconstruct
    -        result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(largePayload, result.getResult(String.class));
    -        // Child function IS re-executed for ReplayChildren (to reconstruct the large result)
    -        assertTrue(childExecutionCount.get() >= 2, "Child should re-execute for ReplayChildren reconstruction");
    -    }
    -
    -    // ===== Edge Case Tests =====
    -
    -    /**
    -     * A child context created within another child context SHALL have its own independent operation counter and correct
    -     * parentId propagation.
    -     */
    -    @Test
    -    void nestedChildContextsWithIndependentCountersAndCorrectParentId() {
    -        var outerChildCount = new AtomicInteger(0);
    -        var innerChildCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("outer-child", String.class, outerChild -> {
    -                outerChildCount.incrementAndGet();
    -                var outerStep = outerChild.step("outer-step", String.class, stepCtx -> "outer");
    -
    -                var innerResult = outerChild.runInChildContext("inner-child", String.class, innerChild -> {
    -                    innerChildCount.incrementAndGet();
    -                    return innerChild.step("inner-step", String.class, stepCtx -> "inner");
    -                });
    -
    -                return outerStep + "+" + innerResult;
    -            });
    -        });
    -
    -        // First run - executes both nested child contexts
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("outer+inner", result.getResult(String.class));
    -        assertEquals(1, outerChildCount.get());
    -        assertEquals(1, innerChildCount.get());
    -
    -        // Replay - should return cached results without re-executing
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("outer+inner", result.getResult(String.class));
    -        assertEquals(1, outerChildCount.get(), "Outer child should not re-execute on replay");
    -        assertEquals(1, innerChildCount.get(), "Inner child should not re-execute on replay");
    -
    -        // Verify both steps exist (independent counters β€” both have local ID "1" in their respective contexts)
    -        var outerStep = result.getOperation("outer-step");
    -        var innerStep = result.getOperation("inner-step");
    -        assertNotNull(outerStep, "Outer step should exist");
    -        assertNotNull(innerStep, "Inner step should exist");
    -    }
    -
    -    /**
    -     * When a child context is replayed but the current code uses a different operation name at the same position, the
    -     * execution SHALL fail with a non-deterministic execution error.
    -     */
    -    @Test
    -    void nonDeterministicReplayDetectionForChildContext() {
    -        var callCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var count = callCount.incrementAndGet();
    -            if (count == 1) {
    -                // First execution: create child context with name "original-name"
    -                return ctx.runInChildContext("original-name", String.class, child -> {
    -                    return child.step("work", String.class, stepCtx -> "result");
    -                });
    -            } else {
    -                // Second execution: use a different name at the same operation position
    -                // This should trigger NonDeterministicExecutionException
    -                return ctx.runInChildContext("different-name", String.class, child -> {
    -                    return child.step("work", String.class, stepCtx -> "result");
    -                });
    -            }
    -        });
    -
    -        // First run succeeds
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("result", result.getResult(String.class));
    -
    -        // Second run with different name should fail with non-deterministic error
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertTrue(result.getError().isPresent());
    -        var error = result.getError().get();
    -        assertTrue(
    -                error.errorType().contains("NonDeterministicExecutionException"),
    -                "Expected NonDeterministicExecutionException, got: " + error.errorType());
    -        assertTrue(
    -                error.errorMessage().contains("name mismatch"),
    -                "Expected name mismatch message, got: " + error.errorMessage());
    -    }
    -
    -    /**
    -     * A child context whose function returns a value immediately without performing any durable operations SHALL
    -     * complete successfully and replay correctly.
    -     */
    -    @Test
    -    void emptyChildContextReturnsImmediately() {
    -        var childExecutionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.runInChildContext("empty", String.class, child -> {
    -                childExecutionCount.incrementAndGet();
    -                return "immediate-result";
    -            });
    -        });
    -
    -        // First run - child context returns immediately
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("immediate-result", result.getResult(String.class));
    -        assertEquals(1, childExecutionCount.get());
    -
    -        // Replay - should return cached result without re-executing
    -        result = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("immediate-result", result.getResult(String.class));
    -        assertEquals(1, childExecutionCount.get(), "Empty child should not re-execute on replay");
    -    }
    -
    -    /**
    -     * Operations within a child context SHALL use the child context's own operation counter, producing IDs independent
    -     * of the parent context. Multiple operations within a single child context should get sequential IDs.
    -     */
    -    @Test
    -    void stepAndInvokeWithinChildContextUseChildOperationCounter() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            // Parent context: operation 1 is a step
    -            var parentStep = ctx.step("parent-step", String.class, stepCtx -> "parent");
    -
    -            // Parent context: operation 2 is a child context
    -            var childResult = ctx.runInChildContext("child-ctx", String.class, child -> {
    -                // Child context: operations 1, 2, 3 are steps (independent counter)
    -                var s1 = child.step("child-step-1", String.class, stepCtx -> "c1");
    -                var s2 = child.step("child-step-2", String.class, stepCtx -> "c2");
    -                var s3 = child.step("child-step-3", String.class, stepCtx -> "c3");
    -                return s1 + "," + s2 + "," + s3;
    -            });
    -
    -            // Parent context: operation 3 is another step (counter continues from parent)
    -            var afterStep = ctx.step("after-step", String.class, stepCtx -> "after");
    -
    -            return parentStep + "|" + childResult + "|" + afterStep;
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("parent|c1,c2,c3|after", result.getResult(String.class));
    -
    -        // Verify all operations exist and completed
    -        assertNotNull(result.getOperation("parent-step"), "Parent step should exist");
    -        assertNotNull(result.getOperation("child-step-1"), "Child step 1 should exist");
    -        assertNotNull(result.getOperation("child-step-2"), "Child step 2 should exist");
    -        assertNotNull(result.getOperation("child-step-3"), "Child step 3 should exist");
    -        assertNotNull(result.getOperation("after-step"), "After step should exist");
    -
    -        // Verify child context operation exists
    -        var childCtxOp = result.getOperation("child-ctx");
    -        assertNotNull(childCtxOp, "Child context operation should exist");
    -        assertEquals(OperationType.CONTEXT, childCtxOp.getType());
    -
    -        // Replay should produce the same result
    -        var replayResult = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, replayResult.getStatus());
    -        assertEquals("parent|c1,c2,c3|after", replayResult.getResult(String.class));
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomConfigIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomConfigIntegrationTest.java
    deleted file mode 100644
    index e6f02ed75..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomConfigIntegrationTest.java
    +++ /dev/null
    @@ -1,288 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.regions.Region;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class CustomConfigIntegrationTest {
    -
    -    /** Custom SerDes that tracks serialization calls for testing precedence. */
    -    static class TrackingSerDes implements SerDes {
    -        private final JacksonSerDes delegate = new JacksonSerDes();
    -        private final AtomicInteger serializeCount = new AtomicInteger(0);
    -        private final AtomicInteger deserializeCount = new AtomicInteger(0);
    -        private final String name;
    -
    -        public TrackingSerDes(String name) {
    -            this.name = name;
    -        }
    -
    -        @Override
    -        public String serialize(Object value) {
    -            serializeCount.incrementAndGet();
    -            return delegate.serialize(value);
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            deserializeCount.incrementAndGet();
    -            return delegate.deserialize(data, typeToken);
    -        }
    -
    -        public int getSerializeCount() {
    -            return serializeCount.get();
    -        }
    -
    -        public int getDeserializeCount() {
    -            return deserializeCount.get();
    -        }
    -
    -        public String getName() {
    -            return name;
    -        }
    -    }
    -
    -    @Test
    -    void testCustomSerDes_Integration() {
    -        // Create custom SerDes for testing
    -        var customSerDes = new TrackingSerDes("Custom");
    -
    -        // Create custom config with the custom SerDes
    -        var customConfig = DurableConfig.builder().withSerDes(customSerDes).build();
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    return context.step("process", String.class, stepCtx -> "Custom SerDes: " + input);
    -                },
    -                customConfig);
    -
    -        var result = runner.run("test-input");
    -
    -        assertNotNull(result);
    -        assertEquals("Custom SerDes: test-input", result.getResult(String.class));
    -
    -        // Verify custom SerDes was actually used
    -        assertTrue(customSerDes.getSerializeCount() > 0, "Custom SerDes should have been used for serialization");
    -    }
    -
    -    @Test
    -    void testDefaultConfig_WorksCorrectly() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            return context.step("process", String.class, stepCtx -> "Default: " + input);
    -        });
    -
    -        var result = runner.run("test-input");
    -
    -        assertNotNull(result);
    -        assertEquals("Default: test-input", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testCustomConfig_WithMultipleSteps() {
    -        // Create custom SerDes for testing
    -        var customSerDes = new TrackingSerDes("MultiStep");
    -
    -        // Create custom config
    -        var customConfig = DurableConfig.builder().withSerDes(customSerDes).build();
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    var step1 = context.step("step1", String.class, stepCtx -> "Step1: " + input);
    -
    -                    // Remove wait operation to avoid complexity in this test
    -                    var step2 = context.step("step2", String.class, stepCtx -> "Step2: " + input);
    -
    -                    var step3 = context.step("step3", String.class, stepCtx -> "Step3: " + input);
    -
    -                    return step1 + " | " + step2 + " | " + step3;
    -                },
    -                customConfig);
    -
    -        var result = runner.run("test");
    -
    -        assertNotNull(result);
    -        assertEquals("Step1: test | Step2: test | Step3: test", result.getResult(String.class));
    -
    -        // Verify all steps executed
    -        assertNotNull(result.getOperation("step1"));
    -        assertNotNull(result.getOperation("step2"));
    -        assertNotNull(result.getOperation("step3"));
    -
    -        // Verify custom SerDes was used (should be called multiple times for multiple steps)
    -        assertTrue(customSerDes.getSerializeCount() >= 3, "Custom SerDes should have been used for all steps");
    -    }
    -
    -    @Test
    -    void testCustomConfig_WithRetry() {
    -        var attemptCount = new AtomicInteger(0);
    -
    -        // Create custom SerDes for testing
    -        var customSerDes = new TrackingSerDes("Retry");
    -
    -        // Create custom config
    -        var customConfig = DurableConfig.builder().withSerDes(customSerDes).build();
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    return context.step(
    -                            "retry-step",
    -                            String.class,
    -                            stepCtx -> {
    -                                int currentAttempt = attemptCount.incrementAndGet();
    -                                // Always fail to test retry behavior (like existing RetryIntegrationTest)
    -                                throw new RuntimeException("Simulated failure attempt " + currentAttempt);
    -                            },
    -                            StepConfig.builder()
    -                                    .retryStrategy(software.amazon.lambda.durable.retry.RetryStrategies.Presets.DEFAULT)
    -                                    .build());
    -                },
    -                customConfig);
    -
    -        // First run should return PENDING (retry scheduled) - matching existing RetryIntegrationTest pattern
    -        var result = runner.run("test");
    -        assertEquals(software.amazon.lambda.durable.model.ExecutionStatus.PENDING, result.getStatus());
    -        assertEquals(1, attemptCount.get());
    -
    -        // Verify custom SerDes was used during retry operations
    -        assertTrue(customSerDes.getSerializeCount() > 0, "Custom SerDes should have been used during retry operations");
    -    }
    -
    -    @Test
    -    void testConfigImmutability_AcrossInvocations() {
    -        // Create separate custom configs for each runner to test immutability
    -        var customSerDes1 = new TrackingSerDes("Config1");
    -        var customSerDes2 = new TrackingSerDes("Config2");
    -        var customSerDes3 = new TrackingSerDes("Config3");
    -
    -        var customConfig1 = DurableConfig.builder().withSerDes(customSerDes1).build();
    -        var customConfig2 = DurableConfig.builder().withSerDes(customSerDes2).build();
    -        var customConfig3 = DurableConfig.builder().withSerDes(customSerDes3).build();
    -
    -        // Create separate runners for each invocation to avoid state reuse
    -        var runner1 = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    return context.step("process", String.class, stepCtx -> "Config1: " + input);
    -                },
    -                customConfig1);
    -
    -        var runner2 = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    return context.step("process", String.class, stepCtx -> "Config2: " + input);
    -                },
    -                customConfig2);
    -
    -        var runner3 = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    return context.step("process", String.class, stepCtx -> "Config3: " + input);
    -                },
    -                customConfig3);
    -
    -        // Run with different inputs using separate runners
    -        var result1 = runner1.run("input1");
    -        var result2 = runner2.run("input2");
    -        var result3 = runner3.run("input3");
    -
    -        assertEquals("Config1: input1", result1.getResult(String.class));
    -        assertEquals("Config2: input2", result2.getResult(String.class));
    -        assertEquals("Config3: input3", result3.getResult(String.class));
    -
    -        // Verify each custom SerDes was used independently
    -        assertTrue(customSerDes1.getSerializeCount() > 0, "Custom SerDes 1 should have been used");
    -        assertTrue(customSerDes2.getSerializeCount() > 0, "Custom SerDes 2 should have been used");
    -        assertTrue(customSerDes3.getSerializeCount() > 0, "Custom SerDes 3 should have been used");
    -    }
    -
    -    @Test
    -    void testDurableConfig_DefaultRegionFallback() {
    -        // Test that DurableConfig.defaultConfig() works even without AWS_REGION
    -        // This verifies the DEFAULT_REGION fallback behavior
    -        var config = DurableConfig.defaultConfig();
    -
    -        assertNotNull(config);
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -        assertNotNull(config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testStepConfigSerDesPrecedenceOverDurableConfig() {
    -        // Create tracking SerDes to verify which one is actually used
    -        var durableConfigSerDes = new TrackingSerDes("DurableConfig");
    -        var stepConfigSerDes = new TrackingSerDes("StepConfig");
    -
    -        // Create custom config with DurableConfig SerDes
    -        var customConfig =
    -                DurableConfig.builder().withSerDes(durableConfigSerDes).build();
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, context) -> {
    -                    // Step 1: Use default SerDes (should use DurableConfig SerDes)
    -                    var result1 = context.step("default-step", String.class, stepCtx -> "default-result");
    -
    -                    // Step 2: Use StepConfig SerDes (should override DurableConfig SerDes)
    -                    var result2 = context.step(
    -                            "custom-step",
    -                            String.class,
    -                            stepCtx -> "custom-result",
    -                            StepConfig.builder().serDes(stepConfigSerDes).build());
    -
    -                    return result1 + "," + result2;
    -                },
    -                customConfig);
    -
    -        var result = runner.run("test-input");
    -
    -        assertNotNull(result);
    -        assertEquals("default-result,custom-result", result.getResult(String.class));
    -
    -        // Verify DurableConfig SerDes was used for the default step. Can be called more than once also for customer
    -        // input deserialization from within LocalDurableTestRunner.
    -        assertTrue(
    -                durableConfigSerDes.getSerializeCount() > 0,
    -                "DurableConfig SerDes should have been used for default step serialization");
    -
    -        // Verify StepConfig SerDes was used for the custom step
    -        assertTrue(
    -                stepConfigSerDes.getSerializeCount() == 1,
    -                "StepConfig SerDes should have been used for custom step serialization");
    -    }
    -
    -    @Test
    -    void testCustomDurableExecutionClient_Configuration() {
    -        // Test creating custom DurableExecutionClient with LambdaDurableFunctionsClient
    -        var lambdaClient = LambdaClient.builder().region(Region.US_WEST_2).build();
    -
    -        try {
    -            var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    -
    -            var config = DurableConfig.builder()
    -                    .withDurableExecutionClient(durableClient)
    -                    .build();
    -
    -            assertNotNull(config);
    -            assertEquals(durableClient, config.getDurableExecutionClient());
    -        } finally {
    -            // Clean up lambda client
    -            lambdaClient.close();
    -        }
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomSerDesIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomSerDesIntegrationTest.java
    deleted file mode 100644
    index 336c81f5c..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/CustomSerDesIntegrationTest.java
    +++ /dev/null
    @@ -1,133 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Integration tests for custom SerDes configuration in StepConfig. */
    -class CustomSerDesIntegrationTest {
    -
    -    /** Custom SerDes that tracks serialization calls. */
    -    static class TrackingSerDes implements SerDes {
    -        private final JacksonSerDes delegate = new JacksonSerDes();
    -        private final AtomicInteger serializeCount = new AtomicInteger(0);
    -        private final AtomicInteger deserializeCount = new AtomicInteger(0);
    -
    -        @Override
    -        public String serialize(Object value) {
    -            serializeCount.incrementAndGet();
    -            return delegate.serialize(value);
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            deserializeCount.incrementAndGet();
    -            return delegate.deserialize(data, typeToken);
    -        }
    -
    -        public int getSerializeCount() {
    -            return serializeCount.get();
    -        }
    -
    -        public int getDeserializeCount() {
    -            return deserializeCount.get();
    -        }
    -    }
    -
    -    @Test
    -    void testCustomSerDesIsUsedInStep() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // Step with custom SerDes
    -            var result = context.step(
    -                    "custom-step",
    -                    String.class,
    -                    stepCtx -> "custom-result",
    -                    StepConfig.builder().serDes(customSerDes).build());
    -
    -            return result;
    -        });
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals("custom-result", result.getResult(String.class));
    -        // Custom SerDes should have been used for serialization
    -        assertTrue(customSerDes.getSerializeCount() > 0, "Custom SerDes should have been used for serialization");
    -    }
    -
    -    @Test
    -    void testDefaultSerDesWhenNotSpecified() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // Step without custom SerDes
    -            var result = context.step("default-step", String.class, stepCtx -> "default-result");
    -
    -            return result;
    -        });
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals("default-result", result.getResult(String.class));
    -        // Custom SerDes should NOT have been used
    -        assertEquals(0, customSerDes.getSerializeCount(), "Custom SerDes should not have been used");
    -    }
    -
    -    @Test
    -    void testMixedSerDesUsage() {
    -        var customSerDes1 = new TrackingSerDes();
    -        var customSerDes2 = new TrackingSerDes();
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // Step 1: Default SerDes
    -            var result1 = context.step("default-step", String.class, stepCtx -> "default");
    -
    -            // Step 2: Custom SerDes 1
    -            var result2 = context.step(
    -                    "custom-step-1",
    -                    String.class,
    -                    stepCtx -> "custom1",
    -                    StepConfig.builder().serDes(customSerDes1).build());
    -
    -            // Step 3: Custom SerDes 2
    -            var result3 = context.step(
    -                    "custom-step-2",
    -                    String.class,
    -                    stepCtx -> "custom2",
    -                    StepConfig.builder().serDes(customSerDes2).build());
    -
    -            return result1 + "," + result2 + "," + result3;
    -        });
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals("default,custom1,custom2", result.getResult(String.class));
    -        // Each custom SerDes should have been used exactly once
    -        assertTrue(customSerDes1.getSerializeCount() > 0, "Custom SerDes 1 should have been used");
    -        assertTrue(customSerDes2.getSerializeCount() > 0, "Custom SerDes 2 should have been used");
    -    }
    -
    -    @Test
    -    void testNullSerDesUsesDefault() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // Explicitly pass null SerDes - should use default
    -            return context.step(
    -                    "test-step",
    -                    String.class,
    -                    stepCtx -> "result",
    -                    StepConfig.builder().serDes(null).build());
    -        });
    -
    -        var result = runner.run("test-input");
    -        assertEquals("result", result.getResult(String.class));
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/DurableExecutionCheckpointTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/DurableExecutionCheckpointTest.java
    deleted file mode 100644
    index ba02f5b95..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/DurableExecutionCheckpointTest.java
    +++ /dev/null
    @@ -1,104 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.*;
    -import software.amazon.lambda.durable.execution.DurableExecutor;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient;
    -
    -/** Integration tests that verify checkpoint behavior using LocalMemoryExecutionClient */
    -class DurableExecutionCheckpointTest {
    -    private static final String EXECUTION_NAME = "test-execution";
    -    private static final String EXECUTION_OP_ID = "01234567-0123-0123-0123-012345678901";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    private DurableConfig configWithMockClient(LocalMemoryExecutionClient client) {
    -        return DurableConfig.builder().withDurableExecutionClient(client).build();
    -    }
    -
    -    @Test
    -    void testLargePayloadCheckpointing() {
    -        var client = new LocalMemoryExecutionClient();
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var largeString = "x".repeat(7 * 1024 * 1024); // 7MB string
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                TypeToken.get(String.class),
    -                (userInput, ctx) -> largeString,
    -                configWithMockClient(client));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertEquals("", output.result());
    -
    -        var updates = client.getOperationUpdates();
    -        assertFalse(updates.isEmpty());
    -        var lastUpdate = updates.get(updates.size() - 1);
    -        assertEquals(OperationType.EXECUTION, lastUpdate.type());
    -        assertEquals(OperationAction.SUCCEED, lastUpdate.action());
    -        assertNotNull(lastUpdate.payload());
    -        assertTrue(lastUpdate.payload().length() > 6 * 1024 * 1024);
    -    }
    -
    -    @Test
    -    void testSmallPayloadNoExtraCheckpoint() {
    -        var client = new LocalMemoryExecutionClient();
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var smallResult = "Small result";
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                TypeToken.get(String.class),
    -                (userInput, ctx) -> smallResult,
    -                configWithMockClient(client));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertNotNull(output.result());
    -        assertTrue(output.result().contains(smallResult));
    -
    -        var updates = client.getOperationUpdates();
    -        var executionUpdates = updates.stream()
    -                .filter(u -> u.type() == OperationType.EXECUTION)
    -                .toList();
    -        assertTrue(executionUpdates.isEmpty());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ExceptionIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ExceptionIntegrationTest.java
    deleted file mode 100644
    index 5445a4f3d..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ExceptionIntegrationTest.java
    +++ /dev/null
    @@ -1,257 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.StepSemantics;
    -import software.amazon.lambda.durable.exception.StepInterruptedException;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Integration tests for exception handling scenarios documented in the README. */
    -class ExceptionIntegrationTest {
    -
    -    @Test
    -    void testStepFailedExceptionThrownAfterRetryExhaustion() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.step(
    -                    "always-fails",
    -                    String.class,
    -                    stepCtx -> {
    -                        throw new RuntimeException("Service unavailable");
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                            .build());
    -        });
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testStepFailedExceptionCanBeCaughtWithFallback() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            try {
    -                return ctx.step(
    -                        "primary",
    -                        String.class,
    -                        stepCtx -> {
    -                            throw new RuntimeException("Primary failed");
    -                        },
    -                        StepConfig.builder()
    -                                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                                .build());
    -            } catch (RuntimeException e) {
    -                return ctx.step("fallback", String.class, stepCtx -> "fallback-result");
    -            }
    -        });
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("fallback-result", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testOriginalExceptionTypeIsPreserved() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            ctx.step(
    -                    "throws-illegal-arg",
    -                    String.class,
    -                    stepCtx -> {
    -                        throw new IllegalArgumentException("Invalid parameter");
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                            .build());
    -            return "should-not-reach";
    -        });
    -
    -        // First run - exception is thrown and checkpointed
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -
    -        // Verify the operation failed with the correct exception type
    -        var failedOp = result.getOperation("throws-illegal-arg");
    -        assertNotNull(failedOp);
    -        var error = failedOp.getError();
    -        assertNotNull(error);
    -        assertEquals("java.lang.IllegalArgumentException", error.errorType());
    -        assertEquals("Invalid parameter", error.errorMessage());
    -
    -        // Verify stackTrace is preserved
    -        assertNotNull(error.stackTrace());
    -        assertTrue(error.stackTrace().size() > 0, "Stack trace should not be empty");
    -
    -        // Verify errorData contains serialized exception
    -        assertNotNull(error.errorData());
    -        assertTrue(error.errorData().contains("Invalid parameter"), "errorData should contain the exception message");
    -    }
    -
    -    @Test
    -    void testOriginalExceptionTypeCanBeCaughtSpecifically() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            try {
    -                return ctx.step(
    -                        "throws-illegal-state",
    -                        String.class,
    -                        stepCtx -> {
    -                            throw new IllegalStateException("Invalid state");
    -                        },
    -                        StepConfig.builder()
    -                                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                                .build());
    -            } catch (IllegalStateException e) {
    -                // Catch specific exception type
    -                return ctx.step("handle-illegal-state", String.class, stepCtx -> "recovered-from-illegal-state");
    -            } catch (Exception e) {
    -                // This should NOT be caught
    -                return ctx.step("handle-illegal-arg", String.class, stepCtx -> "recovered-from-exception");
    -            }
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("recovered-from-illegal-state", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testCustomExceptionTypeIsPreserved() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            ctx.step(
    -                    "throws-custom",
    -                    String.class,
    -                    stepCtx -> {
    -                        throw new CustomBusinessException("Business rule violated", 42);
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                            .build());
    -            return "should-not-reach";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -
    -        // Verify the operation failed with the correct exception type
    -        var failedOp = result.getOperation("throws-custom");
    -        assertNotNull(failedOp);
    -        var error = failedOp.getError();
    -        assertNotNull(error);
    -        assertTrue(error.errorType().contains("CustomBusinessException"));
    -        assertEquals("Business rule violated", error.errorMessage());
    -    }
    -
    -    @Test
    -    void testStepInterruptedExceptionForAtMostOnceAfterCheckpointLoss() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            return ctx.step(
    -                    "at-most-once-step",
    -                    String.class,
    -                    stepCtx -> {
    -                        executionCount.incrementAndGet();
    -                        return "result";
    -                    },
    -                    StepConfig.builder()
    -                            .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                            .build());
    -        });
    -
    -        // First run succeeds
    -        runner.run("test");
    -        assertEquals(1, executionCount.get());
    -
    -        // Simulate checkpoint loss (step started but result not saved)
    -        runner.resetCheckpointToStarted("at-most-once-step");
    -
    -        // Second run should fail with StepInterruptedException (not re-execute)
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals(1, executionCount.get()); // Should NOT have re-executed
    -        assertEquals(result.getError().get().errorType(), StepInterruptedException.class.getName());
    -    }
    -
    -    @Test
    -    void testStepInterruptedExceptionCanBeCaughtForRecovery() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            try {
    -                return ctx.step(
    -                        "payment",
    -                        String.class,
    -                        stepCtx -> {
    -                            executionCount.incrementAndGet();
    -                            return "payment-success";
    -                        },
    -                        StepConfig.builder()
    -                                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                                .build());
    -            } catch (StepInterruptedException e) {
    -                // Recovery: check external status and return verified result
    -                return ctx.step("verify-payment", String.class, stepCtx -> "verified-payment");
    -            }
    -        });
    -
    -        // First run succeeds
    -        runner.run("test");
    -
    -        // Simulate interruption (step started but result not checkpointed)
    -        runner.resetCheckpointToStarted("payment");
    -
    -        // Second run catches exception and recovers
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("verified-payment", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testNonDeterministicExceptionOnStepNameChange() {
    -        var useNewName = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var stepName = useNewName.get() == 0 ? "original-name" : "changed-name";
    -            return ctx.step(stepName, String.class, stepCtx -> "result");
    -        });
    -
    -        // First run with original name
    -        runner.run("test");
    -
    -        // Change step name for replay
    -        useNewName.set(1);
    -
    -        // Replay should detect non-determinism
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    // Custom exception for testing exception preservation
    -    public static class CustomBusinessException extends RuntimeException {
    -        private final int errorCode;
    -
    -        public CustomBusinessException(String message, int errorCode) {
    -            super(message);
    -            this.errorCode = errorCode;
    -        }
    -
    -        public int getErrorCode() {
    -            return errorCode;
    -        }
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/IntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/IntegrationTest.java
    deleted file mode 100644
    index 77c483f19..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/IntegrationTest.java
    +++ /dev/null
    @@ -1,270 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -
    -import java.time.Duration;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Some example test to test end to end behavior * */
    -class IntegrationTest {
    -
    -    static class TestInput {
    -        public String value;
    -
    -        public TestInput() {}
    -
    -        public TestInput(String value) {
    -            this.value = value;
    -        }
    -    }
    -
    -    static class TestOutput {
    -        public String result;
    -
    -        public TestOutput() {}
    -
    -        public TestOutput(String result) {
    -            this.result = result;
    -        }
    -    }
    -
    -    @Test
    -    void testActualSyncExecution() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var result = context.step("process", String.class, stepCtx -> "Processed: " + input.value);
    -            return new TestOutput(result);
    -        });
    -
    -        var result = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Processed: test", result.getResult(TestOutput.class).result);
    -        assertEquals(1, result.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testActualAsyncExecution() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var future = context.stepAsync("async-process", String.class, stepCtx -> "Async: " + input.value);
    -            try {
    -                var result = future.get();
    -                return new TestOutput(result);
    -            } catch (Exception e) {
    -                throw new RuntimeException(e);
    -            }
    -        });
    -
    -        var result = runner.run(new TestInput("async-test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("Async: async-test", result.getResult(TestOutput.class).result);
    -    }
    -
    -    @Test
    -    void testWaitSuspension() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("step1", String.class, stepCtx -> "Step 1 done");
    -
    -            // This should throw SuspendExecutionException
    -            context.wait(null, Duration.ofMinutes(5));
    -
    -            // This should never execute in first run
    -            var step2 = context.step("step2", String.class, stepCtx -> "Step 2 done");
    -            return new TestOutput(step1 + " + " + step2);
    -        });
    -
    -        var result = runner.run(new TestInput("wait-test"));
    -
    -        // Should be PENDING because wait suspended execution
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // For PENDING status, getResult should throw
    -        assertThrows(IllegalStateException.class, () -> {
    -            result.getResult(TestOutput.class);
    -        });
    -    }
    -
    -    @Test
    -    void testFullWaitOperation() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("step1", String.class, stepCtx -> "Step 1 done");
    -
    -            // This should throw SuspendExecutionException
    -            context.wait(null, Duration.ofMinutes(5));
    -
    -            // This should never execute in first run
    -            var step2 = context.step("step2", String.class, stepCtx -> "Step 2 done");
    -            return new TestOutput(step1 + " + " + step2);
    -        });
    -
    -        var result = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(3, result.getSucceededOperations().size());
    -        assertEquals("Step 1 done", result.getOperation("step1").getStepResult(String.class));
    -        assertEquals(
    -                OperationType.WAIT,
    -                result.getSucceededOperations()
    -                        .get(1)
    -                        .getType()); // todo: the result of getSucceededOperations is not ordered
    -        assertEquals(
    -                OperationStatus.SUCCEEDED,
    -                result.getSucceededOperations().get(1).getStatus());
    -        assertEquals("Step 2 done", result.getOperation("step2").getStepResult(String.class));
    -        assertEquals("Step 1 done + Step 2 done", result.getResult(TestOutput.class).result);
    -    }
    -
    -    @Test
    -    void testBasicReplay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var result = context.step("process", String.class, stepCtx -> {
    -                return "Execution #" + executionCount.incrementAndGet() + ": " + input.value;
    -            });
    -            return new TestOutput(result);
    -        });
    -
    -        // First execution
    -        var output1 = runner.run(new TestInput("replay-test"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, output1.getStatus());
    -
    -        // Second execution - should replay - will get state from previous run
    -        var output2 = runner.run(new TestInput("replay-test"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, output2.getStatus());
    -
    -        // Handler executed twice, but step only executed once
    -        assertEquals(1, executionCount.get());
    -        assertEquals("Execution #1: replay-test", output2.getResult(TestOutput.class).result);
    -        assertEquals(1, output2.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testMultiStepWorkflowWithOperationInspection() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("validate", String.class, stepCtx -> "validated");
    -            var step2 = context.step("process", String.class, stepCtx -> step1 + "-processed");
    -            return new TestOutput(step2);
    -        });
    -
    -        var result = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(2, result.getOperations().size());
    -        assertEquals("validated", runner.getOperation("validate").getStepResult(String.class));
    -        assertEquals("validated-processed", runner.getOperation("process").getStepResult(String.class));
    -        assertEquals("validated-processed", result.getResult(TestOutput.class).result);
    -    }
    -
    -    @Test
    -    void testOperationFiltering() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            context.step("good-step", String.class, stepCtx -> "ok");
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(1, result.getSucceededOperations().size());
    -        assertEquals(0, result.getFailedOperations().size());
    -        assertEquals("good-step", result.getSucceededOperations().get(0).getName());
    -    }
    -
    -    @Test
    -    void testWaitOperationWithManualAdvance() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            context.step("good-step", String.class, stepCtx -> "ok");
    -            context.wait(null, Duration.ofSeconds(5));
    -            return "done";
    -        });
    -
    -        var result = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -        assertEquals(1, result.getSucceededOperations().size());
    -        assertEquals("good-step", result.getSucceededOperations().get(0).getName());
    -
    -        runner.advanceTime();
    -
    -        var result2 = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(2, result2.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testWaitAsyncReturnsNonBlockingFuture() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("step1", String.class, stepCtx -> "Step 1 done");
    -
    -            // waitAsync should return immediately without blocking
    -            var waitFuture = context.waitAsync("async-wait", Duration.ofMinutes(5));
    -
    -            // This step should execute before the wait completes
    -            var step2 = context.step("step2", String.class, stepCtx -> "Step 2 done");
    -
    -            // Now block on the wait
    -            waitFuture.get();
    -
    -            return new TestOutput(step1 + " + " + step2);
    -        });
    -
    -        // First run should suspend at waitFuture.get() since the wait hasn't elapsed
    -        var result = runner.run(new TestInput("test"));
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Advance time so the wait completes, then re-run to finish
    -        runner.advanceTime();
    -
    -        var result2 = runner.runUntilComplete(new TestInput("test"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("Step 1 done + Step 2 done", result2.getResult(TestOutput.class).result);
    -    }
    -
    -    @Test
    -    void testWaitAsyncSuspendsOnGet() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var waitFuture = context.waitAsync(null, Duration.ofMinutes(5));
    -
    -            // Calling get() should suspend execution
    -            waitFuture.get();
    -
    -            var step = context.step("after-wait", String.class, stepCtx -> "done");
    -            return new TestOutput(step);
    -        });
    -
    -        // First run should suspend at waitFuture.get()
    -        var result = runner.run(new TestInput("test"));
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -
    -        // Advance time so the wait completes, then re-run to finish
    -        runner.advanceTime();
    -
    -        var result2 = runner.runUntilComplete(new TestInput("test"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("done", result2.getResult(TestOutput.class).result);
    -    }
    -
    -    @Test
    -    void testWaitAsyncWithoutName() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var waitFuture = context.waitAsync(null, Duration.ofSeconds(10));
    -            waitFuture.get();
    -            return new TestOutput("done");
    -        });
    -
    -        var result = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("done", result.getResult(TestOutput.class).result);
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/InvokeIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/InvokeIntegrationTest.java
    deleted file mode 100644
    index 2889934f8..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/InvokeIntegrationTest.java
    +++ /dev/null
    @@ -1,182 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.lambda.durable.exception.InvokeFailedException;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Some example test to test end to end behavior * */
    -class InvokeIntegrationTest {
    -
    -    static class TestInput {
    -        public String value;
    -
    -        public TestInput() {}
    -
    -        public TestInput(String value) {
    -            this.value = value;
    -        }
    -    }
    -
    -    static class TestOutput {
    -        public String result;
    -
    -        public TestOutput() {}
    -
    -        public TestOutput(String result) {
    -            this.result = result;
    -        }
    -    }
    -
    -    @Test
    -    void testInvokeWithSuccessResult() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var result = context.invoke("invoke", "chained-function", "{}", String.class);
    -            assertEquals("test output", result);
    -            return new TestOutput(result);
    -        });
    -
    -        var output1 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -        assertEquals(0, output1.getSucceededOperations().size());
    -
    -        runner.completeChainedInvoke("invoke", "\"test output\"");
    -        var output2 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output2.getStatus());
    -        assertEquals("test output", output2.getResult(TestOutput.class).result);
    -        assertEquals(1, output2.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testMultipleInvokeAsyncWithSuccessResult() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var future1 = context.invokeAsync("invoke1", "chained-function-1", "{}", String.class);
    -            var future2 = context.invokeAsync("invoke2", "chained-function-2", "{}", String.class);
    -            var result1 = future1.get();
    -            assertEquals("test output 1", result1);
    -            var result2 = future2.get();
    -            assertEquals("test output 2", result2);
    -            return new TestOutput(future2.get());
    -        });
    -
    -        var output1 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -        assertEquals(0, output1.getSucceededOperations().size());
    -
    -        runner.completeChainedInvoke("invoke1", "\"test output 1\"");
    -        var output2 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output2.getStatus());
    -        assertEquals(1, output2.getSucceededOperations().size());
    -
    -        runner.completeChainedInvoke("invoke2", "\"test output 2\"");
    -        var output3 = runner.run(new TestInput("test"));
    -
    -        assertEquals("test output 2", output3.getResult(TestOutput.class).result);
    -        assertEquals(2, output3.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testInvokeWithFailedResults() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            try {
    -                var result = context.invoke("invoke", "chained-function", "{}", String.class);
    -                return new TestOutput(result);
    -            } catch (InvokeFailedException ex) {
    -                assertEquals("error output", ex.getMessage());
    -                assertEquals("error data", ex.getErrorObject().errorData());
    -                assertEquals("error type", ex.getErrorObject().errorType());
    -                throw ex;
    -            }
    -        });
    -
    -        var output1 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -        assertEquals(0, output1.getSucceededOperations().size());
    -
    -        runner.failChainedInvoke(
    -                "invoke",
    -                ErrorObject.builder()
    -                        .errorMessage("error output")
    -                        .errorType("error type")
    -                        .errorData("error data")
    -                        .build());
    -        var output2 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.FAILED, output2.getStatus());
    -        ErrorObject error = output2.getError().orElseThrow();
    -        assertEquals("error type", error.errorType());
    -        assertEquals("error output", error.errorMessage());
    -    }
    -
    -    @Test
    -    void testInvokeWithStoppedResults() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            try {
    -                var result = context.invoke("invoke", "chained-function", "{}", String.class);
    -                return new TestOutput(result);
    -            } catch (InvokeFailedException ex) {
    -                assertEquals("error output", ex.getMessage());
    -                assertEquals("error data", ex.getErrorObject().errorData());
    -                assertEquals("error type", ex.getErrorObject().errorType());
    -                throw ex;
    -            }
    -        });
    -
    -        var output1 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -        assertEquals(0, output1.getSucceededOperations().size());
    -
    -        runner.stopChainedInvoke(
    -                "invoke",
    -                ErrorObject.builder()
    -                        .errorMessage("error output")
    -                        .errorType("error type")
    -                        .errorData("error data")
    -                        .build());
    -        var output2 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.FAILED, output2.getStatus());
    -        ErrorObject error = output2.getError().orElseThrow();
    -        assertEquals("error type", error.errorType());
    -        assertEquals("error output", error.errorMessage());
    -    }
    -
    -    @Test
    -    void testInvokeWithTimeoutResults() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            try {
    -                var result = context.invoke("invoke", "chained-function", "{}", String.class);
    -                return new TestOutput(result);
    -            } catch (InvokeFailedException ex) {
    -                assertNull(ex.getMessage());
    -                assertNull(ex.getErrorObject().errorData());
    -                assertNull(ex.getErrorObject().errorType());
    -                throw ex;
    -            }
    -        });
    -
    -        var output1 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.PENDING, output1.getStatus());
    -        assertEquals(0, output1.getSucceededOperations().size());
    -
    -        runner.timeoutChainedInvoke("invoke");
    -        var output2 = runner.run(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.FAILED, output2.getStatus());
    -        assertFalse(output2.getError().isPresent());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapInputValidationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapInputValidationTest.java
    deleted file mode 100644
    index 2c7ea87c6..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapInputValidationTest.java
    +++ /dev/null
    @@ -1,65 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.HashSet;
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class MapInputValidationTest {
    -
    -    @Test
    -    void mapWithNullCollection_throwsNullPointerException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            context.<String, String>map("test", null, String.class, (item, index, ctx) -> item);
    -            return "done";
    -        });
    -
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void mapWithNullFunction_throwsNullPointerException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            context.map("test", List.of("a"), String.class, null);
    -            return "done";
    -        });
    -
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void mapWithHashSet_throwsIllegalArgumentException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = new HashSet<>(List.of("a", "b"));
    -            context.map("test", items, String.class, (item, index, ctx) -> item);
    -            return "done";
    -        });
    -
    -        var result = runner.run("test");
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void mapWithEmptyCollection_returnsEmptyMapResult() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var result = context.map("empty-map", List.<String>of(), String.class, (item, index, ctx) -> item);
    -
    -            assertEquals(0, result.size());
    -            assertTrue(result.allSucceeded());
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionReason());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapIntegrationTest.java
    deleted file mode 100644
    index 888ef09cb..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/MapIntegrationTest.java
    +++ /dev/null
    @@ -1,962 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.model.MapResult;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class MapIntegrationTest {
    -
    -    @Test
    -    void testSimpleMap() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c");
    -            var result = context.map("process-items", items, String.class, (item, index, ctx) -> {
    -                return item.toUpperCase();
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(3, result.size());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -            assertEquals("C", result.getResult(2));
    -
    -            return String.join(",", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithStepsInsideBranches() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("hello", "world");
    -            var result = context.map("map-with-steps", items, String.class, (item, index, ctx) -> {
    -                return ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            return String.join(" ", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO WORLD", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapPartialFailure_failedItemDoesNotPreventOthers() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "FAIL", "c");
    -            var result = context.map("partial-fail", items, String.class, (item, index, ctx) -> {
    -                if ("FAIL".equals(item)) {
    -                    throw new RuntimeException("item failed");
    -                }
    -                return item.toUpperCase();
    -            });
    -
    -            // other items complete despite one failure
    -            assertFalse(result.allSucceeded());
    -            assertEquals(3, result.size());
    -
    -            // failed item captured at corresponding index
    -            assertEquals("A", result.getResult(0));
    -            assertNull(result.getResult(1));
    -            assertNotNull(result.getError(1));
    -            assertTrue(result.getError(1).errorMessage().contains("item failed"));
    -            assertEquals("C", result.getResult(2));
    -
    -            // successful items have no error
    -            assertNull(result.getError(0));
    -            assertNull(result.getError(2));
    -
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionReason());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapMultipleFailures_allCapturedAtCorrectIndices() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok", "bad1", "ok2", "bad2");
    -            var result = context.map("multi-fail", items, String.class, (item, index, ctx) -> {
    -                if (item.startsWith("bad")) {
    -                    throw new IllegalArgumentException("invalid: " + item);
    -                }
    -                return item.toUpperCase();
    -            });
    -
    -            assertFalse(result.allSucceeded());
    -            assertEquals(4, result.size());
    -
    -            // Successful items
    -            assertEquals("OK", result.getResult(0));
    -            assertNull(result.getError(0));
    -            assertEquals("OK2", result.getResult(2));
    -            assertNull(result.getError(2));
    -
    -            // Failed items at correct indices
    -            assertNull(result.getResult(1));
    -            assertNotNull(result.getError(1));
    -            assertTrue(result.getError(1).errorMessage().contains("bad1"));
    -            assertNull(result.getResult(3));
    -            assertNotNull(result.getError(3));
    -            assertTrue(result.getError(3).errorMessage().contains("bad2"));
    -
    -            assertEquals(2, result.succeeded().size());
    -            assertEquals(2, result.failed().size());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapAllItemsFail() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("x", "y");
    -            var result = context.map("all-fail", items, String.class, (item, index, ctx) -> {
    -                throw new RuntimeException("fail-" + item);
    -            });
    -
    -            assertFalse(result.allSucceeded());
    -            assertEquals(2, result.size());
    -            assertEquals(0, result.succeeded().size());
    -            assertEquals(2, result.failed().size());
    -
    -            for (int i = 0; i < result.size(); i++) {
    -                assertNull(result.getResult(i));
    -                assertNotNull(result.getError(i));
    -            }
    -            assertTrue(result.getError(0).errorMessage().contains("fail-x"));
    -            assertTrue(result.getError(1).errorMessage().contains("fail-y"));
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapWithMaxConcurrency1_sequentialExecution() {
    -        var peakConcurrency = new AtomicInteger(0);
    -        var currentConcurrency = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c", "d");
    -            var config = MapConfig.builder().maxConcurrency(1).build();
    -            var result = context.map(
    -                    "sequential-map",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        var concurrent = currentConcurrency.incrementAndGet();
    -                        peakConcurrency.updateAndGet(peak -> Math.max(peak, concurrent));
    -                        // Simulate some work via a durable step
    -                        var stepResult = ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -                        currentConcurrency.decrementAndGet();
    -                        return stepResult;
    -                    },
    -                    config);
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(4, result.size());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -            assertEquals("C", result.getResult(2));
    -            assertEquals("D", result.getResult(3));
    -
    -            return String.join(",", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C,D", result.getResult(String.class));
    -        // With maxConcurrency=1, at most 1 branch should run at a time
    -        assertTrue(peakConcurrency.get() <= 1, "Expected peak concurrency <= 1 but was " + peakConcurrency.get());
    -    }
    -
    -    @Test
    -    void testMapWithMaxConcurrency2_limitedConcurrency() {
    -        var peakConcurrency = new AtomicInteger(0);
    -        var currentConcurrency = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c", "d", "e");
    -            var config = MapConfig.builder().maxConcurrency(2).build();
    -            var result = context.map(
    -                    "limited-map",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        var concurrent = currentConcurrency.incrementAndGet();
    -                        peakConcurrency.updateAndGet(peak -> Math.max(peak, concurrent));
    -                        var stepResult = ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -                        currentConcurrency.decrementAndGet();
    -                        return stepResult;
    -                    },
    -                    config);
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(5, result.size());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -            assertEquals("C", result.getResult(2));
    -            assertEquals("D", result.getResult(3));
    -            assertEquals("E", result.getResult(4));
    -
    -            return String.join(",", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C,D,E", result.getResult(String.class));
    -        assertTrue(peakConcurrency.get() <= 2, "Expected peak concurrency <= 2 but was " + peakConcurrency.get());
    -    }
    -
    -    @Test
    -    void testMapWithToleratedFailureCount_earlyTermination() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok", "FAIL1", "FAIL2", "ok2", "ok3");
    -            var config = MapConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.toleratedFailureCount(1))
    -                    .build();
    -            var result = context.map(
    -                    "tolerated-fail",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        if (item.startsWith("FAIL")) {
    -                            throw new RuntimeException("failed: " + item);
    -                        }
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionReason());
    -            assertFalse(result.allSucceeded());
    -            assertEquals(5, result.size());
    -            assertEquals("OK", result.getResult(0));
    -            assertNull(result.getResult(1));
    -            assertNotNull(result.getError(1));
    -            assertNull(result.getResult(2));
    -            assertNotNull(result.getError(2));
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapWithMinSuccessful_earlyTermination() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c", "d", "e");
    -            var config = MapConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.minSuccessful(2))
    -                    .build();
    -            var result = context.map(
    -                    "min-successful", items, String.class, (item, index, ctx) -> item.toUpperCase(), config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED, result.completionReason());
    -            assertEquals(5, result.size());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapReplayAfterInterruption_cachedResultsUsed() {
    -        var executionCounts = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c");
    -            var result = context.map("replay-map", items, String.class, (item, index, ctx) -> {
    -                executionCounts.incrementAndGet();
    -                return item.toUpperCase();
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(3, result.size());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -            assertEquals("C", result.getResult(2));
    -
    -            return String.join(",", result.results());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("A,B,C", result1.getResult(String.class));
    -        var firstRunCount = executionCounts.get();
    -        assertTrue(firstRunCount >= 3, "Expected at least 3 executions on first run but got " + firstRunCount);
    -
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("A,B,C", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCounts.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testNestedMap_mapInsideMapBranch() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var outerItems = List.of("group1", "group2");
    -            var outerResult = context.map("outer-map", outerItems, String.class, (group, outerIndex, outerCtx) -> {
    -                var innerItems = List.of(group + "-a", group + "-b");
    -                var innerResult = outerCtx.map(
    -                        "inner-map-" + outerIndex,
    -                        innerItems,
    -                        String.class,
    -                        (item, innerIndex, innerCtx) -> item.toUpperCase());
    -
    -                assertTrue(innerResult.allSucceeded());
    -                return String.join("+", innerResult.results());
    -            });
    -
    -            assertTrue(outerResult.allSucceeded());
    -            assertEquals(2, outerResult.size());
    -            assertEquals("GROUP1-A+GROUP1-B", outerResult.getResult(0));
    -            assertEquals("GROUP2-A+GROUP2-B", outerResult.getResult(1));
    -
    -            var combined = new ArrayList<String>();
    -            for (int i = 0; i < outerResult.size(); i++) {
    -                combined.add(outerResult.getResult(i));
    -            }
    -            return String.join("|", combined);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("GROUP1-A+GROUP1-B|GROUP2-A+GROUP2-B", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithWaitInsideBranches() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b");
    -            var result = context.map("map-with-wait", items, String.class, (item, index, ctx) -> {
    -                var stepped = ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -                ctx.wait("pause-" + index, Duration.ofSeconds(1));
    -                return stepped + "-done";
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals("A-done", result.getResult(0));
    -            assertEquals("B-done", result.getResult(1));
    -            return String.join(",", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A-done,B-done", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapAsyncWithInterleavedWork() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("x", "y");
    -            var future = context.mapAsync("async-map", items, String.class, (item, index, ctx) -> {
    -                return ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -            });
    -
    -            // Do other work while map runs
    -            var other = context.step("other-work", String.class, stepCtx -> "OTHER");
    -
    -            // Now collect map results
    -            var mapResult = future.get();
    -            assertTrue(mapResult.allSucceeded());
    -
    -            return other + ":" + String.join(",", mapResult.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("OTHER:X,Y", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapUnlimitedConcurrencyWithToleratedFailureCount() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok1", "FAIL1", "ok2", "FAIL2", "ok3");
    -            var config = MapConfig.builder()
    -                    .completionConfig(CompletionConfig.toleratedFailureCount(1))
    -                    .build();
    -            var result = context.map(
    -                    "unlimited-tolerated",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        if (item.startsWith("FAIL")) {
    -                            throw new RuntimeException("failed: " + item);
    -                        }
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionReason());
    -            assertFalse(result.allSucceeded());
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapReplayWithFailedBranches() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok", "FAIL", "ok2");
    -            var result = context.map("replay-fail-map", items, String.class, (item, index, ctx) -> {
    -                executionCount.incrementAndGet();
    -                if ("FAIL".equals(item)) {
    -                    throw new RuntimeException("item failed");
    -                }
    -                return item.toUpperCase();
    -            });
    -
    -            // Errors survive replay since they are stored as MapError (not raw Throwable)
    -            assertEquals("OK", result.getResult(0));
    -            assertEquals("OK2", result.getResult(2));
    -            return "done";
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” functions should not re-execute
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapWithSingleItem() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("only");
    -            var result = context.map("single-item", items, String.class, (item, index, ctx) -> {
    -                return ctx.step("process", String.class, stepCtx -> item.toUpperCase());
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(1, result.size());
    -            assertEquals("ONLY", result.getResult(0));
    -            assertEquals(0, result.failed().size());
    -            return result.getResult(0);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("ONLY", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testStepBeforeAndAfterMap() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var before = context.step("before", String.class, stepCtx -> "BEFORE");
    -
    -            var items = List.of("a", "b");
    -            var mapResult = context.map("middle-map", items, String.class, (item, index, ctx) -> item.toUpperCase());
    -
    -            var after = context.step("after", String.class, stepCtx -> "AFTER");
    -
    -            return before + ":" + String.join(",", mapResult.results()) + ":" + after;
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("BEFORE:A,B:AFTER", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testSequentialMaps() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var result1 =
    -                    context.map("map-1", List.of("a", "b"), String.class, (item, index, ctx) -> item.toUpperCase());
    -            var result2 = context.map("map-2", List.of("x", "y"), String.class, (item, index, ctx) -> item + "!");
    -
    -            return String.join(",", result1.results()) + "|" + String.join(",", result2.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B|x!,y!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithAllSuccessfulCompletionConfig_stopsOnFirstFailure() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok1", "FAIL", "ok2", "ok3");
    -            var config = MapConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.allSuccessful())
    -                    .build();
    -            var result = context.map(
    -                    "all-successful",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        if (item.startsWith("FAIL")) {
    -                            throw new RuntimeException("failed");
    -                        }
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionReason());
    -            assertEquals("OK1", result.getResult(0));
    -            assertNotNull(result.getError(1));
    -            // Items after the failure should be NOT_STARTED
    -            assertEquals(
    -                    MapResult.MapResultItem.Status.SKIPPED, result.getItem(2).status());
    -            assertEquals(
    -                    MapResult.MapResultItem.Status.SKIPPED, result.getItem(3).status());
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapWithWaitInsideBranches_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b");
    -            var result = context.map("wait-replay-map", items, String.class, (item, index, ctx) -> {
    -                executionCount.incrementAndGet();
    -                var stepped = ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -                ctx.wait("pause-" + index, Duration.ofSeconds(1));
    -                return stepped + "-done";
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            return String.join(",", result.results());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("A-done,B-done", result1.getResult(String.class));
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” should use cached results, not re-execute
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("A-done,B-done", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testNestedMap_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var outerItems = List.of("g1", "g2");
    -            var outerResult = context.map("outer", outerItems, String.class, (group, outerIdx, outerCtx) -> {
    -                var innerItems = List.of(group + "-a", group + "-b");
    -                var innerResult =
    -                        outerCtx.map("inner-" + outerIdx, innerItems, String.class, (item, innerIdx, innerCtx) -> {
    -                            executionCount.incrementAndGet();
    -                            return item.toUpperCase();
    -                        });
    -                return String.join("+", innerResult.results());
    -            });
    -
    -            return String.join("|", outerResult.results());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("G1-A+G1-B|G2-A+G2-B", result1.getResult(String.class));
    -        var firstRunCount = executionCount.get();
    -
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("G1-A+G1-B|G2-A+G2-B", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCount.get(), "Nested map should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapWithToleratedFailurePercentage() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok1", "FAIL1", "ok2", "FAIL2", "ok3", "FAIL3", "ok4");
    -            var config = MapConfig.builder()
    -                    .completionConfig(CompletionConfig.toleratedFailurePercentage(0.3))
    -                    .build();
    -            var result = context.map(
    -                    "pct-fail",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        if (item.startsWith("FAIL")) {
    -                            throw new RuntimeException("failed: " + item);
    -                        }
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionReason());
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapWithToleratedFailurePercentage_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("ok1", "FAIL1", "ok2", "FAIL2", "ok3", "FAIL3", "ok4");
    -            var config = MapConfig.builder()
    -                    .completionConfig(CompletionConfig.toleratedFailurePercentage(0.3))
    -                    .build();
    -            var result = context.map(
    -                    "pct-fail-replay",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        executionCount.incrementAndGet();
    -                        if (item.startsWith("FAIL")) {
    -                            throw new RuntimeException("failed: " + item);
    -                        }
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionReason());
    -            return "done";
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” with unlimited concurrency, children replay simultaneously.
    -        // Verify completionReason is consistent and no re-execution occurs.
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapAsyncWithWaitInsideBranches() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b");
    -            var future = context.mapAsync("async-wait-map", items, String.class, (item, index, ctx) -> {
    -                var stepped = ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -                ctx.wait("pause-" + index, Duration.ofSeconds(1));
    -                return stepped + "-done";
    -            });
    -
    -            var other = context.step("other", String.class, stepCtx -> "OTHER");
    -            var mapResult = future.get();
    -            assertTrue(mapResult.allSucceeded());
    -
    -            return other + ":" + String.join(",", mapResult.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("OTHER:A-done,B-done", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithCustomSerDes() {
    -        var customSerDes = new software.amazon.lambda.durable.serde.JacksonSerDes();
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b");
    -            var config = MapConfig.builder().serDes(customSerDes).build();
    -            var result = context.map(
    -                    "custom-serdes-map", items, String.class, (item, index, ctx) -> item.toUpperCase(), config);
    -
    -            assertTrue(result.allSucceeded());
    -            return String.join(",", result.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithGenericResultType() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a,b", "c,d");
    -            var result = context.map("generic-map", items, new TypeToken<List<String>>() {}, (item, index, ctx) -> {
    -                return ctx.step(
    -                        "split-" + index, new TypeToken<List<String>>() {}, stepCtx -> List.of(item.split(",")));
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(List.of("a", "b"), result.getResult(0));
    -            assertEquals(List.of("c", "d"), result.getResult(1));
    -            return "ok";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMapWithWaitInsideBranches_maxConcurrency1() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b");
    -            var config = MapConfig.builder().maxConcurrency(1).build();
    -            var result = context.map(
    -                    "seq-wait-map",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        var stepped = ctx.step("step-" + index, String.class, stepCtx -> item.toUpperCase());
    -                        ctx.wait("pause-" + index, Duration.ofSeconds(1));
    -                        return stepped + "-done";
    -                    },
    -                    config);
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(2, result.size());
    -            assertEquals("A-done", result.getResult(0));
    -            assertEquals("B-done", result.getResult(1));
    -            return String.join(",", result.results());
    -        });
    -
    -        // With maxConcurrency=1, each invocation processes one branch's wait.
    -        // Use explicit run() + advanceTime() loop due to a known thread coordination race
    -        // (same as ChildContextIntegrationTest.twoAsyncChildContextsBothWaitSuspendAndResume).
    -        for (int i = 0; i < 10; i++) {
    -            var result = runner.run("test");
    -            if (result.getStatus() != ExecutionStatus.PENDING) {
    -                assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -                assertEquals("A-done,B-done", result.getResult(String.class));
    -                return;
    -            }
    -            runner.advanceTime();
    -        }
    -        fail("Expected SUCCEEDED within 10 invocations");
    -    }
    -
    -    @Test
    -    void testMapWithMinSuccessful_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c", "d", "e");
    -            var config = MapConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.minSuccessful(2))
    -                    .build();
    -            var result = context.map(
    -                    "min-success-replay",
    -                    items,
    -                    String.class,
    -                    (item, index, ctx) -> {
    -                        executionCount.incrementAndGet();
    -                        return item.toUpperCase();
    -                    },
    -                    config);
    -
    -            assertEquals(ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED, result.completionReason());
    -            assertEquals("A", result.getResult(0));
    -            assertEquals("B", result.getResult(1));
    -            return "done";
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” small result path: deserialize MapResult from payload, no child replay
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapAsyncWithInterleavedWork_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("x", "y");
    -            var future = context.mapAsync("async-replay-map", items, String.class, (item, index, ctx) -> {
    -                executionCount.incrementAndGet();
    -                return ctx.step("process-" + index, String.class, stepCtx -> item.toUpperCase());
    -            });
    -
    -            var other = context.step("other-work", String.class, stepCtx -> "OTHER");
    -            var mapResult = future.get();
    -            assertTrue(mapResult.allSucceeded());
    -
    -            return other + ":" + String.join(",", mapResult.results());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("OTHER:X,Y", result1.getResult(String.class));
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” async map + interleaved step should all use cached results
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("OTHER:X,Y", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapWithLargeResult_replayChildren() {
    -        var executionCount = new AtomicInteger(0);
    -        // Generate items that produce results exceeding 256KB total to trigger replayChildren path
    -        var items = new ArrayList<String>();
    -        for (int i = 0; i < 100; i++) {
    -            items.add("item-" + i);
    -        }
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var result = context.map("large-result-map", items, String.class, (item, index, ctx) -> {
    -                executionCount.incrementAndGet();
    -                // Each item returns ~3KB string to push total well over 256KB
    -                return item + "-" + "x".repeat(3000);
    -            });
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(100, result.size());
    -            assertTrue(result.getResult(0).startsWith("item-0-"));
    -            assertTrue(result.getResult(99).startsWith("item-99-"));
    -            return "ok";
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstRunCount = executionCount.get();
    -        assertTrue(firstRunCount >= 100);
    -
    -        // Replay β€” large result path: replayChildren=true, children replay from cache
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(firstRunCount, executionCount.get(), "Map functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testMapWithNullResults() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var items = List.of("a", "b", "c");
    -            var result = context.map("null-map", items, String.class, (item, index, ctx) -> null);
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(3, result.size());
    -            for (int i = 0; i < result.size(); i++) {
    -                assertEquals(
    -                        MapResult.MapResultItem.Status.SUCCEEDED,
    -                        result.getItem(i).status());
    -                assertNull(result.getResult(i));
    -                assertNull(result.getError(i));
    -            }
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testMultipleMapAsyncInParallel() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var numbers = List.of(1, 2, 3);
    -            var letters = List.of("a", "b");
    -            var words = List.of("hello", "world", "foo", "bar");
    -
    -            var numbersFuture = context.mapAsync("map-numbers", numbers, String.class, (item, index, ctx) -> {
    -                return ctx.step("double-" + index, String.class, stepCtx -> String.valueOf(item * 2));
    -            });
    -
    -            var lettersFuture = context.mapAsync("map-letters", letters, String.class, (item, index, ctx) -> {
    -                return ctx.step("upper-" + index, String.class, stepCtx -> item.toUpperCase());
    -            });
    -
    -            var wordsFuture = context.mapAsync("map-words", words, String.class, (item, index, ctx) -> {
    -                return ctx.step("reverse-" + index, String.class, stepCtx -> new StringBuilder(item)
    -                        .reverse()
    -                        .toString());
    -            });
    -
    -            var numbersResult = numbersFuture.get();
    -            var lettersResult = lettersFuture.get();
    -            var wordsResult = wordsFuture.get();
    -
    -            assertTrue(numbersResult.allSucceeded());
    -            assertTrue(lettersResult.allSucceeded());
    -            assertTrue(wordsResult.allSucceeded());
    -
    -            return String.join(",", numbersResult.results())
    -                    + "|" + String.join(",", lettersResult.results())
    -                    + "|" + String.join(",", wordsResult.results());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("2,4,6|A,B|olleh,dlrow,oof,rab", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMapWithEmptyItems() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            List<String> items = List.of();
    -            var result = context.map("empty-map", items, String.class, (item, index, ctx) -> item);
    -
    -            assertTrue(result.allSucceeded());
    -            assertEquals(0, result.size());
    -            assertTrue(result.results().isEmpty());
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testAnyOfMapWithEmptyItems() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            List<String> items = List.of();
    -            var result = context.mapAsync("empty-map", items, String.class, (item, index, ctx) -> item);
    -
    -            DurableFuture.anyOf(result);
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/NestedStepIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/NestedStepIntegrationTest.java
    deleted file mode 100644
    index f4dcd609a..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/NestedStepIntegrationTest.java
    +++ /dev/null
    @@ -1,55 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -/** Tests that nested step calling is properly rejected. */
    -class NestedStepIntegrationTest {
    -
    -    @Test
    -    void nestedStepCallingThrowsIllegalStateException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // outer-step's supplier calls context.step() which internally calls stepAsync().get()
    -            // The get() is called from the outer step's thread (named "1-step"), triggering the check
    -            var future = context.stepAsync("outer-step", String.class, stepCtx -> {
    -                return context.step("inner-step", String.class, stepCtx2 -> "inner-result");
    -            });
    -            return future.get();
    -        });
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        var errorMessage = result.getError().get().errorMessage();
    -        assertTrue(
    -                errorMessage.contains("Nested STEP operation is not supported"),
    -                "Expected error about nested step calling, got: " + errorMessage);
    -    }
    -
    -    @Test
    -    void awaitingAsyncStepInsideSyncStepThrowsIllegalStateException() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            // Start async step from handler thread
    -            var asyncFuture = context.stepAsync("async-step", String.class, stepCtx -> "async-result");
    -
    -            // Sync step tries to await the async step's result inside its supplier
    -            return context.step("sync-step", String.class, stepCtx -> {
    -                // This get() is called from sync-step's thread ("2-step"), which is not allowed
    -                return "combined: " + asyncFuture.get();
    -            });
    -        });
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        var errorMessage = result.getError().get().errorMessage();
    -        assertTrue(
    -                errorMessage.contains("Nested STEP operation is not supported"),
    -                "Expected error about nested step calling, got: " + errorMessage);
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ParallelIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ParallelIntegrationTest.java
    deleted file mode 100644
    index d55f99cb7..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/ParallelIntegrationTest.java
    +++ /dev/null
    @@ -1,640 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -import software.amazon.lambda.durable.testing.TestOperation;
    -
    -class ParallelIntegrationTest {
    -
    -    @Test
    -    void testSimpleParallel() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("process-items", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b", "c")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> item.toUpperCase()));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(3, result.size());
    -            assertEquals(3, result.succeeded());
    -            assertEquals(0, result.failed());
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelWithStepsInsideBranches() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("parallel-with-steps", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("hello", "world")) {
    -                    futures.add(parallel.branch(
    -                            "branch-" + item,
    -                            String.class,
    -                            ctx -> ctx.step("process-" + item, String.class, stepCtx -> item.toUpperCase())));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertTrue(result.completionStatus().isSucceeded());
    -            return String.join(" ", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("HELLO WORLD", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelPartialFailure_failedBranchDoesNotPreventOthers() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("partial-fail", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-a", String.class, ctx -> "A"));
    -                futures.add(parallel.branch("branch-fail", String.class, ctx -> {
    -                    throw new RuntimeException("branch failed");
    -                }));
    -                futures.add(parallel.branch("branch-c", String.class, ctx -> "C"));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(3, result.size());
    -            assertEquals(2, result.succeeded());
    -            assertEquals(1, result.failed());
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -
    -            assertEquals("A", futures.get(0).get());
    -            assertEquals("C", futures.get(2).get());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testParallelAllBranchesFail() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("all-fail", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-x", String.class, ctx -> {
    -                    throw new RuntimeException("fail-x");
    -                }));
    -                futures.add(parallel.branch("branch-y", String.class, ctx -> {
    -                    throw new RuntimeException("fail-y");
    -                }));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(2, result.size());
    -            assertEquals(0, result.succeeded());
    -            assertEquals(2, result.failed());
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testParallelWithMaxConcurrency1_sequentialExecution() {
    -        var peakConcurrency = new AtomicInteger(0);
    -        var currentConcurrency = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().maxConcurrency(1).build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("sequential-parallel", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b", "c", "d")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> {
    -                        var concurrent = currentConcurrency.incrementAndGet();
    -                        peakConcurrency.updateAndGet(peak -> Math.max(peak, concurrent));
    -                        var stepped = ctx.step("process-" + item, String.class, stepCtx -> item.toUpperCase());
    -                        currentConcurrency.decrementAndGet();
    -                        return stepped;
    -                    }));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(4, result.size());
    -            assertEquals(4, result.succeeded());
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C,D", result.getResult(String.class));
    -        assertTrue(peakConcurrency.get() <= 1, "Expected peak concurrency <= 1 but was " + peakConcurrency.get());
    -    }
    -
    -    @Test
    -    void testParallelWithMaxConcurrency2_limitedConcurrency() {
    -        var peakConcurrency = new AtomicInteger(0);
    -        var currentConcurrency = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().maxConcurrency(2).build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("limited-parallel", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b", "c", "d", "e")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> {
    -                        var concurrent = currentConcurrency.incrementAndGet();
    -                        peakConcurrency.updateAndGet(peak -> Math.max(peak, concurrent));
    -                        var stepped = ctx.step("process-" + item, String.class, stepCtx -> item.toUpperCase());
    -                        currentConcurrency.decrementAndGet();
    -                        return stepped;
    -                    }));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(5, result.size());
    -            assertEquals(5, result.succeeded());
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B,C,D,E", result.getResult(String.class));
    -        assertTrue(peakConcurrency.get() <= 2, "Expected peak concurrency <= 2 but was " + peakConcurrency.get());
    -    }
    -
    -    @Test
    -    void testParallelReplayAfterInterruption_cachedResultsUsed() {
    -        var executionCounts = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("replay-parallel", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b", "c")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> {
    -                        executionCounts.incrementAndGet();
    -                        return item.toUpperCase();
    -                    }));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(3, result.succeeded());
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("A,B,C", result1.getResult(String.class));
    -        var firstRunCount = executionCounts.get();
    -        assertTrue(firstRunCount >= 3, "Expected at least 3 executions on first run but got " + firstRunCount);
    -
    -        var result2 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("A,B,C", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCounts.get(), "Branch functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testParallelWithWaitInsideBranches() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("parallel-with-wait", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> {
    -                        var stepped = ctx.step("process-" + item, String.class, stepCtx -> item.toUpperCase());
    -                        ctx.wait("pause-" + item, Duration.ofSeconds(1));
    -                        return stepped + "-done";
    -                    }));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertTrue(result.completionStatus().isSucceeded());
    -            assertEquals("A-done", futures.get(0).get());
    -            assertEquals("B-done", futures.get(1).get());
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A-done,B-done", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelAsyncWithInterleavedWork() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("async-parallel", config);
    -
    -            // Register branches without joining yet
    -            futures.add(parallel.branch(
    -                    "branch-x", String.class, ctx -> ctx.step("process-x", String.class, stepCtx -> "X")));
    -            futures.add(parallel.branch(
    -                    "branch-y", String.class, ctx -> ctx.step("process-y", String.class, stepCtx -> "Y")));
    -
    -            // Do other work while parallel runs
    -            var other = context.step("other-work", String.class, stepCtx -> "OTHER");
    -
    -            // Now join
    -            parallel.close();
    -            var parallelResult = parallel.get();
    -            assertTrue(parallelResult.completionStatus().isSucceeded());
    -
    -            return other + ":"
    -                    + String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("OTHER:X,Y", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testStepBeforeAndAfterParallel() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var before = context.step("before", String.class, stepCtx -> "BEFORE");
    -
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("middle-parallel", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-a", String.class, ctx -> "A"));
    -                futures.add(parallel.branch("branch-b", String.class, ctx -> "B"));
    -            }
    -
    -            var after = context.step("after", String.class, stepCtx -> "AFTER");
    -
    -            return before + ":"
    -                    + String.join(",", futures.stream().map(DurableFuture::get).toList()) + ":" + after;
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("BEFORE:A,B:AFTER", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testSequentialParallelBlocks() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var futures1 = new ArrayList<DurableFuture<String>>();
    -            var parallel1 =
    -                    context.parallel("parallel-1", ParallelConfig.builder().build());
    -            try (parallel1) {
    -                futures1.add(parallel1.branch("branch-a", String.class, ctx -> "A"));
    -                futures1.add(parallel1.branch("branch-b", String.class, ctx -> "B"));
    -            }
    -
    -            var futures2 = new ArrayList<DurableFuture<String>>();
    -            var parallel2 =
    -                    context.parallel("parallel-2", ParallelConfig.builder().build());
    -            try (parallel2) {
    -                futures2.add(parallel2.branch("branch-x", String.class, ctx -> "x!"));
    -                futures2.add(parallel2.branch("branch-y", String.class, ctx -> "y!"));
    -            }
    -
    -            var r1 = String.join(",", futures1.stream().map(DurableFuture::get).toList());
    -            var r2 = String.join(",", futures2.stream().map(DurableFuture::get).toList());
    -            return r1 + "|" + r2;
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("A,B|x!,y!", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelReplayWithFailedBranches() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("replay-fail-parallel", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-ok", String.class, ctx -> {
    -                    executionCount.incrementAndGet();
    -                    return "OK";
    -                }));
    -                futures.add(parallel.branch("branch-fail", String.class, ctx -> {
    -                    executionCount.incrementAndGet();
    -                    throw new RuntimeException("branch failed");
    -                }));
    -                futures.add(parallel.branch("branch-ok2", String.class, ctx -> {
    -                    executionCount.incrementAndGet();
    -                    return "OK2";
    -                }));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals("OK", futures.get(0).get());
    -            assertEquals("OK2", futures.get(2).get());
    -            return "done";
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstRunCount = executionCount.get();
    -
    -        // Replay β€” branch functions should not re-execute
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals(firstRunCount, executionCount.get(), "Branch functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testParallelWithSingleBranch() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("single-branch", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch(
    -                        "branch-only", String.class, ctx -> ctx.step("process", String.class, stepCtx -> "ONLY")));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(1, result.size());
    -            assertEquals(1, result.succeeded());
    -            assertEquals(0, result.failed());
    -            return futures.get(0).get();
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("ONLY", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelWithWaitInsideBranches_replay() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("wait-replay-parallel", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> {
    -                        executionCount.incrementAndGet();
    -                        var stepped = ctx.step("process-" + item, String.class, stepCtx -> item.toUpperCase());
    -                        ctx.wait("pause-" + item, Duration.ofSeconds(1));
    -                        return stepped + "-done";
    -                    }));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertTrue(result.completionStatus().isSucceeded());
    -            return String.join(",", futures.stream().map(DurableFuture::get).toList());
    -        });
    -
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        assertEquals("A-done,B-done", result1.getResult(String.class));
    -        var firstRunCount = executionCount.get();
    -
    -        var result2 = runner.run("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("A-done,B-done", result2.getResult(String.class));
    -        assertEquals(firstRunCount, executionCount.get(), "Branch functions should not re-execute on replay");
    -    }
    -
    -    @Test
    -    void testParallelUnlimitedConcurrencyWithToleratedFailureCount() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder()
    -                    .completionConfig(CompletionConfig.toleratedFailureCount(1))
    -                    .build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("unlimited-tolerated", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-ok1", String.class, ctx -> "OK1"));
    -                futures.add(parallel.branch("branch-fail1", String.class, ctx -> {
    -                    throw new RuntimeException("failed: fail1");
    -                }));
    -                futures.add(parallel.branch("branch-ok2", String.class, ctx -> "OK2"));
    -                futures.add(parallel.branch("branch-fail2", String.class, ctx -> {
    -                    throw new RuntimeException("failed: fail2");
    -                }));
    -                futures.add(parallel.branch("branch-ok3", String.class, ctx -> "OK3"));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionStatus());
    -            assertFalse(result.completionStatus().isSucceeded());
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testParallelBranchesReturnDifferentTypes() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var parallel = context.parallel("mixed-types", config);
    -
    -            DurableFuture<String> strFuture;
    -            DurableFuture<Integer> intFuture;
    -
    -            try (parallel) {
    -                strFuture = parallel.branch("branch-str", String.class, ctx -> "hello");
    -                intFuture = parallel.branch("branch-int", Integer.class, ctx -> 42);
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(2, result.size());
    -            assertEquals(2, result.succeeded());
    -            assertEquals("hello", strFuture.get());
    -            assertEquals(42, intFuture.get());
    -
    -            return strFuture.get() + ":" + intFuture.get();
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("hello:42", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelResultSummary_succeededAndFailedCounts() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder().build();
    -            var parallel = context.parallel("count-check", config);
    -
    -            try (parallel) {
    -                parallel.branch("ok1", String.class, ctx -> "OK1");
    -                parallel.branch("ok2", String.class, ctx -> "OK2");
    -                parallel.branch("ok3", String.class, ctx -> "OK3");
    -                parallel.branch("fail1", String.class, ctx -> {
    -                    throw new RuntimeException("fail");
    -                });
    -                parallel.branch("fail2", String.class, ctx -> {
    -                    throw new RuntimeException("fail");
    -                });
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(5, result.size());
    -            assertEquals(3, result.succeeded());
    -            assertEquals(2, result.failed());
    -            assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -
    -            return result.succeeded() + "/" + result.failed();
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("3/2", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testParallelWithToleratedFailureCount_earlyTermination() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.toleratedFailureCount(1))
    -                    .build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("tolerated-fail", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-ok", String.class, ctx -> "OK"));
    -                futures.add(parallel.branch("branch-fail1", String.class, ctx -> {
    -                    throw new RuntimeException("failed: fail1");
    -                }));
    -                futures.add(parallel.branch("branch-fail2", String.class, ctx -> {
    -                    throw new RuntimeException("failed: fail2");
    -                }));
    -                futures.add(parallel.branch("branch-ok2", String.class, ctx -> "OK2"));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionStatus());
    -            assertFalse(result.completionStatus().isSucceeded());
    -            assertEquals(4, result.size());
    -            assertEquals("OK", futures.get(0).get());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testParallelWithMinSuccessful_earlyTermination() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.minSuccessful(2))
    -                    .build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("min-successful", config);
    -
    -            try (parallel) {
    -                for (var item : List.of("a", "b", "c", "d", "e")) {
    -                    futures.add(parallel.branch("branch-" + item, String.class, ctx -> item.toUpperCase()));
    -                }
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED, result.completionStatus());
    -            assertTrue(result.completionStatus().isSucceeded());
    -            assertTrue(result.size() >= 2 && result.size() <= 5);
    -            assertEquals("A", futures.get(0).get());
    -            assertEquals("B", futures.get(1).get());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(
    -                ExecutionStatus.SUCCEEDED,
    -                result.getStatus(),
    -                String.join(
    -                        " ",
    -                        result.getOperations().stream()
    -                                .map(TestOperation::toString)
    -                                .toList()));
    -    }
    -
    -    @Test
    -    void testParallelWithAllSuccessful_stopsOnFirstFailure() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            var config = ParallelConfig.builder()
    -                    .maxConcurrency(1)
    -                    .completionConfig(CompletionConfig.allSuccessful())
    -                    .build();
    -            var futures = new ArrayList<DurableFuture<String>>();
    -            var parallel = context.parallel("all-successful", config);
    -
    -            try (parallel) {
    -                futures.add(parallel.branch("branch-ok1", String.class, ctx -> "OK1"));
    -                futures.add(parallel.branch("branch-fail", String.class, ctx -> {
    -                    throw new RuntimeException("failed");
    -                }));
    -                futures.add(parallel.branch("branch-ok2", String.class, ctx -> "OK2"));
    -            }
    -
    -            var result = parallel.get();
    -            assertEquals(ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED, result.completionStatus());
    -            assertEquals("OK1", futures.get(0).get());
    -
    -            return "done";
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/StepSemanticsIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/StepSemanticsIntegrationTest.java
    deleted file mode 100644
    index 1b3b67409..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/StepSemanticsIntegrationTest.java
    +++ /dev/null
    @@ -1,186 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.StepSemantics;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class StepSemanticsIntegrationTest {
    -
    -    @Test
    -    void testAtLeastOnceCompletesSuccessfully() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, ctx) -> ctx.step(
    -                        "my-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            executionCount.incrementAndGet();
    -                            return "result";
    -                        },
    -                        StepConfig.builder()
    -                                .semantics(StepSemantics.AT_LEAST_ONCE_PER_RETRY)
    -                                .build()));
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(1, executionCount.get());
    -    }
    -
    -    @Test
    -    void testAtMostOnceCompletesSuccessfully() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, ctx) -> ctx.step(
    -                        "my-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            executionCount.incrementAndGet();
    -                            return "result";
    -                        },
    -                        StepConfig.builder()
    -                                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                                .build()));
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(1, executionCount.get());
    -    }
    -
    -    @Test
    -    void testAtMostOnceNoRetryFailsImmediately() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, ctx) -> ctx.step(
    -                        "my-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            executionCount.incrementAndGet();
    -                            throw new RuntimeException("Always fails");
    -                        },
    -                        StepConfig.builder()
    -                                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                                .build()));
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals(1, executionCount.get());
    -    }
    -
    -    @Test
    -    void testDefaultSemanticsIsAtLeastOnce() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(
    -                String.class,
    -                (input, ctx) -> ctx.step("my-step", String.class, stepCtx -> {
    -                    executionCount.incrementAndGet();
    -                    return "result";
    -                }));
    -
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(1, executionCount.get());
    -    }
    -
    -    @Test
    -    void testAtLeastOnceReExecutesAfterCheckpointLoss() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            return context.step(
    -                    "step",
    -                    String.class,
    -                    stepCtx -> {
    -                        var count = executionCount.incrementAndGet();
    -                        return "Executed " + count + " times";
    -                    },
    -                    StepConfig.builder()
    -                            .semantics(StepSemantics.AT_LEAST_ONCE_PER_RETRY)
    -                            .build());
    -        });
    -
    -        runner.run("test");
    -        assertEquals(1, executionCount.get());
    -
    -        runner.simulateFireAndForgetCheckpointLoss("step");
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(2, executionCount.get());
    -    }
    -
    -    @Test
    -    void testAtLeastOnceReExecutesAfterCheckpointFailure() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            return context.step(
    -                    "step",
    -                    String.class,
    -                    stepCtx -> {
    -                        var count = executionCount.incrementAndGet();
    -                        return "Executed " + count + " times";
    -                    },
    -                    StepConfig.builder()
    -                            .semantics(StepSemantics.AT_LEAST_ONCE_PER_RETRY)
    -                            .build());
    -        });
    -
    -        runner.run("test");
    -        assertEquals(1, executionCount.get());
    -
    -        runner.resetCheckpointToStarted("step");
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(2, executionCount.get());
    -    }
    -
    -    @Test
    -    void testAtMostOnceThrowsExceptionAfterCheckpointFailure() {
    -        var executionCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, context) -> {
    -            return context.step(
    -                    "step",
    -                    String.class,
    -                    stepCtx -> {
    -                        executionCount.incrementAndGet();
    -                        return "Should not re-execute";
    -                    },
    -                    StepConfig.builder()
    -                            .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                            .build());
    -        });
    -
    -        runner.run("test");
    -        assertEquals(1, executionCount.get());
    -
    -        runner.resetCheckpointToStarted("step");
    -
    -        var result = runner.run("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals(1, executionCount.get());
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/WaitForConditionIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/WaitForConditionIntegrationTest.java
    deleted file mode 100644
    index ae4d9bfdd..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/WaitForConditionIntegrationTest.java
    +++ /dev/null
    @@ -1,275 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.concurrent.ThreadLocalRandom;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.RepeatedTest;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy;
    -import software.amazon.lambda.durable.retry.WaitStrategies;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class WaitForConditionIntegrationTest {
    -
    -    // ---- Basic integration tests ----
    -
    -    @Test
    -    void testBasicPollingSucceedsAfterNChecks() {
    -        var checkCount = new AtomicInteger(0);
    -        var targetCount = 3;
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var strategy = WaitStrategies.<Integer>exponentialBackoff(
    -                    60, Duration.ofSeconds(1), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -            var config = WaitForConditionConfig.<Integer>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "poll-counter",
    -                    Integer.class,
    -                    (state, stepCtx) -> {
    -                        if (state == null) {
    -                            state = 0;
    -                        }
    -                        checkCount.incrementAndGet();
    -                        var next = state + 1;
    -                        return next >= targetCount
    -                                ? WaitForConditionResult.stopPolling(next)
    -                                : WaitForConditionResult.continuePolling(next);
    -                    },
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals(targetCount, result.getResult(Integer.class));
    -        assertEquals(targetCount, checkCount.get());
    -    }
    -
    -    @Test
    -    void testCustomWaitStrategy() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            // Custom strategy: fixed 2s delay
    -            WaitForConditionWaitStrategy<String> customStrategy = (state, attempt) -> Duration.ofSeconds(2);
    -
    -            var config = WaitForConditionConfig.<String>builder()
    -                    .waitStrategy(customStrategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "custom-strategy",
    -                    String.class,
    -                    (state, stepCtx) -> {
    -                        if (state == null) {
    -                            state = "pending";
    -                        }
    -                        if ("pending".equals(state)) {
    -                            return WaitForConditionResult.continuePolling("processing");
    -                        }
    -                        return WaitForConditionResult.stopPolling("done");
    -                    },
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("done", result.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMaxAttemptsExceeded() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var strategy = WaitStrategies.<String>exponentialBackoff(
    -                    3, Duration.ofSeconds(1), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -            var config = WaitForConditionConfig.<String>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "max-attempts",
    -                    String.class,
    -                    (state, stepCtx) -> WaitForConditionResult.continuePolling(state),
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -    }
    -
    -    @Test
    -    void testCheckFunctionError() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var strategy = WaitStrategies.<String>exponentialBackoff(
    -                    60, Duration.ofSeconds(1), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -            var config = WaitForConditionConfig.<String>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "error-check",
    -                    String.class,
    -                    (state, stepCtx) -> {
    -                        throw new IllegalStateException("Check function failed");
    -                    },
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        var error = result.getError();
    -        assertTrue(error.isPresent(), "Error should be present");
    -        assertEquals("java.lang.IllegalStateException", error.get().errorType());
    -        assertEquals("Check function failed", error.get().errorMessage());
    -    }
    -
    -    @Test
    -    void testReplayAcrossInvocations() {
    -        var checkCount = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var strategy = WaitStrategies.<Integer>exponentialBackoff(
    -                    60, Duration.ofSeconds(1), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -            var config = WaitForConditionConfig.<Integer>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            var result = ctx.waitForCondition(
    -                    "replay-poll",
    -                    Integer.class,
    -                    (state, stepCtx) -> {
    -                        if (state == null) {
    -                            state = 0;
    -                        }
    -                        checkCount.incrementAndGet();
    -                        var next = state + 1;
    -                        return next >= 2
    -                                ? WaitForConditionResult.stopPolling(next)
    -                                : WaitForConditionResult.continuePolling(next);
    -                    },
    -                    config);
    -
    -            return result.toString();
    -        });
    -
    -        // First run completes the waitForCondition
    -        var result1 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result1.getStatus());
    -        var firstCheckCount = checkCount.get();
    -
    -        // Second run should replay β€” check function should NOT re-execute
    -        var result2 = runner.runUntilComplete("test");
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("2", result2.getResult(String.class));
    -        // Check count should not increase on replay
    -        assertEquals(firstCheckCount, checkCount.get());
    -    }
    -
    -    // ---- isDone=true completes with that state as result ----
    -
    -    @RepeatedTest(50)
    -    void propertyStopPollingCompletesWithState() {
    -        var random = ThreadLocalRandom.current();
    -        // Generate a random target value between 1 and 10
    -        var target = random.nextInt(1, 11);
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var strategy = WaitStrategies.<Integer>fixedDelay(target + 1, Duration.ofSeconds(1));
    -
    -            var config = WaitForConditionConfig.<Integer>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "stop-polling-prop",
    -                    Integer.class,
    -                    (state, stepCtx) -> {
    -                        if (state == null) {
    -                            state = 0;
    -                        }
    -                        var next = state + 1;
    -                        return next >= target
    -                                ? WaitForConditionResult.stopPolling(next)
    -                                : WaitForConditionResult.continuePolling(next);
    -                    },
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        // The result should be the state that caused isDone=true β€” which is target
    -        assertEquals(target, result.getResult(Integer.class));
    -    }
    -
    -    // ---- wait strategy receives correct state and attempt ----
    -
    -    @RepeatedTest(50)
    -    void propertyWaitStrategyReceivesCorrectStateAndAttempt() {
    -        var random = ThreadLocalRandom.current();
    -        var totalChecks = random.nextInt(1, 8); // 1 to 7 checks before stopping
    -
    -        var observedStates = new ArrayList<Integer>();
    -        var observedAttempts = new ArrayList<Integer>();
    -
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            WaitForConditionWaitStrategy<Integer> strategy = (state, attempt) -> {
    -                observedStates.add(state);
    -                observedAttempts.add(attempt);
    -                return Duration.ofSeconds(1);
    -            };
    -
    -            var config = WaitForConditionConfig.<Integer>builder()
    -                    .waitStrategy(strategy)
    -                    .build();
    -
    -            return ctx.waitForCondition(
    -                    "state-attempt-prop",
    -                    Integer.class,
    -                    (state, stepCtx) -> {
    -                        if (state == null) {
    -                            state = 0;
    -                        }
    -                        var next = state + 1;
    -                        return next >= totalChecks
    -                                ? WaitForConditionResult.stopPolling(next)
    -                                : WaitForConditionResult.continuePolling(next);
    -                    },
    -                    config);
    -        });
    -
    -        var result = runner.runUntilComplete("test");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -
    -        // The strategy is only called when isDone=false, so it's called totalChecks-1 times
    -        // (the last check returns isDone=true, so the strategy is not called)
    -        var expectedStrategyCalls = totalChecks - 1;
    -        assertEquals(expectedStrategyCalls, observedStates.size());
    -        assertEquals(expectedStrategyCalls, observedAttempts.size());
    -
    -        for (int i = 0; i < expectedStrategyCalls; i++) {
    -            // Check function returns state + 1, starting from 0
    -            // So after check i, state = i + 1, and strategy receives that value
    -            assertEquals(i + 1, observedStates.get(i), "State at strategy call " + (i + 1));
    -            assertEquals(i + 1, observedAttempts.get(i), "Attempt at strategy call " + (i + 1));
    -        }
    -    }
    -}
    diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/retry/RetryIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/retry/RetryIntegrationTest.java
    deleted file mode 100644
    index 259d8c653..000000000
    --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/retry/RetryIntegrationTest.java
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.testing.LocalDurableTestRunner;
    -
    -class RetryIntegrationTest {
    -
    -    private AtomicInteger callCount;
    -
    -    @BeforeEach
    -    void setUp() {
    -        callCount = new AtomicInteger(0);
    -    }
    -
    -    @Test
    -    void testStepWithDefaultRetryStrategy_ShouldRetryOnFailure() {
    -        var handler = new DurableHandler<String, String>() {
    -            @Override
    -            public String handleRequest(String input, DurableContext context) {
    -                var config = StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build();
    -
    -                return context.step(
    -                        "failing-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            callCount.incrementAndGet();
    -                            throw new RuntimeException("Simulated failure");
    -                        },
    -                        config);
    -            }
    -        };
    -
    -        var runner = LocalDurableTestRunner.create(String.class, handler);
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.PENDING, result.getStatus());
    -        assertEquals(1, callCount.get());
    -    }
    -
    -    @Test
    -    void testStepWithNoRetryStrategy_ShouldFailImmediately() {
    -        var handler = new DurableHandler<String, String>() {
    -            @Override
    -            public String handleRequest(String input, DurableContext context) {
    -                var config = StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                        .build();
    -
    -                return context.step(
    -                        "no-retry-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            callCount.incrementAndGet();
    -                            throw new RuntimeException("Simulated failure");
    -                        },
    -                        config);
    -            }
    -        };
    -
    -        var runner = LocalDurableTestRunner.create(String.class, handler);
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.FAILED, result.getStatus());
    -        assertEquals(1, callCount.get());
    -    }
    -
    -    @Test
    -    void testSuccessfulStepWithRetryConfig_ShouldNotTriggerRetry() {
    -        var handler = new DurableHandler<String, String>() {
    -            @Override
    -            public String handleRequest(String input, DurableContext context) {
    -                var config = StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build();
    -
    -                return context.step(
    -                        "successful-step",
    -                        String.class,
    -                        stepCtx -> {
    -                            callCount.incrementAndGet();
    -                            return "success: " + input;
    -                        },
    -                        config);
    -            }
    -        };
    -
    -        var runner = LocalDurableTestRunner.create(String.class, handler);
    -        var result = runner.run("test-input");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("success: test-input", result.getResult(String.class));
    -        assertEquals(1, callCount.get());
    -    }
    -}
    diff --git a/sdk-testing/pom.xml b/sdk-testing/pom.xml
    deleted file mode 100644
    index d9c68e49f..000000000
    --- a/sdk-testing/pom.xml
    +++ /dev/null
    @@ -1,98 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<project xmlns="http://maven.apache.org/POM/4.0.0"
    -         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -    <modelVersion>4.0.0</modelVersion>
    -
    -    <parent>
    -        <groupId>software.amazon.lambda.durable</groupId>
    -        <artifactId>aws-durable-execution-sdk-java-parent</artifactId>
    -        <version>1.0.1-SNAPSHOT</version>
    -    </parent>
    -
    -    <artifactId>aws-durable-execution-sdk-java-testing</artifactId>
    -    <packaging>jar</packaging>
    -
    -    <name>AWS Lambda Durable Execution SDK Testing Utilities</name>
    -    <description>Testing utilities for AWS Lambda Durable Execution SDK</description>
    -    <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -
    -    <scm>
    -        <connection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</connection>
    -        <developerConnection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</developerConnection>
    -        <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -    </scm>
    -
    -    <dependencies>
    -        <!-- SDK dependency -->
    -        <dependency>
    -            <groupId>software.amazon.lambda.durable</groupId>
    -            <artifactId>aws-durable-execution-sdk-java</artifactId>
    -            <version>${project.version}</version>
    -        </dependency>
    -
    -        <!-- AWS Lambda Java Core -->
    -        <dependency>
    -            <groupId>com.amazonaws</groupId>
    -            <artifactId>aws-lambda-java-core</artifactId>
    -        </dependency>
    -
    -        <!-- AWS SDK v2 Lambda -->
    -        <dependency>
    -            <groupId>software.amazon.awssdk</groupId>
    -            <artifactId>lambda</artifactId>
    -        </dependency>
    -
    -        <dependency>
    -            <groupId>org.slf4j</groupId>
    -            <artifactId>slf4j-simple</artifactId>
    -            <version>${slf4j.version}</version>
    -            <scope>test</scope>
    -        </dependency>
    -
    -        <!-- Testing -->
    -        <dependency>
    -            <groupId>org.junit.jupiter</groupId>
    -            <artifactId>junit-jupiter</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.mockito</groupId>
    -            <artifactId>mockito-core</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -    </dependencies>
    -
    -    <build>
    -        <plugins>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-compiler-plugin</artifactId>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-source-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-sources</id>
    -                        <goals>
    -                            <goal>jar-no-fork</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-javadoc-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-javadocs</id>
    -                        <goals>
    -                            <goal>jar</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -        </plugins>
    -    </build>
    -</project>
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/AsyncExecution.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/AsyncExecution.java
    deleted file mode 100644
    index 57b6c6921..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/AsyncExecution.java
    +++ /dev/null
    @@ -1,206 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.List;
    -import java.util.function.Predicate;
    -import software.amazon.awssdk.core.SdkBytes;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Event;
    -import software.amazon.awssdk.services.lambda.model.EventType;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionHistoryRequest;
    -import software.amazon.awssdk.services.lambda.model.ResourceNotFoundException;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor;
    -
    -/**
    - * Handle for an asynchronously executing durable function. Allows incremental polling and inspection of execution
    - * state.
    - */
    -public class AsyncExecution<O> {
    -    private final String executionArn;
    -    private final LambdaClient lambdaClient;
    -    private final TypeToken<O> outputType;
    -    private final SerDes serDes;
    -    private final Duration pollInterval;
    -    private final Duration timeout;
    -    private final HistoryEventProcessor processor;
    -    private List<Event> currentHistory;
    -    private TestResult<O> currentResult;
    -
    -    public AsyncExecution(
    -            String executionArn,
    -            LambdaClient lambdaClient,
    -            TypeToken<O> outputType,
    -            SerDes serDes,
    -            Duration pollInterval,
    -            Duration timeout) {
    -        this.executionArn = executionArn;
    -        this.lambdaClient = lambdaClient;
    -        this.outputType = outputType;
    -        this.pollInterval = pollInterval;
    -        this.timeout = timeout;
    -        this.serDes = serDes;
    -        this.processor = new HistoryEventProcessor();
    -    }
    -
    -    /**
    -     * Poll execution history until the given condition is met.
    -     *
    -     * @param condition predicate to test on each poll
    -     * @return this execution for chaining
    -     */
    -    public AsyncExecution<O> pollUntil(Predicate<AsyncExecution<O>> condition) {
    -        var startTime = Instant.now();
    -
    -        while (Duration.between(startTime, Instant.now()).compareTo(timeout) < 0) {
    -            refreshHistory();
    -
    -            if (condition.test(this)) {
    -                return this;
    -            }
    -
    -            try {
    -                Thread.sleep(pollInterval.toMillis());
    -            } catch (InterruptedException e) {
    -                Thread.currentThread().interrupt();
    -                throw new RuntimeException("Polling interrupted", e);
    -            }
    -        }
    -
    -        throw new RuntimeException("Condition not met within timeout of " + timeout);
    -    }
    -
    -    /**
    -     * Poll until execution completes and return the final result.
    -     *
    -     * @return test result with execution status and output
    -     */
    -    public TestResult<O> pollUntilComplete() {
    -        pollUntil(AsyncExecution::isComplete);
    -        return currentResult;
    -    }
    -
    -    /** Check if execution has completed (succeeded or failed). */
    -    public boolean isComplete() {
    -        if (currentHistory == null) {
    -            return false;
    -        }
    -        return currentHistory.stream().anyMatch(e -> {
    -            var eventType = e.eventType();
    -            return EventType.EXECUTION_SUCCEEDED.equals(eventType) || EventType.EXECUTION_FAILED.equals(eventType);
    -        });
    -    }
    -
    -    /** Check if an operation with the given name exists. */
    -    public boolean hasOperation(String name) {
    -        if (currentResult == null) {
    -            return false;
    -        }
    -        return currentResult.getOperations().stream().anyMatch(op -> name.equals(op.getName()));
    -    }
    -
    -    /** Check if a callback operation with the given name exists and is started. */
    -    public boolean hasCallback(String name) {
    -        if (currentHistory == null) {
    -            return false;
    -        }
    -        // Look for CallbackStarted event with this name
    -        return currentHistory.stream()
    -                .anyMatch(e -> name.equals(e.name()) && EventType.CALLBACK_STARTED.equals(e.eventType()));
    -    }
    -
    -    /**
    -     * Get the callback ID for a callback operation.
    -     *
    -     * @param operationName name of the callback operation
    -     * @return callback ID
    -     * @throws IllegalStateException if no callback found for operation
    -     */
    -    public String getCallbackId(String operationName) {
    -        if (currentResult == null) {
    -            throw new IllegalStateException("No history available - call pollUntil first");
    -        }
    -
    -        var operation = currentResult.getOperations().stream()
    -                .filter(op -> operationName.equals(op.getName()))
    -                .findFirst()
    -                .orElseThrow(() -> new IllegalStateException("No operation found with name: " + operationName));
    -
    -        var callbackDetails = operation.getCallbackDetails();
    -        if (callbackDetails == null || callbackDetails.callbackId() == null) {
    -            throw new IllegalStateException(
    -                    "Operation '" + operationName + "' is not a callback or has no callback ID");
    -        }
    -
    -        return callbackDetails.callbackId();
    -    }
    -
    -    /** Get details for a specific operation. */
    -    public TestOperation getOperation(String name) {
    -        if (currentResult == null) {
    -            throw new IllegalStateException("No history available - call pollUntil first");
    -        }
    -        return currentResult.getOperation(name);
    -    }
    -
    -    /** Get all operations in the execution. */
    -    public List<TestOperation> getOperations() {
    -        if (currentResult == null) {
    -            throw new IllegalStateException("No history available - call pollUntil first");
    -        }
    -        return currentResult.getOperations();
    -    }
    -
    -    /** Get current execution status. */
    -    public ExecutionStatus getStatus() {
    -        if (currentResult == null) {
    -            return ExecutionStatus.PENDING;
    -        }
    -        return currentResult.getStatus();
    -    }
    -
    -    /** Get the execution ARN. */
    -    public String getExecutionArn() {
    -        return executionArn;
    -    }
    -
    -    /** calls sendDurableExecutionCallbackSuccess with the given callbackId and result */
    -    public void completeCallback(String callbackId, String result) {
    -        lambdaClient.sendDurableExecutionCallbackSuccess(
    -                req -> req.callbackId(callbackId).result(SdkBytes.fromUtf8String(result)));
    -    }
    -
    -    /** calls sendDurableExecutionCallbackFailure with the give callbackId and error */
    -    public void failCallback(String callbackId, ErrorObject error) {
    -        lambdaClient.sendDurableExecutionCallbackFailure(
    -                req -> req.callbackId(callbackId).error(error));
    -    }
    -
    -    /** call sendDurableExecutionCallbackHeartbeat API with the give callbackId */
    -    public void heartbeatCallback(String callbackId) {
    -        lambdaClient.sendDurableExecutionCallbackHeartbeat(req -> req.callbackId(callbackId));
    -    }
    -
    -    private void refreshHistory() {
    -        try {
    -            var request = GetDurableExecutionHistoryRequest.builder()
    -                    .durableExecutionArn(executionArn)
    -                    .includeExecutionData(true)
    -                    .build();
    -            var response = lambdaClient.getDurableExecutionHistory(request);
    -            this.currentHistory = response.events();
    -            this.currentResult = processor.processEvents(currentHistory, outputType, serDes);
    -        } catch (ResourceNotFoundException e) {
    -            // Execution doesn't exist yet - this can happen immediately after async invoke
    -            // Leave currentHistory as null, pollUntil will retry
    -            this.currentHistory = null;
    -            this.currentResult = null;
    -        }
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/CloudDurableTestRunner.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/CloudDurableTestRunner.java
    deleted file mode 100644
    index b06b0dfc4..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/CloudDurableTestRunner.java
    +++ /dev/null
    @@ -1,219 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import java.time.Duration;
    -import java.util.Objects;
    -import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
    -import software.amazon.awssdk.core.SdkBytes;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.InvocationType;
    -import software.amazon.awssdk.services.lambda.model.InvokeRequest;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.cloud.HistoryEventProcessor;
    -import software.amazon.lambda.durable.testing.cloud.HistoryPoller;
    -
    -/**
    - * Test runner for durable Lambda functions deployed to AWS. Invokes a real Lambda function, polls execution history,
    - * and returns structured test results.
    - *
    - * @param <I> the handler input type
    - * @param <O> the handler output type
    - */
    -public class CloudDurableTestRunner<I, O> {
    -    private final String functionArn;
    -    private final TypeToken<I> inputType;
    -    private final TypeToken<O> outputType;
    -    private final LambdaClient lambdaClient;
    -    private final Duration pollInterval;
    -    private final Duration timeout;
    -    private final InvocationType invocationType;
    -    private final SerDes serDes;
    -    // Store last execution result for operation inspection
    -    private TestResult<O> lastResult;
    -
    -    private CloudDurableTestRunner(
    -            String functionArn,
    -            TypeToken<I> inputType,
    -            TypeToken<O> outputType,
    -            LambdaClient lambdaClient,
    -            Duration pollInterval,
    -            Duration timeout,
    -            InvocationType invocationType,
    -            SerDes serDes) {
    -        this.functionArn = functionArn;
    -        this.inputType = inputType;
    -        this.outputType = outputType;
    -        this.lambdaClient =
    -                Objects.requireNonNullElseGet(lambdaClient, CloudDurableTestRunner::createDefaultLambdaClient);
    -        this.pollInterval = pollInterval;
    -        this.timeout = timeout;
    -        this.invocationType = invocationType;
    -        this.serDes = Objects.requireNonNullElseGet(serDes, JacksonSerDes::new);
    -    }
    -
    -    private static LambdaClient createDefaultLambdaClient() {
    -        return LambdaClient.builder()
    -                .credentialsProvider(DefaultCredentialsProvider.builder().build())
    -                .build();
    -    }
    -
    -    /** Creates a runner for the given function ARN with Class-based input/output types. */
    -    public static <I, O> CloudDurableTestRunner<I, O> create(
    -            String functionArn, Class<I> inputType, Class<O> outputType) {
    -        return create(functionArn, TypeToken.get(inputType), TypeToken.get(outputType));
    -    }
    -
    -    /** Creates a runner for the given function ARN with TypeToken-based input/output types. */
    -    public static <I, O> CloudDurableTestRunner<I, O> create(
    -            String functionArn, TypeToken<I> inputType, TypeToken<O> outputType) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn,
    -                inputType,
    -                outputType,
    -                null,
    -                Duration.ofSeconds(2),
    -                Duration.ofSeconds(300),
    -                InvocationType.REQUEST_RESPONSE,
    -                null);
    -    }
    -
    -    /** Creates a runner with a custom {@link LambdaClient} and Class-based input/output types. */
    -    public static <I, O> CloudDurableTestRunner<I, O> create(
    -            String functionArn, Class<I> inputType, Class<O> outputType, LambdaClient lambdaClient) {
    -        return create(functionArn, TypeToken.get(inputType), TypeToken.get(outputType), lambdaClient);
    -    }
    -
    -    /** Creates a runner with a custom {@link LambdaClient} and TypeToken-based input/output types. */
    -    public static <I, O> CloudDurableTestRunner<I, O> create(
    -            String functionArn, TypeToken<I> inputType, TypeToken<O> outputType, LambdaClient lambdaClient) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn,
    -                inputType,
    -                outputType,
    -                lambdaClient,
    -                Duration.ofSeconds(2),
    -                Duration.ofSeconds(300),
    -                InvocationType.REQUEST_RESPONSE,
    -                null);
    -    }
    -
    -    /** Returns a new runner with the specified lambda client. */
    -    public CloudDurableTestRunner<I, O> withLambdaClient(LambdaClient lambdaClient) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
    -    }
    -
    -    /** Returns a new runner with the specified poll interval between history checks. */
    -    public CloudDurableTestRunner<I, O> withPollInterval(Duration interval) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn, inputType, outputType, lambdaClient, interval, timeout, invocationType, serDes);
    -    }
    -
    -    /** Returns a new runner with the specified maximum wait time for execution completion. */
    -    public CloudDurableTestRunner<I, O> withTimeout(Duration timeout) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
    -    }
    -
    -    /** Returns a new runner with the specified Lambda invocation type. */
    -    public CloudDurableTestRunner<I, O> withInvocationType(InvocationType type) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, type, serDes);
    -    }
    -
    -    public CloudDurableTestRunner<I, O> withSerDes(SerDes serDes) {
    -        return new CloudDurableTestRunner<>(
    -                functionArn, inputType, outputType, lambdaClient, pollInterval, timeout, invocationType, serDes);
    -    }
    -
    -    /** Invokes the Lambda function, polls execution history until completion, and returns the result. */
    -    public TestResult<O> runUntilComplete(I input) {
    -        return run(input);
    -    }
    -
    -    /** Invokes the Lambda function, polls execution history until completion, and returns the result. */
    -    public TestResult<O> run(I input) {
    -        try {
    -            // Serialize input
    -            var inputJson = serDes.serialize(input);
    -
    -            // Invoke function
    -            var invokeRequest = InvokeRequest.builder()
    -                    .functionName(functionArn)
    -                    .invocationType(invocationType)
    -                    .payload(SdkBytes.fromUtf8String(inputJson))
    -                    .build();
    -
    -            var response = lambdaClient.invoke(invokeRequest);
    -
    -            // Extract execution ARN from response headers
    -            var executionArn = response.durableExecutionArn();
    -            if (executionArn == null) {
    -                throw new RuntimeException("No durable execution ARN returned - function may not be durable");
    -            }
    -
    -            // Poll history until completion
    -            var poller = new HistoryPoller(lambdaClient);
    -            var events = poller.pollUntilComplete(executionArn, pollInterval, timeout);
    -
    -            // Process events into TestResult
    -            var processor = new HistoryEventProcessor();
    -            var result = processor.processEvents(events, outputType, serDes);
    -            this.lastResult = result;
    -            return result;
    -        } catch (Exception e) {
    -            throw new RuntimeException("Function invocation failed", e);
    -        }
    -    }
    -
    -    /**
    -     * Start an asynchronous execution and return a handle for incremental polling. Use this for callback-based tests
    -     * where you need to interact with the execution while it's running.
    -     *
    -     * @param input the input to the function
    -     * @return execution handle for polling and inspection
    -     */
    -    public AsyncExecution<O> startAsync(I input) {
    -        try {
    -            // Serialize input
    -            var inputJson = serDes.serialize(input);
    -
    -            // Invoke function with EVENT type (async)
    -            var invokeRequest = InvokeRequest.builder()
    -                    .functionName(functionArn)
    -                    .invocationType(InvocationType.EVENT)
    -                    .payload(SdkBytes.fromUtf8String(inputJson))
    -                    .build();
    -
    -            var response = lambdaClient.invoke(invokeRequest);
    -
    -            // Extract execution ARN from response
    -            var executionArn = response.durableExecutionArn();
    -            if (executionArn == null) {
    -                throw new RuntimeException("No durable execution ARN returned - function may not be durable");
    -            }
    -
    -            // Give the execution a moment to initialize before returning
    -            // This prevents immediate polling from failing with "execution does not exist"
    -            Thread.sleep(100);
    -
    -            return new AsyncExecution<>(executionArn, lambdaClient, outputType, serDes, pollInterval, timeout);
    -        } catch (InterruptedException e) {
    -            Thread.currentThread().interrupt();
    -            throw new RuntimeException("Interrupted while starting async execution", e);
    -        } catch (Exception e) {
    -            throw new RuntimeException("Function invocation failed", e);
    -        }
    -    }
    -
    -    /** Returns the {@link TestOperation} for the given name from the last execution result. */
    -    public TestOperation getOperation(String name) {
    -        if (lastResult == null) {
    -            throw new IllegalStateException("No execution has been run yet");
    -        }
    -        return lastResult.getOperation(name);
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/LocalDurableTestRunner.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/LocalDurableTestRunner.java
    deleted file mode 100644
    index c73598cef..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/LocalDurableTestRunner.java
    +++ /dev/null
    @@ -1,357 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.UUID;
    -import java.util.function.BiFunction;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableHandler;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.execution.DurableExecutor;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.local.LocalMemoryExecutionClient;
    -import software.amazon.lambda.durable.testing.local.OperationResult;
    -
    -/**
    - * In-memory test runner for durable Lambda functions. Simulates the Lambda re-invocation loop locally without requiring
    - * AWS infrastructure, enabling fast unit and integration tests.
    - *
    - * @param <I> the handler input type
    - * @param <O> the handler output type
    - */
    -public class LocalDurableTestRunner<I, O> {
    -    private static final int MAX_INVOCATIONS = 100;
    -
    -    private final TypeToken<I> inputType;
    -    private final TypeToken<O> outputType;
    -    private final BiFunction<I, DurableContext, O> handler;
    -    private final LocalMemoryExecutionClient storage;
    -    private final SerDes serDes;
    -    private final DurableConfig customerConfig;
    -
    -    private LocalDurableTestRunner(
    -            TypeToken<I> inputType,
    -            TypeToken<O> outputType,
    -            BiFunction<I, DurableContext, O> handlerFn,
    -            DurableConfig customerConfig) {
    -        this.inputType = inputType;
    -        this.outputType = outputType;
    -        this.handler = handlerFn;
    -        this.storage = new LocalMemoryExecutionClient();
    -
    -        // Create config that uses customer's configuration but overrides the client with in-memory storage
    -        if (customerConfig != null) {
    -            // Use customer's config but override the client with our in-memory implementation
    -            this.customerConfig = DurableConfig.builder()
    -                    .withDurableExecutionClient(storage)
    -                    .withSerDes(customerConfig.getSerDes())
    -                    .withExecutorService(customerConfig.getExecutorService())
    -                    .withPollingStrategy(customerConfig.getPollingStrategy())
    -                    .withCheckpointDelay(customerConfig.getCheckpointDelay())
    -                    .withLoggerConfig(customerConfig.getLoggerConfig())
    -                    .build();
    -        } else {
    -            // Fallback to default config with in-memory client
    -            this.customerConfig =
    -                    DurableConfig.builder().withDurableExecutionClient(storage).build();
    -        }
    -        this.serDes = this.customerConfig.getSerDes();
    -    }
    -
    -    /**
    -     * Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
    -     * DurableConfig.
    -     *
    -     * @param inputType The input type class
    -     * @param handlerFn The handler function
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner with default configuration
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(
    -            Class<I> inputType, BiFunction<I, DurableContext, O> handlerFn) {
    -        return new LocalDurableTestRunner<>(TypeToken.get(inputType), null, handlerFn, null);
    -    }
    -
    -    /**
    -     * Creates a LocalDurableTestRunner with default configuration. Use this method when your handler uses the default
    -     * DurableConfig.
    -     *
    -     * <p>If your handler has custom configuration (custom SerDes, ExecutorService, etc.), use {@link #create(TypeToken,
    -     * DurableHandler)} instead to ensure the test runner uses the same configuration as your handler.
    -     *
    -     * <p>Optionally, you can also use {@link #create(TypeToken, BiFunction, DurableConfig)} to pass in any
    -     * DurableConfig directly.
    -     *
    -     * @param inputType The input type class
    -     * @param handlerFn The handler function
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner with default configuration
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(
    -            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handlerFn) {
    -        return new LocalDurableTestRunner<>(inputType, null, handlerFn, null);
    -    }
    -
    -    /**
    -     * Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
    -     * SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.
    -     *
    -     * @param inputType The input type class
    -     * @param handlerFn The handler function
    -     * @param config The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner configured with the provided settings
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(
    -            Class<I> inputType, BiFunction<I, DurableContext, O> handlerFn, DurableConfig config) {
    -        return new LocalDurableTestRunner<>(TypeToken.get(inputType), null, handlerFn, config);
    -    }
    -    /**
    -     * Creates a LocalDurableTestRunner that uses a custom configuration. This allows the test runner to use custom
    -     * SerDes and other configuration, while overriding the DurableExecutionClient with the in-memory implementation.
    -     *
    -     * <p>Use this method when you need to pass a custom DurableConfig directly, for example when testing with a custom
    -     * SerDes without using a DurableHandler.
    -     *
    -     * <p>Example usage:
    -     *
    -     * <pre>{@code
    -     * // Create a custom DurableConfig with custom SerDes
    -     * var config = DurableConfig.builder()
    -     *     .withSerDes(new MyCustomSerDes())
    -     *     .build();
    -     *
    -     * // Create test runner with custom configuration
    -     * var runner = LocalDurableTestRunner.create(
    -     *     String.class,
    -     *     (input, context) -> context.step("process", String.class, stepCtx -> "result"),
    -     *     config
    -     * );
    -     *
    -     * // Run test with custom configuration
    -     * var result = runner.run("test-input");
    -     * assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -     * }</pre>
    -     *
    -     * @param inputType The input type class
    -     * @param handlerFn The handler function
    -     * @param config The DurableConfig to use (DurableExecutionClient will be overridden with in-memory implementation)
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner configured with the provided settings
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(
    -            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handlerFn, DurableConfig config) {
    -        return new LocalDurableTestRunner<>(inputType, null, handlerFn, config);
    -    }
    -
    -    /**
    -     * Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
    -     * is a convenient method when you have a handler instance and want to test it with the same configuration it uses
    -     * in production.
    -     *
    -     * @param inputType The input type class
    -     * @param handler The DurableHandler instance to test
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner configured with the handler's settings
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(Class<I> inputType, DurableHandler<I, O> handler) {
    -        return new LocalDurableTestRunner<>(
    -                TypeToken.get(inputType), null, handler::handleRequest, handler.getConfiguration());
    -    }
    -
    -    /**
    -     * Overrides the DurableConfig for this test runner. Use this to test with different configurations without creating
    -     * a new runner instance.
    -     */
    -    public LocalDurableTestRunner<I, O> withDurableConfig(DurableConfig config) {
    -        return new LocalDurableTestRunner<>(inputType, outputType, handler, config);
    -    }
    -
    -    /** Overrides the output type for this test runner. */
    -    public LocalDurableTestRunner<I, O> withOutputType(TypeToken<O> outputType) {
    -        return new LocalDurableTestRunner<>(inputType, outputType, handler, customerConfig);
    -    }
    -
    -    /** Overrides the output type for this test runner. */
    -    public LocalDurableTestRunner<I, O> withOutputType(Class<O> outputType) {
    -        return new LocalDurableTestRunner<>(inputType, TypeToken.get(outputType), handler, customerConfig);
    -    }
    -
    -    /**
    -     * Creates a LocalDurableTestRunner from a DurableHandler instance, automatically extracting the configuration. This
    -     * is a convenient method when you have a handler instance and want to test it with the same configuration it uses
    -     * in production.
    -     *
    -     * <p>This method automatically:
    -     *
    -     * <ul>
    -     *   <li>Uses the handler's configuration (SerDes, ExecutorService, etc.)
    -     *   <li>Overrides the DurableExecutionClient with the in-memory implementation for testing
    -     * </ul>
    -     *
    -     * <p>Example usage:
    -     *
    -     * <pre>{@code
    -     * // Create handler instance
    -     * var handler = new MyCustomHandler();
    -     *
    -     * // Create test runner from handler (automatically extracts config)
    -     * var runner = LocalDurableTestRunner.create(String.class, handler);
    -     *
    -     * // Run test with the handler's configuration
    -     * var result = runner.run("test-input");
    -     * assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -     * }</pre>
    -     *
    -     * @param inputType The input type class
    -     * @param handler The DurableHandler instance to test
    -     * @param <I> Input type
    -     * @param <O> Output type
    -     * @return LocalDurableTestRunner configured with the handler's settings
    -     */
    -    public static <I, O> LocalDurableTestRunner<I, O> create(TypeToken<I> inputType, DurableHandler<I, O> handler) {
    -        return new LocalDurableTestRunner<>(inputType, null, handler::handleRequest, handler.getConfiguration());
    -    }
    -
    -    /** Run a single invocation (may return PENDING if waiting/retrying). */
    -    public TestResult<O> run(I input) {
    -        var durableInput = createDurableInput(input);
    -
    -        var output = DurableExecutor.execute(durableInput, mockLambdaContext(), inputType, handler, customerConfig);
    -
    -        return storage.toTestResult(output, outputType, serDes);
    -    }
    -
    -    /**
    -     * Run until completion (SUCCEEDED or FAILED) or pending manual intervention, simulating Lambda re-invocations.
    -     * Operations that don't require manual intervention (like WAIT in STARTED or STEP in PENDING) will be automatically
    -     * advanced.
    -     *
    -     * @param input The input to process
    -     * @return Final test result (SUCCEEDED or FAILED) or PENDING if operations pending manual intervention
    -     */
    -    public TestResult<O> runUntilComplete(I input) {
    -        TestResult<O> result = null;
    -        for (int i = 0; i < MAX_INVOCATIONS; i++) {
    -            result = run(input);
    -
    -            if (result.getStatus() != ExecutionStatus.PENDING || !storage.advanceTime()) {
    -                // break the loop if
    -                // - Return SUCCEEDED or FAILED - we're done
    -                // - Return PENDING and let test manually advance operations if no operations can be auto advanced
    -                break;
    -            }
    -        }
    -        return result;
    -    }
    -
    -    /** Resets a named step operation to STARTED status, simulating a checkpoint failure. */
    -    public void resetCheckpointToStarted(String stepName) {
    -        storage.resetCheckpointToStarted(stepName);
    -    }
    -
    -    /** Removes a named step operation entirely, simulating loss of a fire-and-forget checkpoint. */
    -    public void simulateFireAndForgetCheckpointLoss(String stepName) {
    -        storage.simulateFireAndForgetCheckpointLoss(stepName);
    -    }
    -
    -    /** Returns the {@link TestOperation} for the given operation name, or null if not found. */
    -    public TestOperation getOperation(String name) {
    -        var op = storage.getOperationByName(name);
    -        return op != null ? new TestOperation(op, serDes) : null;
    -    }
    -
    -    /** Get callback ID for a named callback operation. */
    -    public String getCallbackId(String operationName) {
    -        return storage.getCallbackId(operationName);
    -    }
    -
    -    /** Complete a callback with success result. */
    -    public void completeCallback(String callbackId, String result) {
    -        storage.completeCallback(callbackId, OperationResult.succeeded(result));
    -    }
    -
    -    /** Fail a callback with error. */
    -    public void failCallback(String callbackId, ErrorObject error) {
    -        storage.completeCallback(callbackId, OperationResult.failed(error));
    -    }
    -
    -    /** Timeout a callback. */
    -    public void timeoutCallback(String callbackId) {
    -        storage.completeCallback(callbackId, OperationResult.timedout());
    -    }
    -
    -    /** Advances all pending operations, simulating time passing for retries and waits. */
    -    public void advanceTime() {
    -        storage.advanceTime();
    -    }
    -
    -    /** Completes a chained invoke operation with a successful result. */
    -    public void completeChainedInvoke(String name, String result) {
    -        storage.completeChainedInvoke(name, OperationResult.succeeded(result));
    -    }
    -
    -    /** Marks a chained invoke operation as timed out. */
    -    public void timeoutChainedInvoke(String name) {
    -        storage.completeChainedInvoke(name, OperationResult.timedout());
    -    }
    -
    -    /** Fails a chained invoke operation with the given error. */
    -    public void failChainedInvoke(String name, ErrorObject error) {
    -        storage.completeChainedInvoke(name, OperationResult.failed(error));
    -    }
    -
    -    /** Stops a chained invoke operation with the given error. */
    -    public void stopChainedInvoke(String name, ErrorObject error) {
    -        storage.completeChainedInvoke(name, OperationResult.stopped(error));
    -    }
    -
    -    private DurableExecutionInput createDurableInput(I input) {
    -        var executionName = UUID.randomUUID().toString();
    -        var invocationId = UUID.randomUUID().toString();
    -        var executionArn = String.format(
    -                "arn:aws:lambda:us-east-1:123456789012:function:test:$LATEST/durable-execution/%s/%s",
    -                executionName, invocationId);
    -        var inputJson = serDes.serialize(input);
    -        var executionOp = Operation.builder()
    -                .id(invocationId)
    -                .name(executionName)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(
    -                        ExecutionDetails.builder().inputPayload(inputJson).build())
    -                .build();
    -
    -        // Load previous operations and include them in InitialExecutionState
    -        var existingOps =
    -                storage.getExecutionState(executionArn, "test-token", null).operations();
    -        var allOps = new ArrayList<>(List.of(executionOp));
    -        allOps.addAll(existingOps);
    -
    -        return new DurableExecutionInput(
    -                executionArn,
    -                UUID.randomUUID().toString(),
    -                CheckpointUpdatedExecutionState.builder().operations(allOps).build());
    -    }
    -
    -    private Context mockLambdaContext() {
    -        return null; // Minimal - tests don't need real Lambda context
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestOperation.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestOperation.java
    deleted file mode 100644
    index fbce44b01..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestOperation.java
    +++ /dev/null
    @@ -1,131 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.model.CallbackDetails;
    -import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
    -import software.amazon.awssdk.services.lambda.model.ContextDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Event;
    -import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.awssdk.services.lambda.model.WaitDetails;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/** Wrapper for AWS SDK Operation providing convenient access methods. */
    -public class TestOperation {
    -    private final Operation operation;
    -    private final List<Event> events;
    -    private final SerDes serDes;
    -
    -    public TestOperation(Operation operation, SerDes serDes) {
    -        this(operation, List.of(), serDes);
    -    }
    -
    -    public TestOperation(Operation operation, List<Event> events, SerDes serDes) {
    -        this.operation = operation;
    -        this.events = events;
    -        this.serDes = serDes;
    -    }
    -
    -    /** Returns the raw history events associated with this operation. */
    -    public List<Event> getEvents() {
    -        return List.copyOf(events);
    -    }
    -
    -    /** Returns the operation name. */
    -    public String getName() {
    -        return operation.name();
    -    }
    -
    -    /** Returns the current status of this operation (e.g. STARTED, SUCCEEDED, FAILED). */
    -    public OperationStatus getStatus() {
    -        return operation.status();
    -    }
    -
    -    /** Returns the operation type (STEP, WAIT, CALLBACK, etc.). */
    -    public OperationType getType() {
    -        return operation.type();
    -    }
    -
    -    /** Returns the operation's subtype */
    -    public String getSubtype() {
    -        return operation.subType();
    -    }
    -
    -    /** Returns true if the operation has completed (either succeeded or failed). */
    -    public boolean isCompleted() {
    -        return ExecutionManager.isTerminalStatus(operation.status());
    -    }
    -
    -    /** Returns the duration of the operation */
    -    public Duration getDuration() {
    -        return Duration.between(
    -                operation.startTimestamp(),
    -                operation.endTimestamp() != null ? operation.endTimestamp() : Instant.now());
    -    }
    -
    -    /** Returns the step details, or null if this is not a step operation. */
    -    public StepDetails getStepDetails() {
    -        return operation.stepDetails();
    -    }
    -
    -    /** Returns the wait details, or null if this is not a wait operation. */
    -    public WaitDetails getWaitDetails() {
    -        return operation.waitDetails();
    -    }
    -
    -    /** Returns the callback details, or null if this is not a callback operation. */
    -    public CallbackDetails getCallbackDetails() {
    -        return operation.callbackDetails();
    -    }
    -
    -    /** Returns the chained invoke details, or null if this is not a chained invoke operation. */
    -    public ChainedInvokeDetails getChainedInvokeDetails() {
    -        return operation.chainedInvokeDetails();
    -    }
    -
    -    /** Returns the context details, or null if this operation is not a context. */
    -    public ContextDetails getContextDetails() {
    -        return operation.contextDetails();
    -    }
    -
    -    /** Returns the execution details, or null if this operation is not an EXECUTION operation. */
    -    public ExecutionDetails getExecutionDetails() {
    -        return operation.executionDetails();
    -    }
    -
    -    /** Deserializes and returns the step result as the given type. */
    -    public <T> T getStepResult(Class<T> type) {
    -        return getStepResult(TypeToken.get(type));
    -    }
    -
    -    /** Deserializes and returns the step result using a TypeToken for generic types. */
    -    public <T> T getStepResult(TypeToken<T> type) {
    -        var details = operation.stepDetails();
    -        if (details == null || details.result() == null) {
    -            return null;
    -        }
    -        return serDes.deserialize(details.result(), type);
    -    }
    -
    -    /** Returns the step error, or null if the step succeeded or this is not a step operation. */
    -    public ErrorObject getError() {
    -        var details = operation.stepDetails();
    -        return details != null ? details.error() : null;
    -    }
    -
    -    /** Returns the current retry attempt number (0-based), defaulting to 0 if not available. */
    -    public int getAttempt() {
    -        var details = operation.stepDetails();
    -        return details != null && details.attempt() != null ? details.attempt() : 1;
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestResult.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestResult.java
    deleted file mode 100644
    index 7de85beef..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/TestResult.java
    +++ /dev/null
    @@ -1,141 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Objects;
    -import java.util.Optional;
    -import java.util.Set;
    -import java.util.stream.Collectors;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Event;
    -import software.amazon.awssdk.services.lambda.model.EventType;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Represents the result of a durable execution, providing access to the execution status, output, operations, and
    - * history events.
    - *
    - * @param <O> the handler output type
    - */
    -public class TestResult<O> {
    -    private static final Set<OperationStatus> FAIL_OPERATION_STATUS = Set.of(
    -            OperationStatus.FAILED, OperationStatus.CANCELLED, OperationStatus.TIMED_OUT, OperationStatus.STOPPED);
    -    private final ExecutionStatus status;
    -    private final String resultPayload;
    -    private final ErrorObject error;
    -    private final List<TestOperation> operations;
    -    private final Map<String, TestOperation> operationsByName;
    -    private final List<Event> allEvents;
    -    private final SerDes serDes;
    -    private final TypeToken<O> resultType;
    -
    -    public TestResult(
    -            ExecutionStatus status,
    -            String resultPayload,
    -            ErrorObject error,
    -            List<TestOperation> operations,
    -            List<Event> allEvents,
    -            TypeToken<O> resultType,
    -            SerDes serDes) {
    -        this.status = status;
    -        this.resultPayload = resultPayload;
    -        this.error = error;
    -        this.operations = List.copyOf(operations);
    -        this.operationsByName =
    -                operations.stream().collect(Collectors.toMap(TestOperation::getName, op -> op, (a, b) -> b));
    -        this.allEvents = List.copyOf(allEvents);
    -        this.serDes = serDes;
    -        this.resultType = resultType;
    -    }
    -
    -    /** Returns the execution status (SUCCEEDED, FAILED, or PENDING). */
    -    public ExecutionStatus getStatus() {
    -        if (status == ExecutionStatus.SUCCEEDED && error != null) {
    -            throw new IllegalStateException(
    -                    "Execution succeeded while invocation failed with: " + error.errorMessage());
    -        }
    -        return status;
    -    }
    -
    -    /** Deserializes and returns the execution output, throwing if the execution did not succeed. */
    -    public <T> T getResult(Class<T> resultType) {
    -        return getResult(TypeToken.get(resultType));
    -    }
    -
    -    /** Deserializes and returns the execution output using a TypeToken for generic types. */
    -    public <T> T getResult(TypeToken<T> resultType) {
    -        if (status != ExecutionStatus.SUCCEEDED) {
    -            throw new IllegalStateException("Execution did not succeed: " + status);
    -        }
    -        if (resultPayload == null || resultPayload.isEmpty()) {
    -            var lastEvent = allEvents.get(allEvents.size() - 1);
    -            if (lastEvent.eventType() == EventType.EXECUTION_SUCCEEDED) {
    -                return serDes.deserialize(
    -                        lastEvent.executionSucceededDetails().result().payload(), resultType);
    -            }
    -            return null;
    -        }
    -        return serDes.deserialize(resultPayload, resultType);
    -    }
    -
    -    /** Deserializes and returns the execution output if the result type is known. */
    -    public O getResult() {
    -        Objects.requireNonNull(resultType, "ResultType cannot be null");
    -        return getResult(resultType);
    -    }
    -
    -    /** Returns the execution error, if present. */
    -    public Optional<ErrorObject> getError() {
    -        return Optional.ofNullable(error);
    -    }
    -
    -    /** Returns all operations from the execution. */
    -    public List<TestOperation> getOperations() {
    -        return operations;
    -    }
    -
    -    /** Returns the {@link TestOperation} with the given name, or null if not found. */
    -    public TestOperation getOperation(String name) {
    -        return operationsByName.get(name);
    -    }
    -
    -    /** Returns all raw history events from the execution. */
    -    public List<Event> getHistoryEvents() {
    -        return allEvents;
    -    }
    -
    -    /** Returns the raw history events for the given operation name, or an empty list if not found. */
    -    public List<Event> getEventsForOperation(String operationName) {
    -        var testOp = operationsByName.get(operationName);
    -        return testOp != null ? testOp.getEvents() : List.of();
    -    }
    -
    -    /** Returns true if the execution completed successfully. */
    -    public boolean isSucceeded() {
    -        return status == ExecutionStatus.SUCCEEDED;
    -    }
    -
    -    /** Returns true if the execution failed. */
    -    public boolean isFailed() {
    -        return status == ExecutionStatus.FAILED;
    -    }
    -
    -    /** Returns all operations that completed successfully. */
    -    public List<TestOperation> getSucceededOperations() {
    -        return operations.stream()
    -                .filter(op -> op.getStatus() == OperationStatus.SUCCEEDED)
    -                .toList();
    -    }
    -
    -    /** Returns all operations that failed, were cancelled, timed out, or stopped. */
    -    public List<TestOperation> getFailedOperations() {
    -        return operations.stream()
    -                .filter(op -> FAIL_OPERATION_STATUS.contains(op.getStatus()))
    -                .toList();
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.java
    deleted file mode 100644
    index 4a3b8f1b2..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryEventProcessor.java
    +++ /dev/null
    @@ -1,392 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.cloud;
    -
    -import java.util.ArrayList;
    -import java.util.HashMap;
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.model.CallbackDetails;
    -import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
    -import software.amazon.awssdk.services.lambda.model.ContextDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Event;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.awssdk.services.lambda.model.WaitDetails;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.AsyncExecution;
    -import software.amazon.lambda.durable.testing.CloudDurableTestRunner;
    -import software.amazon.lambda.durable.testing.TestOperation;
    -import software.amazon.lambda.durable.testing.TestResult;
    -
    -/**
    - * Processes execution history events from the GetDurableExecutionHistory API into {@link TestResult} objects. Used by
    - * {@link CloudDurableTestRunner} and {@link AsyncExecution} to convert cloud execution history into testable results.
    - */
    -public class HistoryEventProcessor {
    -    /**
    -     * Processes a list of execution history events into a structured {@link TestResult}.
    -     *
    -     * @param events the raw history events from the GetDurableExecutionHistory API
    -     * @param outputType the expected output type for deserialization
    -     * @param <O> the handler output type
    -     * @return a TestResult containing the execution status, output, and operation details
    -     */
    -    public <O> TestResult<O> processEvents(List<Event> events, TypeToken<O> outputType, SerDes serDes) {
    -        var operations = new HashMap<String, Operation>();
    -        var operationEvents = new HashMap<String, List<Event>>();
    -        var status = ExecutionStatus.PENDING;
    -        String result = null;
    -        ErrorObject error = null;
    -
    -        for (var event : events) {
    -            var eventType = event.eventType();
    -            var operationId = event.id();
    -
    -            // Group events by operation
    -            if (operationId != null) {
    -                operationEvents
    -                        .computeIfAbsent(operationId, k -> new ArrayList<>())
    -                        .add(event);
    -            }
    -
    -            switch (eventType) {
    -                case EXECUTION_STARTED -> {
    -                    // Execution started - no action needed, just track the event
    -                }
    -                case INVOCATION_COMPLETED -> {
    -                    var details = event.invocationCompletedDetails();
    -                    if (details != null
    -                            && details.error() != null
    -                            && details.error().payload() != null) {
    -                        // This will get overridden by the execution events but
    -                        // the test cases will still be able to see the error
    -                        // if the execution succeeds.
    -                        status = ExecutionStatus.FAILED;
    -                        error = details.error().payload();
    -                    }
    -                }
    -                case EXECUTION_SUCCEEDED -> {
    -                    status = ExecutionStatus.SUCCEEDED;
    -                    var details = event.executionSucceededDetails();
    -                    if (details != null
    -                            && details.result() != null
    -                            && details.result().payload() != null) {
    -                        result = details.result().payload();
    -                    }
    -                }
    -                case EXECUTION_FAILED -> {
    -                    status = ExecutionStatus.FAILED;
    -                    var details = event.executionFailedDetails();
    -                    if (details != null
    -                            && details.error() != null
    -                            && details.error().payload() != null) {
    -                        error = details.error().payload();
    -                    }
    -                }
    -                case EXECUTION_TIMED_OUT -> {
    -                    status = ExecutionStatus.FAILED;
    -                    var details = event.executionTimedOutDetails();
    -                    if (details != null
    -                            && details.error() != null
    -                            && details.error().payload() != null) {
    -                        error = details.error().payload();
    -                    }
    -                }
    -                case EXECUTION_STOPPED -> {
    -                    status = ExecutionStatus.FAILED;
    -
    -                    var details = event.executionStoppedDetails();
    -                    if (details != null
    -                            && details.error() != null
    -                            && details.error().payload() != null) {
    -                        error = details.error().payload();
    -                    }
    -                }
    -                case STEP_STARTED -> {
    -                    if (operationId != null) {
    -                        operations.putIfAbsent(
    -                                operationId,
    -                                createStepOperation(operationId, event.name(), null, OperationStatus.STARTED, 1));
    -                    }
    -                }
    -                case STEP_SUCCEEDED -> {
    -                    if (operationId != null) {
    -                        var details = event.stepSucceededDetails();
    -                        var stepResult = details != null && details.result() != null
    -                                ? details.result().payload()
    -                                : null;
    -                        var attempt = details != null && details.retryDetails() != null
    -                                ? details.retryDetails().currentAttempt()
    -                                : 1;
    -                        operations.put(
    -                                operationId,
    -                                createStepOperation(
    -                                        operationId, event.name(), stepResult, OperationStatus.SUCCEEDED, attempt));
    -                    }
    -                }
    -                case STEP_FAILED -> {
    -                    if (operationId != null) {
    -                        var details = event.stepFailedDetails();
    -                        var attempt = details != null && details.retryDetails() != null
    -                                ? details.retryDetails().currentAttempt()
    -                                : 1;
    -                        operations.put(
    -                                operationId,
    -                                createStepOperation(operationId, event.name(), null, OperationStatus.FAILED, attempt));
    -                    }
    -                }
    -
    -                case WAIT_STARTED -> {
    -                    if (operationId != null) {
    -                        operations.putIfAbsent(
    -                                operationId,
    -                                createWaitOperation(operationId, event.name(), OperationStatus.STARTED, event));
    -                    }
    -                }
    -                case WAIT_SUCCEEDED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createWaitOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
    -                    }
    -                }
    -                case WAIT_CANCELLED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createWaitOperation(operationId, event.name(), OperationStatus.CANCELLED, event));
    -                    }
    -                }
    -
    -                case CALLBACK_STARTED -> {
    -                    if (operationId != null) {
    -                        operations.putIfAbsent(
    -                                operationId,
    -                                createCallbackOperation(operationId, event.name(), OperationStatus.STARTED, event));
    -                    }
    -                }
    -                case CALLBACK_SUCCEEDED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createCallbackOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
    -                    }
    -                }
    -                case CALLBACK_FAILED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createCallbackOperation(operationId, event.name(), OperationStatus.FAILED, event));
    -                    }
    -                }
    -                case CALLBACK_TIMED_OUT -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createCallbackOperation(operationId, event.name(), OperationStatus.TIMED_OUT, event));
    -                    }
    -                }
    -
    -                case UNKNOWN_TO_SDK_VERSION -> {
    -                    // Unknown event type - log and ignore gracefully
    -                }
    -
    -                case CONTEXT_STARTED -> {
    -                    if (operationId != null) {
    -                        operations.putIfAbsent(
    -                                operationId,
    -                                createContextOperation(operationId, event.name(), OperationStatus.STARTED, event));
    -                    }
    -                }
    -                case CONTEXT_SUCCEEDED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createContextOperation(operationId, event.name(), OperationStatus.SUCCEEDED, event));
    -                    }
    -                }
    -                case CONTEXT_FAILED -> {
    -                    if (operationId != null) {
    -                        operations.put(
    -                                operationId,
    -                                createContextOperation(operationId, event.name(), OperationStatus.FAILED, event));
    -                    }
    -                }
    -
    -                case CHAINED_INVOKE_STARTED,
    -                        CHAINED_INVOKE_SUCCEEDED,
    -                        CHAINED_INVOKE_FAILED,
    -                        CHAINED_INVOKE_TIMED_OUT,
    -                        CHAINED_INVOKE_STOPPED -> {
    -                    if (operationId != null) {
    -                        operations.putIfAbsent(operationId, createInvokeOperation(operationId, event));
    -                    }
    -                }
    -
    -                default -> throw new UnsupportedOperationException("Unknown operation: " + eventType);
    -            }
    -        }
    -
    -        // Build TestOperations with events
    -        var testOperations = new ArrayList<TestOperation>();
    -        for (var entry : operations.entrySet()) {
    -            var opEvents = operationEvents.getOrDefault(entry.getKey(), List.of());
    -            testOperations.add(new TestOperation(entry.getValue(), opEvents, serDes));
    -        }
    -
    -        return new TestResult<>(status, result, error, testOperations, events, outputType, serDes);
    -    }
    -
    -    private Operation createStepOperation(
    -            String id, String name, String stepResult, OperationStatus status, Integer attempt) {
    -        var stepDetails = StepDetails.builder()
    -                .result(stepResult)
    -                .attempt(attempt != null ? attempt : 1)
    -                .build();
    -
    -        return Operation.builder()
    -                .id(id)
    -                .name(name)
    -                .status(status)
    -                .type(OperationType.STEP)
    -                .stepDetails(stepDetails)
    -                .build();
    -    }
    -
    -    private Operation createWaitOperation(String id, String name, OperationStatus status, Event event) {
    -        var builder = WaitDetails.builder();
    -        if (event.waitStartedDetails() != null) {
    -            builder.scheduledEndTimestamp(event.waitStartedDetails().scheduledEndTimestamp());
    -        }
    -
    -        return Operation.builder()
    -                .id(id)
    -                .name(name)
    -                .status(status)
    -                .type(OperationType.WAIT)
    -                .waitDetails(builder.build())
    -                .build();
    -    }
    -
    -    private Operation createCallbackOperation(String id, String name, OperationStatus status, Event event) {
    -        var builder = CallbackDetails.builder();
    -
    -        // Extract callback ID and details from event
    -        if (event.callbackStartedDetails() != null) {
    -            var details = event.callbackStartedDetails();
    -            if (details.callbackId() != null) {
    -                builder.callbackId(details.callbackId());
    -            }
    -        } else if (event.callbackSucceededDetails() != null) {
    -            var details = event.callbackSucceededDetails();
    -            // CallbackSucceededDetails doesn't have callbackId, need to get it from started event
    -            if (details.result() != null && details.result().payload() != null) {
    -                builder.result(details.result().payload());
    -            }
    -        } else if (event.callbackFailedDetails() != null) {
    -            var details = event.callbackFailedDetails();
    -            // CallbackFailedDetails doesn't have callbackId, need to get it from started event
    -            if (details.error() != null && details.error().payload() != null) {
    -                builder.error(ErrorObject.builder()
    -                        .errorType(details.error().payload().errorType())
    -                        .errorMessage(details.error().payload().errorMessage())
    -                        .build());
    -            }
    -        }
    -
    -        return Operation.builder()
    -                .id(id)
    -                .name(name)
    -                .status(status)
    -                .type(OperationType.CALLBACK)
    -                .callbackDetails(builder.build())
    -                .build();
    -    }
    -
    -    private Operation createInvokeOperation(String id, Event event) {
    -        var builder = ChainedInvokeDetails.builder();
    -
    -        OperationStatus status =
    -                switch (event.eventType()) {
    -                    case CHAINED_INVOKE_STARTED -> OperationStatus.STARTED;
    -                    case CHAINED_INVOKE_SUCCEEDED -> {
    -                        var details = event.callbackSucceededDetails();
    -                        if (details != null
    -                                && details.result() != null
    -                                && details.result().payload() != null) {
    -                            builder.result(details.result().payload());
    -                        }
    -                        yield OperationStatus.SUCCEEDED;
    -                    }
    -                    case CHAINED_INVOKE_FAILED -> {
    -                        var details = event.callbackFailedDetails();
    -                        if (details != null
    -                                && details.error() != null
    -                                && details.error().payload() != null) {
    -                            builder.error(details.error().payload());
    -                        }
    -                        yield OperationStatus.FAILED;
    -                    }
    -                    case CHAINED_INVOKE_STOPPED -> {
    -                        var details = event.chainedInvokeStoppedDetails();
    -                        if (details != null
    -                                && details.error() != null
    -                                && details.error().payload() != null) {
    -                            builder.error(details.error().payload());
    -                        }
    -
    -                        yield OperationStatus.STOPPED;
    -                    }
    -                    case CHAINED_INVOKE_TIMED_OUT -> {
    -                        var details = event.chainedInvokeTimedOutDetails();
    -                        if (details != null
    -                                && details.error() != null
    -                                && details.error().payload() != null) {
    -                            builder.error(details.error().payload());
    -                        }
    -                        yield OperationStatus.TIMED_OUT;
    -                    }
    -                    default ->
    -                        throw new UnsupportedOperationException(
    -                                "Unknown chained invocation operation: " + event.eventType());
    -                };
    -
    -        return Operation.builder()
    -                .id(id)
    -                .name(event.name())
    -                .status(status)
    -                .type(OperationType.CHAINED_INVOKE)
    -                .chainedInvokeDetails(builder.build())
    -                .build();
    -    }
    -
    -    private Operation createContextOperation(String id, String name, OperationStatus status, Event event) {
    -        var builder = ContextDetails.builder();
    -
    -        if (event.contextSucceededDetails() != null) {
    -            var details = event.contextSucceededDetails();
    -            if (details.result() != null && details.result().payload() != null) {
    -                builder.result(details.result().payload());
    -            }
    -        } else if (event.contextFailedDetails() != null) {
    -            var details = event.contextFailedDetails();
    -            if (details.error() != null && details.error().payload() != null) {
    -                builder.error(details.error().payload());
    -            }
    -        }
    -
    -        return Operation.builder()
    -                .id(id)
    -                .name(name)
    -                .status(status)
    -                .type(OperationType.CONTEXT)
    -                .subType(event.subType())
    -                .contextDetails(builder.build())
    -                .build();
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryPoller.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryPoller.java
    deleted file mode 100644
    index d08d7403c..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/cloud/HistoryPoller.java
    +++ /dev/null
    @@ -1,79 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.cloud;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.ArrayList;
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.Event;
    -import software.amazon.awssdk.services.lambda.model.EventType;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionHistoryRequest;
    -import software.amazon.lambda.durable.testing.CloudDurableTestRunner;
    -
    -/**
    - * Polls the GetDurableExecutionHistory API until execution completes or a timeout is reached. Used by
    - * {@link CloudDurableTestRunner} for synchronous test execution.
    - */
    -public class HistoryPoller {
    -    private final LambdaClient lambdaClient;
    -
    -    /** Creates a poller backed by the given Lambda client. */
    -    public HistoryPoller(LambdaClient lambdaClient) {
    -        this.lambdaClient = lambdaClient;
    -    }
    -
    -    /**
    -     * Polls execution history until a terminal event is found or the timeout is exceeded.
    -     *
    -     * @param executionArn the durable execution ARN to poll
    -     * @param pollInterval the interval between poll requests
    -     * @param timeout the maximum time to wait for completion
    -     * @return all history events collected during polling
    -     * @throws RuntimeException if the timeout is exceeded or polling is interrupted
    -     */
    -    public List<Event> pollUntilComplete(String executionArn, Duration pollInterval, Duration timeout) {
    -        var allEvents = new ArrayList<Event>();
    -        var startTime = Instant.now();
    -        String marker = null;
    -
    -        while (Duration.between(startTime, Instant.now()).compareTo(timeout) < 0) {
    -            var request = GetDurableExecutionHistoryRequest.builder()
    -                    .durableExecutionArn(executionArn)
    -                    .includeExecutionData(true)
    -                    .marker(marker)
    -                    .build();
    -
    -            var response = lambdaClient.getDurableExecutionHistory(request);
    -            var events = response.events();
    -
    -            allEvents.addAll(events);
    -
    -            if (isExecutionComplete(events)) {
    -                return allEvents;
    -            }
    -
    -            marker = response.nextMarker();
    -            if (marker == null && events.isEmpty()) {
    -                // No more events and no new events - wait and try again
    -            }
    -
    -            try {
    -                Thread.sleep(pollInterval.toMillis());
    -            } catch (InterruptedException e) {
    -                Thread.currentThread().interrupt();
    -                throw new RuntimeException("Polling interrupted", e);
    -            }
    -        }
    -
    -        throw new RuntimeException("Execution timeout exceeded");
    -    }
    -
    -    private boolean isExecutionComplete(List<Event> events) {
    -        return events.stream().anyMatch(event -> {
    -            var eventType = event.eventType();
    -            return EventType.EXECUTION_SUCCEEDED.equals(eventType) || EventType.EXECUTION_FAILED.equals(eventType);
    -        });
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/EventProcessor.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/EventProcessor.java
    deleted file mode 100644
    index fb9244161..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/EventProcessor.java
    +++ /dev/null
    @@ -1,179 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.local;
    -
    -import static software.amazon.awssdk.services.lambda.model.EventType.*;
    -
    -import java.time.Instant;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import software.amazon.awssdk.services.lambda.model.*;
    -
    -/** Generates Event objects from OperationUpdate for local testing. */
    -class EventProcessor {
    -    private final AtomicInteger eventId = new AtomicInteger(1);
    -
    -    Event processUpdate(OperationUpdate update, Operation operation) {
    -        var builder = Event.builder()
    -                .eventId(eventId.getAndIncrement())
    -                .eventTimestamp(Instant.now())
    -                .id(update.id())
    -                .name(update.name());
    -
    -        return switch (update.type()) {
    -            case STEP -> buildStepEvent(builder, update, operation);
    -            case WAIT -> buildWaitEvent(builder, update, operation);
    -            case CHAINED_INVOKE -> buildInvokeEvent(builder, update, operation);
    -            case EXECUTION -> buildExecutionEvent(builder, update);
    -            case CALLBACK -> buildCallbackEvent(builder, update);
    -            case CONTEXT -> buildContextEvent(builder, update);
    -            default -> throw new IllegalArgumentException("Unsupported operation type: " + update.type());
    -        };
    -    }
    -
    -    private Event buildStepEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
    -        return switch (update.action()) {
    -            case START ->
    -                builder.eventType(STEP_STARTED)
    -                        .stepStartedDetails(StepStartedDetails.builder().build())
    -                        .build();
    -            case SUCCEED ->
    -                builder.eventType(STEP_SUCCEEDED)
    -                        .stepSucceededDetails(StepSucceededDetails.builder()
    -                                .result(EventResult.builder()
    -                                        .payload(update.payload())
    -                                        .build())
    -                                .retryDetails(buildRetryDetails(operation))
    -                                .build())
    -                        .build();
    -            case FAIL ->
    -                builder.eventType(STEP_FAILED)
    -                        .stepFailedDetails(StepFailedDetails.builder()
    -                                .error(EventError.builder()
    -                                        .payload(update.error())
    -                                        .build())
    -                                .retryDetails(buildRetryDetails(operation))
    -                                .build())
    -                        .build();
    -            case RETRY ->
    -                builder.eventType(STEP_STARTED)
    -                        .stepStartedDetails(StepStartedDetails.builder().build())
    -                        .build();
    -            default -> throw new IllegalArgumentException("Unsupported step action: " + update.action());
    -        };
    -    }
    -
    -    @SuppressWarnings("unused") // operation param kept for API consistency
    -    private Event buildWaitEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
    -        return switch (update.action()) {
    -            case START -> {
    -                var waitSeconds =
    -                        update.waitOptions() != null ? update.waitOptions().waitSeconds() : 0;
    -                yield builder.eventType(WAIT_STARTED)
    -                        .waitStartedDetails(WaitStartedDetails.builder()
    -                                .duration(waitSeconds)
    -                                .scheduledEndTimestamp(Instant.now().plusSeconds(waitSeconds))
    -                                .build())
    -                        .build();
    -            }
    -            case SUCCEED ->
    -                builder.eventType(WAIT_SUCCEEDED)
    -                        .waitSucceededDetails(WaitSucceededDetails.builder().build())
    -                        .build();
    -            case CANCEL ->
    -                builder.eventType(WAIT_CANCELLED)
    -                        .waitCancelledDetails(WaitCancelledDetails.builder().build())
    -                        .build();
    -            default -> throw new IllegalArgumentException("Unsupported wait action: " + update.action());
    -        };
    -    }
    -
    -    @SuppressWarnings("unused") // operation param kept for API consistency
    -    private Event buildInvokeEvent(Event.Builder builder, OperationUpdate update, Operation operation) {
    -        return switch (update.action()) {
    -            case START ->
    -                builder.eventType(EventType.CHAINED_INVOKE_STARTED)
    -                        .chainedInvokeStartedDetails(ChainedInvokeStartedDetails.builder()
    -                                .functionName(update.chainedInvokeOptions().functionName())
    -                                .input(EventInput.builder()
    -                                        .payload(update.payload())
    -                                        .build())
    -                                .build())
    -                        .build();
    -            case SUCCEED ->
    -                builder.eventType(EventType.CHAINED_INVOKE_SUCCEEDED)
    -                        .chainedInvokeSucceededDetails(ChainedInvokeSucceededDetails.builder()
    -                                .result(EventResult.builder()
    -                                        .payload(
    -                                                operation.chainedInvokeDetails().result())
    -                                        .build())
    -                                .build())
    -                        .build();
    -            case FAIL ->
    -                builder.eventType(EventType.CHAINED_INVOKE_FAILED)
    -                        .chainedInvokeFailedDetails(ChainedInvokeFailedDetails.builder()
    -                                .error(EventError.builder()
    -                                        .payload(
    -                                                operation.chainedInvokeDetails().error())
    -                                        .build())
    -                                .build())
    -                        .build();
    -
    -            default -> throw new IllegalArgumentException("Unsupported invoke action: " + update.action());
    -        };
    -    }
    -
    -    private Event buildExecutionEvent(Event.Builder builder, OperationUpdate update) {
    -        return switch (update.action()) {
    -            case START ->
    -                builder.eventType(EXECUTION_STARTED)
    -                        .executionStartedDetails(
    -                                ExecutionStartedDetails.builder().build())
    -                        .build();
    -            case SUCCEED ->
    -                builder.eventType(EXECUTION_SUCCEEDED)
    -                        .executionSucceededDetails(ExecutionSucceededDetails.builder()
    -                                .result(EventResult.builder()
    -                                        .payload(update.payload())
    -                                        .build())
    -                                .build())
    -                        .build();
    -            case FAIL ->
    -                builder.eventType(EXECUTION_FAILED)
    -                        .executionFailedDetails(ExecutionFailedDetails.builder()
    -                                .error(EventError.builder()
    -                                        .payload(update.error())
    -                                        .build())
    -                                .build())
    -                        .build();
    -            default -> throw new IllegalArgumentException("Unsupported execution action: " + update.action());
    -        };
    -    }
    -
    -    private Event buildCallbackEvent(Event.Builder builder, OperationUpdate update) {
    -        return switch (update.action()) {
    -            case START -> builder.eventType(CALLBACK_STARTED).build();
    -            case SUCCEED -> builder.eventType(CALLBACK_SUCCEEDED).build();
    -            case FAIL -> builder.eventType(CALLBACK_FAILED).build();
    -            default -> throw new IllegalArgumentException("Unsupported callback action: " + update.action());
    -        };
    -    }
    -
    -    private Event buildContextEvent(Event.Builder builder, OperationUpdate update) {
    -        return switch (update.action()) {
    -            case START -> builder.eventType(EventType.CONTEXT_STARTED).build();
    -            case SUCCEED -> builder.eventType(EventType.CONTEXT_SUCCEEDED).build();
    -            case FAIL -> builder.eventType(EventType.CONTEXT_FAILED).build();
    -            default -> throw new IllegalArgumentException("Unsupported context action: " + update.action());
    -        };
    -    }
    -
    -    private RetryDetails buildRetryDetails(Operation operation) {
    -        if (operation == null || operation.stepDetails() == null) {
    -            return RetryDetails.builder().currentAttempt(1).build();
    -        }
    -        var attempt = operation.stepDetails().attempt();
    -        return RetryDetails.builder()
    -                .currentAttempt(attempt != null ? attempt : 1)
    -                .build();
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.java
    deleted file mode 100644
    index 9c691de02..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClient.java
    +++ /dev/null
    @@ -1,336 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.local;
    -
    -import java.time.Instant;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.UUID;
    -import java.util.concurrent.ConcurrentHashMap;
    -import java.util.concurrent.CopyOnWriteArrayList;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import software.amazon.awssdk.services.lambda.model.*;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.model.DurableExecutionOutput;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.testing.TestOperation;
    -import software.amazon.lambda.durable.testing.TestResult;
    -
    -/**
    - * In-memory implementation of {@link DurableExecutionClient} for local testing. Stores operations and checkpoint state
    - * in memory, simulating the durable execution backend without AWS infrastructure.
    - */
    -public class LocalMemoryExecutionClient implements DurableExecutionClient {
    -    private final Map<String, Operation> operations = new ConcurrentHashMap<>();
    -    private final List<Event> allEvents = new CopyOnWriteArrayList<>();
    -    private final EventProcessor eventProcessor = new EventProcessor();
    -    private final List<OperationUpdate> operationUpdates = new CopyOnWriteArrayList<>();
    -
    -    @Override
    -    public CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates) {
    -        operationUpdates.addAll(updates);
    -        updates.forEach(this::applyUpdate);
    -
    -        var newToken = UUID.randomUUID().toString();
    -
    -        return CheckpointDurableExecutionResponse.builder()
    -                .checkpointToken(newToken)
    -                .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                        .operations(operations.values())
    -                        .build())
    -                .build();
    -    }
    -
    -    @Override
    -    public GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker) {
    -        return GetDurableExecutionStateResponse.builder()
    -                .operations(operations.values())
    -                .build();
    -    }
    -
    -    /** Get all operation updates that have been sent to this client. Useful for testing and verification. */
    -    public List<OperationUpdate> getOperationUpdates() {
    -        return List.copyOf(operationUpdates);
    -    }
    -
    -    /** Get all events in order. */
    -    public List<Event> getAllEvents() {
    -        return List.copyOf(allEvents);
    -    }
    -
    -    /** Get events for a specific operation. */
    -    public List<Event> getEventsForOperation(String operationId) {
    -        return allEvents.stream().filter(e -> operationId.equals(e.id())).toList();
    -    }
    -
    -    /**
    -     * Advance all operations (simulates time passing for retries/waits).
    -     *
    -     * @return true if any operations were advanced, false otherwise
    -     */
    -    public boolean advanceTime() {
    -        var replaced = new AtomicBoolean(false);
    -        operations.replaceAll((key, op) -> {
    -            // advance pending retries
    -            if (op.status() == OperationStatus.PENDING) {
    -                replaced.set(true);
    -                return op.toBuilder().status(OperationStatus.READY).build();
    -            }
    -            // advance waits
    -            if (op.status() == OperationStatus.STARTED && op.type() == OperationType.WAIT) {
    -                var succeededOp =
    -                        op.toBuilder().status(OperationStatus.SUCCEEDED).build();
    -                // Generate WaitSucceeded event
    -                var update = OperationUpdate.builder()
    -                        .id(op.id())
    -                        .name(op.name())
    -                        .type(OperationType.WAIT)
    -                        .action(OperationAction.SUCCEED)
    -                        .build();
    -                var event = eventProcessor.processUpdate(update, succeededOp);
    -                allEvents.add(event);
    -                replaced.set(true);
    -                return succeededOp;
    -            }
    -            return op;
    -        });
    -        return replaced.get();
    -    }
    -
    -    /** Completes a chained invoke operation with the given result, simulating a child Lambda response. */
    -    public void completeChainedInvoke(String name, OperationResult result) {
    -        var op = getOperationByName(name);
    -        if (op == null) {
    -            throw new IllegalStateException("Operation not found: " + name);
    -        }
    -        if (op.type() == OperationType.CHAINED_INVOKE
    -                && op.status() == OperationStatus.STARTED
    -                && op.name().equals(name)) {
    -            var newOp = op.toBuilder()
    -                    .status(result.operationStatus())
    -                    .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                            .result(result.result())
    -                            .error(result.error())
    -                            .build())
    -                    .build();
    -            var update = OperationUpdate.builder()
    -                    .id(op.id())
    -                    .name(op.name())
    -                    .type(OperationType.CHAINED_INVOKE)
    -                    .action(
    -                            result.operationStatus() == OperationStatus.SUCCEEDED
    -                                    ? OperationAction.SUCCEED
    -                                    : OperationAction.FAIL)
    -                    .build();
    -            var event = eventProcessor.processUpdate(update, newOp);
    -            allEvents.add(event);
    -            operations.put(compositeKey(op.parentId(), op.id()), newOp);
    -        }
    -    }
    -
    -    /** Returns the operation with the given name, or null if not found. */
    -    public Operation getOperationByName(String name) {
    -        return operations.values().stream()
    -                .filter(op -> name.equals(op.name()))
    -                .findFirst()
    -                .orElse(null);
    -    }
    -
    -    /** Returns all operations currently stored. */
    -    public List<Operation> getAllOperations() {
    -        return operations.values().stream().toList();
    -    }
    -
    -    /** Clears all operations and events, resetting the client to its initial state. */
    -    public void reset() {
    -        operations.clear();
    -        allEvents.clear();
    -    }
    -
    -    /** Build TestResult from current state. */
    -    public <O> TestResult<O> toTestResult(DurableExecutionOutput output, TypeToken<O> resultType, SerDes serDes) {
    -        var testOperations = operations.values().stream()
    -                .filter(op -> op.type() != OperationType.EXECUTION)
    -                .map(op -> new TestOperation(op, getEventsForOperation(op.id()), serDes))
    -                .toList();
    -        return new TestResult<>(
    -                output.status(),
    -                output.result(),
    -                output.error(),
    -                testOperations,
    -                new ArrayList<>(allEvents),
    -                resultType,
    -                serDes);
    -    }
    -
    -    /** Simulate checkpoint failure by forcing an operation into STARTED state */
    -    public void resetCheckpointToStarted(String stepName) {
    -        var op = getOperationByName(stepName);
    -        if (op == null) {
    -            throw new IllegalStateException("Operation not found: " + stepName);
    -        }
    -        var startedOp = op.toBuilder().status(OperationStatus.STARTED).build();
    -        operations.put(compositeKey(op.parentId(), op.id()), startedOp);
    -    }
    -
    -    /** Simulate fire-and-forget checkpoint loss by removing the operation entirely */
    -    public void simulateFireAndForgetCheckpointLoss(String stepName) {
    -        var op = getOperationByName(stepName);
    -        if (op == null) {
    -            throw new IllegalStateException("Operation not found: " + stepName);
    -        }
    -        operations.remove(compositeKey(op.parentId(), op.id()));
    -    }
    -
    -    private void applyUpdate(OperationUpdate update) {
    -        var operation = toOperation(update);
    -        var key = compositeKey(update.parentId(), update.id());
    -        operations.put(key, operation);
    -
    -        var event = eventProcessor.processUpdate(update, operation);
    -        allEvents.add(event);
    -    }
    -
    -    private static String compositeKey(String parentId, String operationId) {
    -        return (parentId != null ? parentId : "") + ":" + operationId;
    -    }
    -
    -    private Operation toOperation(OperationUpdate update) {
    -        var builder = Operation.builder()
    -                .id(update.id())
    -                .name(update.name())
    -                .type(update.type())
    -                .subType(update.subType())
    -                .parentId(update.parentId())
    -                .status(deriveStatus(update.action()));
    -
    -        switch (update.type()) {
    -            case WAIT -> builder.waitDetails(buildWaitDetails(update));
    -            case STEP -> builder.stepDetails(buildStepDetails(update));
    -            case CALLBACK -> builder.callbackDetails(buildCallbackDetails(update));
    -            case EXECUTION -> {} // No details needed for EXECUTION operations
    -            case CHAINED_INVOKE -> builder.chainedInvokeDetails(buildChainedInvokeDetails(update));
    -            case CONTEXT -> builder.contextDetails(buildContextDetails(update));
    -            case UNKNOWN_TO_SDK_VERSION ->
    -                throw new UnsupportedOperationException("UNKNOWN_TO_SDK_VERSION not supported");
    -        }
    -
    -        return builder.build();
    -    }
    -
    -    private ChainedInvokeDetails buildChainedInvokeDetails(OperationUpdate update) {
    -        if (update.chainedInvokeOptions() == null) {
    -            return null;
    -        }
    -        return ChainedInvokeDetails.builder()
    -                .result(update.payload())
    -                .error(update.error())
    -                .build();
    -    }
    -
    -    private ContextDetails buildContextDetails(OperationUpdate update) {
    -        var detailsBuilder = ContextDetails.builder().result(update.payload()).error(update.error());
    -
    -        if (update.contextOptions() != null
    -                && Boolean.TRUE.equals(update.contextOptions().replayChildren())) {
    -            detailsBuilder.replayChildren(true);
    -        }
    -
    -        return detailsBuilder.build();
    -    }
    -
    -    private WaitDetails buildWaitDetails(OperationUpdate update) {
    -        if (update.waitOptions() == null) return null;
    -
    -        var scheduledEnd = Instant.now().plusSeconds(update.waitOptions().waitSeconds());
    -        return WaitDetails.builder().scheduledEndTimestamp(scheduledEnd).build();
    -    }
    -
    -    private StepDetails buildStepDetails(OperationUpdate update) {
    -        var key = compositeKey(update.parentId(), update.id());
    -        var existingOp = operations.get(key);
    -        var existing = existingOp != null ? existingOp.stepDetails() : null;
    -
    -        var detailsBuilder = existing != null ? existing.toBuilder() : StepDetails.builder();
    -        var attempt = existing != null && existing.attempt() != null ? existing.attempt() + 1 : 1;
    -
    -        if (update.action() == OperationAction.FAIL) {
    -            detailsBuilder.attempt(attempt).error(update.error());
    -        }
    -
    -        if (update.action() == OperationAction.RETRY) {
    -            detailsBuilder
    -                    .attempt(attempt)
    -                    .error(update.error())
    -                    .nextAttemptTimestamp(
    -                            Instant.now().plusSeconds(update.stepOptions().nextAttemptDelaySeconds()));
    -        }
    -
    -        if (update.payload() != null) {
    -            detailsBuilder.result(update.payload());
    -        }
    -
    -        return detailsBuilder.build();
    -    }
    -
    -    private CallbackDetails buildCallbackDetails(OperationUpdate update) {
    -        var key = compositeKey(update.parentId(), update.id());
    -        var existingOp = operations.get(key);
    -        var existing = existingOp != null ? existingOp.callbackDetails() : null;
    -
    -        // Preserve existing callbackId, or generate new one on START
    -        var callbackId =
    -                existing != null ? existing.callbackId() : UUID.randomUUID().toString();
    -
    -        return CallbackDetails.builder()
    -                .callbackId(callbackId)
    -                .result(existing != null ? existing.result() : null)
    -                .build();
    -    }
    -
    -    /** Get callback ID for a named callback operation. */
    -    public String getCallbackId(String operationName) {
    -        var op = getOperationByName(operationName);
    -        if (op == null || op.callbackDetails() == null) {
    -            return null;
    -        }
    -        return op.callbackDetails().callbackId();
    -    }
    -
    -    /** Simulate external system completing callback. */
    -    public void completeCallback(String callbackId, OperationResult result) {
    -        var op = findOperationByCallbackId(callbackId);
    -        if (op == null) {
    -            throw new IllegalStateException("Callback not found: " + callbackId);
    -        }
    -        var updated = op.toBuilder()
    -                .status(result.operationStatus())
    -                .callbackDetails(op.callbackDetails().toBuilder()
    -                        .result(result.result())
    -                        .error(result.error())
    -                        .build())
    -                .build();
    -        operations.put(compositeKey(op.parentId(), op.id()), updated);
    -    }
    -
    -    private Operation findOperationByCallbackId(String callbackId) {
    -        return operations.values().stream()
    -                .filter(op -> op.callbackDetails() != null
    -                        && callbackId.equals(op.callbackDetails().callbackId()))
    -                .findFirst()
    -                .orElse(null);
    -    }
    -
    -    private OperationStatus deriveStatus(OperationAction action) {
    -        return switch (action) {
    -            case START -> OperationStatus.STARTED;
    -            case SUCCEED -> OperationStatus.SUCCEEDED;
    -            case FAIL -> OperationStatus.FAILED;
    -            case RETRY -> OperationStatus.PENDING;
    -            case CANCEL -> OperationStatus.CANCELLED;
    -            case UNKNOWN_TO_SDK_VERSION -> OperationStatus.UNKNOWN_TO_SDK_VERSION; // Todo: Check this
    -        };
    -    }
    -}
    diff --git a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/OperationResult.java b/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/OperationResult.java
    deleted file mode 100644
    index bf24b902b..000000000
    --- a/sdk-testing/src/main/java/software/amazon/lambda/durable/testing/local/OperationResult.java
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.local;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -
    -/** The operation status and result/error from Step, Context, Callback and ChainedInvoke operations */
    -public record OperationResult(OperationStatus operationStatus, String result, ErrorObject error) {
    -    public static OperationResult succeeded(String result) {
    -        return new OperationResult(OperationStatus.SUCCEEDED, result, null);
    -    }
    -
    -    public static OperationResult failed(ErrorObject error) {
    -        return new OperationResult(OperationStatus.FAILED, null, error);
    -    }
    -
    -    public static OperationResult stopped(ErrorObject error) {
    -        return new OperationResult(OperationStatus.STOPPED, null, error);
    -    }
    -
    -    public static OperationResult timedout() {
    -        return new OperationResult(OperationStatus.TIMED_OUT, null, null);
    -    }
    -}
    diff --git a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/CloudDurableTestRunnerTest.java b/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/CloudDurableTestRunnerTest.java
    deleted file mode 100644
    index b1fde42e9..000000000
    --- a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/CloudDurableTestRunnerTest.java
    +++ /dev/null
    @@ -1,34 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.InvocationType;
    -
    -class CloudDurableTestRunnerTest {
    -
    -    @Test
    -    void testConfiguration() {
    -        var mockClient = mock(LambdaClient.class);
    -        var runner = CloudDurableTestRunner.create(
    -                        "arn:aws:lambda:us-east-2:123:function:test", String.class, String.class, mockClient)
    -                .withPollInterval(Duration.ofSeconds(5))
    -                .withInvocationType(InvocationType.EVENT);
    -
    -        assertNotNull(runner);
    -    }
    -
    -    @Test
    -    void testPlaceholderMethods() {
    -        var mockClient = mock(LambdaClient.class);
    -        var runner = CloudDurableTestRunner.create(
    -                "arn:aws:lambda:us-east-2:123:function:test", String.class, String.class, mockClient);
    -
    -        assertThrows(IllegalStateException.class, () -> runner.getOperation("test"));
    -    }
    -}
    diff --git a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/LocalDurableTestRunnerTest.java b/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/LocalDurableTestRunnerTest.java
    deleted file mode 100644
    index d79d29abf..000000000
    --- a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/LocalDurableTestRunnerTest.java
    +++ /dev/null
    @@ -1,83 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static software.amazon.lambda.durable.TypeToken.get;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -
    -class LocalDurableTestRunnerTest {
    -
    -    @Test
    -    void testSimpleExecution() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            var result = ctx.step("process", String.class, stepCtx -> "Hello, " + input);
    -            return result;
    -        });
    -
    -        var testResult = runner.run("World");
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, testResult.getStatus());
    -        assertEquals("Hello, World", testResult.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testMultipleSteps() {
    -        var runner = LocalDurableTestRunner.create(Integer.class, (input, ctx) -> {
    -                    var step1 = ctx.step("add", Integer.class, stepCtx -> input + 10);
    -                    var step2 = ctx.step("multiply", Integer.class, stepCtx -> step1 * 2);
    -                    var step3 = ctx.step("subtract", Integer.class, stepCtx -> step2 - 5);
    -                    return step3;
    -                })
    -                .withOutputType(Integer.class);
    -
    -        var testResult = runner.run(5);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, testResult.getStatus());
    -        assertEquals(25, testResult.getResult()); // (5 + 10) * 2 - 5 = 25
    -    }
    -
    -    @Test
    -    void testGetOperation() {
    -        var runner = LocalDurableTestRunner.create(String.class, (input, ctx) -> {
    -            ctx.step("step-1", String.class, stepCtx -> "result1");
    -            ctx.step("step-2", String.class, stepCtx -> "result2");
    -            return "done";
    -        });
    -
    -        runner.run("test");
    -
    -        var op1 = runner.getOperation("step-1");
    -        assertNotNull(op1);
    -        assertEquals("step-1", op1.getName());
    -        assertEquals("result1", op1.getStepResult(String.class));
    -
    -        var op2 = runner.getOperation("step-2");
    -        assertNotNull(op2);
    -        assertEquals("step-2", op2.getName());
    -        assertEquals("result2", op2.getStepResult(get(String.class)));
    -    }
    -
    -    @Test
    -    void testGenericTypeInput() {
    -        var resultType = new TypeToken<ArrayList<String>>() {};
    -        var runner = LocalDurableTestRunner.create(resultType, (input, ctx) -> {
    -            return ctx.step("process", resultType, stepCtx -> {
    -                var reversed = new ArrayList<>(input);
    -                Collections.reverse(reversed);
    -                return reversed;
    -            });
    -        });
    -
    -        var testResult = runner.run(new ArrayList<>(List.of("item1", "item2")));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, testResult.getStatus());
    -        assertEquals(List.of("item2", "item1"), testResult.getResult(resultType));
    -    }
    -}
    diff --git a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/SkipTimeTest.java b/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/SkipTimeTest.java
    deleted file mode 100644
    index 8fa2f591d..000000000
    --- a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/SkipTimeTest.java
    +++ /dev/null
    @@ -1,107 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -class SkipTimeTest {
    -
    -    static class TestInput {
    -        public String value;
    -
    -        public TestInput() {}
    -
    -        public TestInput(String value) {
    -            this.value = value;
    -        }
    -    }
    -
    -    @Test
    -    void testSkipTime() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("step-1", String.class, stepCtx -> "step1-done");
    -            context.wait(null, Duration.ofMinutes(5));
    -            var step2 = context.step("step-2", String.class, stepCtx -> "step2-done");
    -            return step1 + "+" + step2;
    -        });
    -
    -        // Should automatically advance all operations
    -        var result = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result.getStatus());
    -        assertEquals("step1-done+step2-done", result.getResult(String.class));
    -        assertEquals(3, result.getSucceededOperations().size());
    -    }
    -
    -    @Test
    -    void testManualTimeControl() {
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            var step1 = context.step("step-1", String.class, stepCtx -> "step1-done");
    -            context.wait(null, Duration.ofMinutes(5));
    -            var step2 = context.step("step-2", String.class, stepCtx -> "step2-done");
    -            return step1 + "+" + step2;
    -        });
    -
    -        // First run - should execute until wait and return PENDING
    -        var result1 = runner.run(new TestInput("test"));
    -        assertEquals(ExecutionStatus.PENDING, result1.getStatus());
    -
    -        // Manually advance time
    -        runner.advanceTime();
    -
    -        // Second run - should complete after wait
    -        var result2 = runner.runUntilComplete(new TestInput("test"));
    -        assertEquals(ExecutionStatus.SUCCEEDED, result2.getStatus());
    -        assertEquals("step1-done+step2-done", result2.getResult(String.class));
    -    }
    -
    -    @Test
    -    void testManualTimeControlWithRetry() {
    -        var attempts = new AtomicInteger(0);
    -
    -        var runner = LocalDurableTestRunner.create(TestInput.class, (input, context) -> {
    -            return context.step(
    -                    "flaky-step",
    -                    String.class,
    -                    stepCtx -> {
    -                        if (attempts.incrementAndGet() < 3) {
    -                            throw new RuntimeException("Transient failure");
    -                        }
    -                        return "success";
    -                    },
    -                    StepConfig.builder()
    -                            .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                            .build());
    -        });
    -
    -        // First run - should fail and return PENDING (waiting for retry)
    -        var result1 = runner.run(new TestInput("test"));
    -        System.out.println("First run status: " + result1.getStatus());
    -        assertEquals(ExecutionStatus.PENDING, result1.getStatus());
    -        assertEquals(1, result1.getOperations().get(0).getStepDetails().attempt());
    -
    -        // Manually advance time (makes retry ready)
    -        runner.advanceTime();
    -
    -        // Second run - should retry and fail again, return PENDING for next retry
    -        var result2 = runner.run(new TestInput("test"));
    -        assertEquals(ExecutionStatus.PENDING, result2.getStatus());
    -        assertEquals(2, result2.getOperations().get(0).getStepDetails().attempt());
    -
    -        // Advance time again
    -        runner.advanceTime();
    -
    -        // Third run - should succeed
    -        var result3 = runner.runUntilComplete(new TestInput("test"));
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, result3.getStatus());
    -        assertEquals("success", result3.getResult(String.class));
    -    }
    -}
    diff --git a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClientTest.java b/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClientTest.java
    deleted file mode 100644
    index 233f7b8a8..000000000
    --- a/sdk-testing/src/test/java/software/amazon/lambda/durable/testing/local/LocalMemoryExecutionClientTest.java
    +++ /dev/null
    @@ -1,77 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.testing.local;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -
    -class LocalMemoryExecutionClientTest {
    -
    -    @Test
    -    void testOperationLookup() {
    -        var client = new LocalMemoryExecutionClient();
    -
    -        var update1 = OperationUpdate.builder()
    -                .id("1")
    -                .name("step-1")
    -                .type(OperationType.STEP)
    -                .action(OperationAction.SUCCEED)
    -                .payload("\"result1\"")
    -                .build();
    -
    -        var update2 = OperationUpdate.builder()
    -                .id("2")
    -                .name("step-2")
    -                .type(OperationType.STEP)
    -                .action(OperationAction.SUCCEED)
    -                .payload("\"result2\"")
    -                .build();
    -
    -        client.checkpoint("arn", "token", List.of(update1, update2));
    -
    -        var op1 = client.getOperationByName("step-1");
    -        assertNotNull(op1);
    -        assertEquals("step-1", op1.name());
    -
    -        var op2 = client.getOperationByName("step-2");
    -        assertNotNull(op2);
    -        assertEquals("step-2", op2.name());
    -
    -        assertEquals(2, client.getAllOperations().size());
    -    }
    -
    -    @Test
    -    void testResetCheckpointToStartedThrowsWhenOperationNotFound() {
    -        var client = new LocalMemoryExecutionClient();
    -
    -        var exception =
    -                assertThrows(IllegalStateException.class, () -> client.resetCheckpointToStarted("nonexistent-step"));
    -        assertEquals("Operation not found: nonexistent-step", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testSimulateFireAndForgetCheckpointLossThrowsWhenOperationNotFound() {
    -        var client = new LocalMemoryExecutionClient();
    -
    -        var exception = assertThrows(
    -                IllegalStateException.class, () -> client.simulateFireAndForgetCheckpointLoss("nonexistent-step"));
    -        assertEquals("Operation not found: nonexistent-step", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testCompleteInvocationThrowsWhenOperationNotFound() {
    -        var client = new LocalMemoryExecutionClient();
    -
    -        var exception = assertThrows(
    -                IllegalStateException.class,
    -                () -> client.completeChainedInvoke(
    -                        "nonexistent-invoke", new OperationResult(OperationStatus.TIMED_OUT, null, null)));
    -        assertEquals("Operation not found: nonexistent-invoke", exception.getMessage());
    -    }
    -}
    diff --git a/sdk/pom.xml b/sdk/pom.xml
    deleted file mode 100644
    index 31be734b9..000000000
    --- a/sdk/pom.xml
    +++ /dev/null
    @@ -1,119 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<project xmlns="http://maven.apache.org/POM/4.0.0"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -    <modelVersion>4.0.0</modelVersion>
    -
    -    <parent>
    -        <groupId>software.amazon.lambda.durable</groupId>
    -        <artifactId>aws-durable-execution-sdk-java-parent</artifactId>
    -        <version>1.0.1-SNAPSHOT</version>
    -    </parent>
    -
    -    <artifactId>aws-durable-execution-sdk-java</artifactId>
    -    <packaging>jar</packaging>
    -
    -    <name>AWS Lambda Durable Execution SDK for Java</name>
    -    <description>Java SDK for AWS Lambda Durable Functions</description>
    -    <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -
    -    <scm>
    -        <connection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</connection>
    -        <developerConnection>scm:git:https://github.com/aws/aws-durable-execution-sdk-java.git</developerConnection>
    -        <url>https://github.com/aws/aws-durable-execution-sdk-java</url>
    -    </scm>
    -
    -    <dependencies>
    -        <!-- AWS Lambda Java Core -->
    -        <dependency>
    -            <groupId>com.amazonaws</groupId>
    -            <artifactId>aws-lambda-java-core</artifactId>
    -        </dependency>
    -
    -        <!-- AWS SDK for Lambda -->
    -        <dependency>
    -            <groupId>software.amazon.awssdk</groupId>
    -            <artifactId>lambda</artifactId>
    -        </dependency>
    -
    -        <!-- Jackson -->
    -        <dependency>
    -            <groupId>com.fasterxml.jackson.core</groupId>
    -            <artifactId>jackson-databind</artifactId>
    -        </dependency>
    -        <dependency>
    -            <groupId>com.fasterxml.jackson.datatype</groupId>
    -            <artifactId>jackson-datatype-jsr310</artifactId>
    -        </dependency>
    -
    -        <!-- SLF4J API -->
    -        <dependency>
    -            <groupId>org.slf4j</groupId>
    -            <artifactId>slf4j-api</artifactId>
    -        </dependency>
    -
    -        <!-- Testing -->
    -        <dependency>
    -            <groupId>org.junit.jupiter</groupId>
    -            <artifactId>junit-jupiter</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.mockito</groupId>
    -            <artifactId>mockito-core</artifactId>
    -            <scope>test</scope>
    -        </dependency>
    -        <dependency>
    -            <groupId>org.slf4j</groupId>
    -            <artifactId>slf4j-simple</artifactId>
    -            <version>${slf4j.version}</version>
    -            <scope>test</scope>
    -        </dependency>
    -    </dependencies>
    -
    -    <build>
    -        <resources>
    -            <resource>
    -                <directory>src/main/resources</directory>
    -                <filtering>true</filtering>
    -                <includes>
    -                    <include>**/*.prop</include>
    -                </includes>
    -            </resource>
    -        </resources>
    -        <plugins>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-compiler-plugin</artifactId>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-surefire-plugin</artifactId>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-source-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-sources</id>
    -                        <goals>
    -                            <goal>jar-no-fork</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -            <plugin>
    -                <groupId>org.apache.maven.plugins</groupId>
    -                <artifactId>maven-javadoc-plugin</artifactId>
    -                <executions>
    -                    <execution>
    -                        <id>attach-javadocs</id>
    -                        <goals>
    -                            <goal>jar</goal>
    -                        </goals>
    -                    </execution>
    -                </executions>
    -            </plugin>
    -        </plugins>
    -    </build>
    -</project>
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/DurableCallbackFuture.java b/sdk/src/main/java/software/amazon/lambda/durable/DurableCallbackFuture.java
    deleted file mode 100644
    index d72c49571..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/DurableCallbackFuture.java
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -/**
    - * Result of creating a callback, containing the callback ID and providing access to the result. Extends DurableFuture
    - * so callbacks can be processed the same way as other futures.
    - */
    -public interface DurableCallbackFuture<T> extends DurableFuture<T> {
    -    /**
    -     * Returns the unique identifier for this callback.
    -     *
    -     * <p>External systems use this ID to send callback results back to the durable execution.
    -     *
    -     * @return the callback ID
    -     */
    -    String callbackId();
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/DurableConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/DurableConfig.java
    deleted file mode 100644
    index 02fdbba90..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/DurableConfig.java
    +++ /dev/null
    @@ -1,395 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import java.io.IOException;
    -import java.io.InputStream;
    -import java.time.Duration;
    -import java.util.Objects;
    -import java.util.Properties;
    -import java.util.concurrent.ExecutorService;
    -import java.util.concurrent.Executors;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
    -import software.amazon.awssdk.core.SdkSystemSetting;
    -import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
    -import software.amazon.awssdk.regions.Region;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.LambdaClientBuilder;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
    -import software.amazon.lambda.durable.logging.LoggerConfig;
    -import software.amazon.lambda.durable.retry.PollingStrategies;
    -import software.amazon.lambda.durable.retry.PollingStrategy;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration for DurableHandler initialization. This class provides a builder pattern for configuring SDK components
    - * including LambdaClient, SerDes, and ExecutorService.
    - *
    - * <p>Configuration is initialized once during Lambda cold start and remains immutable throughout the execution
    - * lifecycle.
    - *
    - * <p>Example usage with default settings:
    - *
    - * <pre>{@code
    - * @Override
    - * protected DurableConfig createConfiguration() {
    - *     return DurableConfig.builder()
    - *         .withDurableExecutionClient(customClient)
    - *         .withSerDes(customSerDes)
    - *         .build();
    - * }
    - * }</pre>
    - *
    - * <p>Example usage with custom Lambda client:
    - *
    - * <pre>{@code
    - * @Override
    - * protected DurableConfig createConfiguration() {
    - *     LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
    - *         .region(Region.US_WEST_2)
    - *         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
    - *
    - *     return DurableConfig.builder()
    - *         .withLambdaClientBuilder(lambdaClientBuilder)
    - *         .build();
    - * }
    - * }</pre>
    - */
    -public final class DurableConfig {
    -    private static final Logger logger = LoggerFactory.getLogger(DurableConfig.class);
    -
    -    /**
    -     * Default AWS region used when AWS_REGION environment variable is not set. This prevents initialization failures in
    -     * testing environments where AWS credentials may not be configured. In production Lambda environments, AWS_REGION
    -     * is always set by the Lambda runtime.
    -     */
    -    private static final String DEFAULT_REGION = "us-east-1";
    -
    -    private static final String VERSION_FILE = "/version.prop";
    -    private static final String PROJECT_VERSION = getProjectVersion(VERSION_FILE);
    -    private static final String USER_AGENT_SUFFIX = "@aws/durable-execution-sdk-java/" + PROJECT_VERSION;
    -
    -    /**
    -     * A default ExecutorService for running user-defined operations. Uses a cached thread pool with daemon threads by
    -     * default.
    -     *
    -     * <p>This executor is used exclusively for user operations. Internal SDK coordination uses the
    -     * InternalExecutor::INSTANCE
    -     */
    -    private static final ExecutorService DEFAULT_USER_THREAD_POOL = Executors.newCachedThreadPool(r -> {
    -        Thread t = new Thread(r);
    -        t.setName("durable-exec-" + t.getId());
    -        t.setDaemon(true);
    -        return t;
    -    });
    -
    -    private final DurableExecutionClient durableExecutionClient;
    -    private final SerDes serDes;
    -    private final ExecutorService executorService;
    -    private final LoggerConfig loggerConfig;
    -    private final PollingStrategy pollingStrategy;
    -    private final Duration checkpointDelay;
    -
    -    private DurableConfig(Builder builder) {
    -        this.durableExecutionClient = Objects.requireNonNullElseGet(
    -                builder.durableExecutionClient, DurableConfig::createDefaultDurableExecutionClient);
    -        this.serDes = Objects.requireNonNullElseGet(builder.serDes, JacksonSerDes::new);
    -        this.executorService =
    -                Objects.requireNonNullElseGet(builder.executorService, DurableConfig::createDefaultExecutor);
    -        this.loggerConfig = Objects.requireNonNullElseGet(builder.loggerConfig, LoggerConfig::defaults);
    -        this.pollingStrategy = Objects.requireNonNullElse(builder.pollingStrategy, PollingStrategies.Presets.DEFAULT);
    -        this.checkpointDelay = Objects.requireNonNullElseGet(builder.checkpointDelay, () -> Duration.ofSeconds(0));
    -
    -        validateConfiguration();
    -    }
    -
    -    /**
    -     * Creates a DurableConfig with default settings. Uses default DurableExecutionClient and JacksonSerDes.
    -     *
    -     * @return DurableConfig with default configuration
    -     */
    -    public static DurableConfig defaultConfig() {
    -        return new Builder().build();
    -    }
    -
    -    /**
    -     * Creates a new builder for DurableConfig.
    -     *
    -     * @return Builder instance
    -     */
    -    public static Builder builder() {
    -        return new Builder();
    -    }
    -
    -    /**
    -     * Gets the configured DurableExecutionClient.
    -     *
    -     * @return DurableExecutionClient instance
    -     */
    -    public DurableExecutionClient getDurableExecutionClient() {
    -        return durableExecutionClient;
    -    }
    -
    -    /**
    -     * Gets the configured SerDes.
    -     *
    -     * @return SerDes instance
    -     */
    -    public SerDes getSerDes() {
    -        return serDes;
    -    }
    -
    -    /**
    -     * Gets the configured ExecutorService.
    -     *
    -     * @return ExecutorService instance (never null)
    -     */
    -    public ExecutorService getExecutorService() {
    -        return executorService;
    -    }
    -
    -    /**
    -     * Gets the configured LoggerConfig.
    -     *
    -     * @return LoggerConfig instance (never null)
    -     */
    -    public LoggerConfig getLoggerConfig() {
    -        return loggerConfig;
    -    }
    -
    -    /**
    -     * Gets the polling strategy.
    -     *
    -     * @return PollingStrategy instance (never null)
    -     */
    -    public PollingStrategy getPollingStrategy() {
    -        return pollingStrategy;
    -    }
    -
    -    /**
    -     * Gets the configured checkpoint delay.
    -     *
    -     * @return the checkpoint delay duration
    -     */
    -    public Duration getCheckpointDelay() {
    -        return checkpointDelay;
    -    }
    -
    -    public void validateConfiguration() {
    -        if (getDurableExecutionClient() == null) {
    -            throw new IllegalStateException("DurableExecutionClient configuration failed");
    -        }
    -        if (getSerDes() == null) {
    -            throw new IllegalStateException("SerDes configuration failed");
    -        }
    -        if (getExecutorService() == null) {
    -            throw new IllegalStateException("ExecutorService configuration failed");
    -        }
    -    }
    -
    -    /**
    -     * Creates a default DurableExecutionClient with production LambdaClient. Uses
    -     * EnvironmentVariableCredentialsProvider and region from AWS_REGION. If AWS_REGION is not set, defaults to
    -     * us-east-1 to avoid initialization failures in testing environments.
    -     *
    -     * @return Default DurableExecutionClient instance
    -     */
    -    private static DurableExecutionClient createDefaultDurableExecutionClient() {
    -        logger.debug("Creating default DurableExecutionClient");
    -        var region = System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable());
    -        if (region == null || region.isEmpty()) {
    -            region = DEFAULT_REGION;
    -            logger.debug("AWS_REGION not set, defaulting to: {}", region);
    -        }
    -
    -        var lambdaClient = addUserAgentSuffix(LambdaClient.builder()
    -                        .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    -                        .region(Region.of(region)))
    -                .build();
    -
    -        try {
    -            // Make a dummy call to prime the SDK client. This leads to faster first call times because the HTTP client
    -            // is already warmed up when the handler executes. More details, see here:
    -            // https://github.com/aws/aws-sdk-java-v2/issues/1340
    -            // https://github.com/aws/aws-sdk-java-v2/issues/3801
    -            lambdaClient.getDurableExecutionState(GetDurableExecutionStateRequest.builder()
    -                    .checkpointToken("dummyToken")
    -                    .durableExecutionArn(String.format(
    -                            "arn:aws:lambda:%s:123456789012:function:dummy:$LATEST/durable-execution/a0c9cbab-3de6-49ea-8630-0ef3bb4874e4/ed8a29c0-6216-3f4a-ad2e-24e2ad70b2d6",
    -                            region))
    -                    .maxItems(0)
    -                    .build());
    -        } catch (Exception e) {
    -            // Ignore exceptions since this is a dummy call to prime the SDK client for faster startup times
    -        }
    -
    -        logger.debug("Default DurableExecutionClient created for region: {}", region);
    -        return new LambdaDurableFunctionsClient(lambdaClient);
    -    }
    -
    -    static LambdaClientBuilder addUserAgentSuffix(LambdaClientBuilder builder) {
    -        return builder.overrideConfiguration(builder.overrideConfiguration().toBuilder()
    -                .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, USER_AGENT_SUFFIX)
    -                .build());
    -    }
    -
    -    private static String getProjectVersion(String versionFile) {
    -        InputStream stream = DurableConfig.class.getResourceAsStream(versionFile);
    -        if (stream == null) {
    -            return "UNKNOWN";
    -        }
    -        Properties props = new Properties();
    -        try {
    -            props.load(stream);
    -            stream.close();
    -            return (String) props.get("version");
    -        } catch (IOException e) {
    -            return "UNKNOWN";
    -        }
    -    }
    -
    -    /**
    -     * Creates a default ExecutorService for running user-defined operations. Uses a cached thread pool with daemon
    -     * threads by default.
    -     *
    -     * <p>This executor is used exclusively for user operations. Internal SDK coordination uses the common ForkJoinPool.
    -     *
    -     * @return Default ExecutorService instance
    -     */
    -    private static ExecutorService createDefaultExecutor() {
    -        logger.debug("Creating default ExecutorService");
    -        return DEFAULT_USER_THREAD_POOL;
    -    }
    -
    -    /** Builder for DurableConfig. Provides fluent API for configuring SDK components. */
    -    public static final class Builder {
    -        private DurableExecutionClient durableExecutionClient;
    -        private SerDes serDes;
    -        private ExecutorService executorService;
    -        private LoggerConfig loggerConfig;
    -        private PollingStrategy pollingStrategy;
    -        private Duration checkpointDelay;
    -
    -        public Builder() {}
    -
    -        /**
    -         * Sets a custom LambdaClient for production use. Use this method to customize the AWS SDK client with specific
    -         * regions, credentials, timeouts, or retry policies.
    -         *
    -         * <p>Example:
    -         *
    -         * <pre>{@code
    -         * LambdaClientBuilder lambdaClientBuilder = LambdaClient.builder()
    -         *     .region(Region.US_WEST_2)
    -         *     .credentialsProvider(ProfileCredentialsProvider.create("my-profile"));
    -         *
    -         * DurableConfig.builder()
    -         *     .withLambdaClientBuilder(lambdaClientBuilder)
    -         *     .build();
    -         * }</pre>
    -         *
    -         * @param lambdaClientBuilder Custom LambdaClientBuilder instance
    -         * @return This builder
    -         * @throws NullPointerException if lambdaClient is null
    -         */
    -        public Builder withLambdaClientBuilder(LambdaClientBuilder lambdaClientBuilder) {
    -            Objects.requireNonNull(lambdaClientBuilder, "LambdaClient cannot be null");
    -            this.durableExecutionClient = new LambdaDurableFunctionsClient(
    -                    addUserAgentSuffix(lambdaClientBuilder).build());
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom DurableExecutionClient.
    -         *
    -         * <p><b>Note:</b> This method is primarily intended for testing with mock clients (e.g.,
    -         * {@code LocalMemoryExecutionClient}). For production use with a custom AWS SDK client, prefer
    -         * {@link #withLambdaClientBuilder(LambdaClientBuilder)}.
    -         *
    -         * @param durableExecutionClient Custom DurableExecutionClient instance
    -         * @return This builder
    -         * @throws NullPointerException if durableExecutionClient is null
    -         */
    -        public Builder withDurableExecutionClient(DurableExecutionClient durableExecutionClient) {
    -            this.durableExecutionClient =
    -                    Objects.requireNonNull(durableExecutionClient, "DurableExecutionClient cannot be null");
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom SerDes implementation.
    -         *
    -         * @param serDes Custom SerDes instance
    -         * @return This builder
    -         * @throws NullPointerException if serDes is null
    -         */
    -        public Builder withSerDes(SerDes serDes) {
    -            this.serDes = Objects.requireNonNull(serDes, "SerDes cannot be null");
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom ExecutorService for running user-defined operations. If not set, a default cached thread pool
    -         * will be created.
    -         *
    -         * <p>This executor is used exclusively for running user-defined operations. Internal SDK coordination (polling,
    -         * checkpointing) uses the SDK InternalExecutor thread pool and is not affected by this setting.
    -         *
    -         * @param executorService Custom ExecutorService instance
    -         * @return This builder
    -         */
    -        public Builder withExecutorService(ExecutorService executorService) {
    -            this.executorService = executorService;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom LoggerConfig. If not set, defaults to suppressing replay logs.
    -         *
    -         * @param loggerConfig Custom LoggerConfig instance
    -         * @return This builder
    -         */
    -        public Builder withLoggerConfig(LoggerConfig loggerConfig) {
    -            this.loggerConfig = Objects.requireNonNull(loggerConfig, "LoggerConfig cannot be null");
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the polling strategy. If not set, defaults to 1 second with full jitter and 2x backoff.
    -         *
    -         * @param pollingStrategy Custom PollingStrategy instance
    -         * @return This builder
    -         */
    -        public Builder withPollingStrategy(PollingStrategy pollingStrategy) {
    -            // No validation - polling intervals can be less than 1 second (e.g., 200ms with backoff)
    -            this.pollingStrategy = pollingStrategy;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets how often the SDK checkpoints updates to backend. If not set, defaults to 0, SDK will checkpoint the
    -         * updates as soon as possible.
    -         *
    -         * @param duration the checkpoint delay in Duration
    -         * @return This builder
    -         */
    -        public Builder withCheckpointDelay(Duration duration) {
    -            this.checkpointDelay = duration;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the DurableConfig instance.
    -         *
    -         * @return Immutable DurableConfig instance
    -         */
    -        public DurableConfig build() {
    -            return new DurableConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/DurableContext.java b/sdk/src/main/java/software/amazon/lambda/durable/DurableContext.java
    deleted file mode 100644
    index 615ce70e8..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/DurableContext.java
    +++ /dev/null
    @@ -1,753 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import java.time.Duration;
    -import java.util.Collection;
    -import java.util.function.BiConsumer;
    -import java.util.function.BiFunction;
    -import java.util.function.Function;
    -import java.util.function.Supplier;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.config.RunInChildContextConfig;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.WaitForCallbackConfig;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.context.BaseContext;
    -import software.amazon.lambda.durable.model.MapResult;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -
    -public interface DurableContext extends BaseContext {
    -    /**
    -     * Executes a durable step with the given name and blocks until it completes.
    -     *
    -     * <p>On first execution, runs {@code func} and checkpoints the result. On replay, returns the cached result without
    -     * re-executing.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @return the step result
    -     */
    -    default <T> T step(String name, Class<T> resultType, Function<StepContext, T> func) {
    -        return step(name, TypeToken.get(resultType), func, StepConfig.builder().build());
    -    }
    -
    -    /**
    -     * Executes a durable step with the given name and configuration, blocking until it completes.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @param config the step configuration (retry strategy, semantics, custom SerDes)
    -     * @return the step result
    -     */
    -    default <T> T step(String name, Class<T> resultType, Function<StepContext, T> func, StepConfig config) {
    -        return stepAsync(name, resultType, func, config).get();
    -    }
    -
    -    /**
    -     * Executes a durable step using a {@link TypeToken} for generic result types, blocking until it completes.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic types
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @return the step result
    -     */
    -    default <T> T step(String name, TypeToken<T> resultType, Function<StepContext, T> func) {
    -        return step(name, resultType, func, StepConfig.builder().build());
    -    }
    -
    -    /**
    -     * Executes a durable step using a {@link TypeToken} and configuration, blocking until it completes.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic types
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @param config the step configuration (retry strategy, semantics, custom SerDes)
    -     * @return the step result
    -     */
    -    default <T> T step(String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config) {
    -        return stepAsync(name, resultType, func, config).get();
    -    }
    -
    -    /**
    -     * Asynchronously executes a durable step, returning a {@link DurableFuture} that can be composed or blocked on.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @return a future representing the step result
    -     */
    -    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Function<StepContext, T> func) {
    -        return stepAsync(
    -                name, TypeToken.get(resultType), func, StepConfig.builder().build());
    -    }
    -
    -    /**
    -     * Asynchronously executes a durable step using custom configuration.
    -     *
    -     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @param config the step configuration (retry strategy, semantics, custom SerDes)
    -     * @return a future representing the step result
    -     */
    -    default <T> DurableFuture<T> stepAsync(
    -            String name, Class<T> resultType, Function<StepContext, T> func, StepConfig config) {
    -        return stepAsync(name, TypeToken.get(resultType), func, config);
    -    }
    -
    -    /**
    -     * Asynchronously executes a durable step using a {@link TypeToken} for generic result types.
    -     *
    -     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic types
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @return a future representing the step result
    -     */
    -    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Function<StepContext, T> func) {
    -        return stepAsync(name, resultType, func, StepConfig.builder().build());
    -    }
    -
    -    /**
    -     * Asynchronously executes a durable step using a {@link TypeToken} and custom configuration.
    -     *
    -     * <p>This is the core stepAsync implementation. All other step/stepAsync overloads delegate here.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic types
    -     * @param func the function to execute, receiving a {@link StepContext}
    -     * @param config the step configuration (retry strategy, semantics, custom SerDes)
    -     * @return a future representing the step result
    -     */
    -    <T> DurableFuture<T> stepAsync(
    -            String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config);
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> T step(String name, Class<T> resultType, Supplier<T> func) {
    -        return stepAsync(
    -                        name,
    -                        TypeToken.get(resultType),
    -                        func,
    -                        StepConfig.builder().build())
    -                .get();
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> T step(String name, Class<T> resultType, Supplier<T> func, StepConfig config) {
    -        // Simply delegate to stepAsync and block on the result
    -        return stepAsync(name, TypeToken.get(resultType), func, config).get();
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> T step(String name, TypeToken<T> resultType, Supplier<T> func) {
    -        return stepAsync(name, resultType, func, StepConfig.builder().build()).get();
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> T step(String name, TypeToken<T> resultType, Supplier<T> func, StepConfig config) {
    -        return stepAsync(name, resultType, func, config).get();
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Supplier<T> func) {
    -        return stepAsync(
    -                name, TypeToken.get(resultType), func, StepConfig.builder().build());
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> DurableFuture<T> stepAsync(String name, Class<T> resultType, Supplier<T> func, StepConfig config) {
    -        return stepAsync(name, TypeToken.get(resultType), func, config);
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Supplier<T> func) {
    -        return stepAsync(name, resultType, func, StepConfig.builder().build());
    -    }
    -
    -    /** @deprecated use the variants accepting StepContext instead */
    -    @Deprecated
    -    default <T> DurableFuture<T> stepAsync(String name, TypeToken<T> resultType, Supplier<T> func, StepConfig config) {
    -        return stepAsync(name, resultType, stepContext -> func.get(), config);
    -    }
    -
    -    /**
    -     * Suspends execution for the specified duration without consuming compute resources.
    -     *
    -     * <p>On first execution, checkpoints a wait operation and suspends the Lambda. On replay after the duration has
    -     * elapsed, returns immediately.
    -     *
    -     * @param name the unique operation name within this context
    -     * @param duration the duration to wait
    -     * @return always {@code null}
    -     */
    -    default Void wait(String name, Duration duration) {
    -        return waitAsync(name, duration).get();
    -    }
    -
    -    /**
    -     * Asynchronously suspends execution for the specified duration.
    -     *
    -     * @param name the unique operation name within this context
    -     * @param duration the duration to wait
    -     * @return a future that completes when the wait duration has elapsed
    -     */
    -    DurableFuture<Void> waitAsync(String name, Duration duration);
    -
    -    /**
    -     * Invokes another Lambda function by name and blocks until the result is available.
    -     *
    -     * <p>On first execution, checkpoints a chained invoke operation that triggers the target function. On replay,
    -     * returns the cached result without re-invoking.
    -     *
    -     * @param <T> the result type
    -     * @param <U> the payload type
    -     * @param name the unique operation name within this context
    -     * @param functionName the ARN or name of the Lambda function to invoke
    -     * @param payload the input payload to send to the target function
    -     * @param resultType the result class for deserialization
    -     * @return the invocation result
    -     */
    -    default <T, U> T invoke(String name, String functionName, U payload, Class<T> resultType) {
    -        return invokeAsync(
    -                        name,
    -                        functionName,
    -                        payload,
    -                        TypeToken.get(resultType),
    -                        InvokeConfig.builder().build())
    -                .get();
    -    }
    -
    -    /** Invokes another Lambda function with custom configuration, blocking until the result is available. */
    -    default <T, U> T invoke(String name, String functionName, U payload, Class<T> resultType, InvokeConfig config) {
    -        return invokeAsync(name, functionName, payload, TypeToken.get(resultType), config)
    -                .get();
    -    }
    -
    -    /** Invokes another Lambda function using a {@link TypeToken} for generic result types, blocking until complete. */
    -    default <T, U> T invoke(String name, String functionName, U payload, TypeToken<T> resultType) {
    -        return invokeAsync(
    -                        name,
    -                        functionName,
    -                        payload,
    -                        resultType,
    -                        InvokeConfig.builder().build())
    -                .get();
    -    }
    -
    -    /** Invokes another Lambda function using a {@link TypeToken} and custom configuration, blocking until complete. */
    -    default <T, U> T invoke(String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config) {
    -        return invokeAsync(name, functionName, payload, resultType, config).get();
    -    }
    -
    -    /** Invokes another Lambda function using a {@link TypeToken} and custom configuration, blocking until complete. */
    -    default <T, U> DurableFuture<T> invokeAsync(
    -            String name, String functionName, U payload, Class<T> resultType, InvokeConfig config) {
    -        return invokeAsync(name, functionName, payload, TypeToken.get(resultType), config);
    -    }
    -
    -    /** Asynchronously invokes another Lambda function, returning a {@link DurableFuture}. */
    -    default <T, U> DurableFuture<T> invokeAsync(String name, String functionName, U payload, Class<T> resultType) {
    -        return invokeAsync(
    -                name,
    -                functionName,
    -                payload,
    -                TypeToken.get(resultType),
    -                InvokeConfig.builder().build());
    -    }
    -
    -    /** Asynchronously invokes another Lambda function using a {@link TypeToken} for generic result types. */
    -    default <T, U> DurableFuture<T> invokeAsync(String name, String functionName, U payload, TypeToken<T> resultType) {
    -        return invokeAsync(
    -                name, functionName, payload, resultType, InvokeConfig.builder().build());
    -    }
    -
    -    /**
    -     * Asynchronously invokes another Lambda function using a {@link TypeToken} and custom configuration.
    -     *
    -     * <p>This is the core invokeAsync implementation. All other invoke/invokeAsync overloads delegate here.
    -     *
    -     * @param <T> the result type
    -     * @param <U> the payload type
    -     * @param name the unique operation name within this context
    -     * @param functionName the ARN or name of the Lambda function to invoke
    -     * @param payload the input payload to send to the target function
    -     * @param resultType the type token for deserialization of generic result types
    -     * @param config the invoke configuration (custom SerDes for result and payload)
    -     * @return a future representing the invocation result
    -     */
    -    <T, U> DurableFuture<T> invokeAsync(
    -            String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config);
    -
    -    /** Creates a callback with custom configuration. */
    -    default <T> DurableCallbackFuture<T> createCallback(String name, Class<T> resultType, CallbackConfig config) {
    -        return createCallback(name, TypeToken.get(resultType), config);
    -    }
    -
    -    /** Creates a callback using a {@link TypeToken} for generic result types. */
    -    default <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType) {
    -        return createCallback(name, resultType, CallbackConfig.builder().build());
    -    }
    -
    -    /** Creates a callback with default configuration. */
    -    default <T> DurableCallbackFuture<T> createCallback(String name, Class<T> resultType) {
    -        return createCallback(
    -                name, TypeToken.get(resultType), CallbackConfig.builder().build());
    -    }
    -
    -    /**
    -     * Creates a callback operation that suspends execution until an external system completes it.
    -     *
    -     * <p>This is the core createCallback implementation. Returns a {@link DurableCallbackFuture} containing a callback
    -     * ID that external systems use to report completion via the Lambda Durable API.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic result types
    -     * @param config the callback configuration (custom SerDes)
    -     * @return a future containing the callback ID and eventual result
    -     */
    -    <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType, CallbackConfig config);
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @return the child context result
    -     */
    -    default <T> T runInChildContext(String name, Class<T> resultType, Function<DurableContext, T> func) {
    -        return runInChildContextAsync(
    -                        name,
    -                        TypeToken.get(resultType),
    -                        func,
    -                        RunInChildContextConfig.builder().build())
    -                .get();
    -    }
    -
    -    /**
    -     * Runs a function in a child context using a {@link TypeToken} for generic result types, blocking until complete.
    -     */
    -    default <T> T runInChildContext(String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
    -        return runInChildContextAsync(
    -                        name,
    -                        resultType,
    -                        func,
    -                        RunInChildContextConfig.builder().build())
    -                .get();
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @return the DurableFuture of the child context result
    -     */
    -    default <T> DurableFuture<T> runInChildContextAsync(
    -            String name, Class<T> resultType, Function<DurableContext, T> func) {
    -        return runInChildContextAsync(
    -                name,
    -                TypeToken.get(resultType),
    -                func,
    -                RunInChildContextConfig.builder().build());
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @return the DurableFuture of the child context result
    -     */
    -    default <T> DurableFuture<T> runInChildContextAsync(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
    -        return runInChildContextAsync(
    -                name, resultType, func, RunInChildContextConfig.builder().build());
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @return the child context result
    -     */
    -    default <T> T runInChildContext(
    -            String name, Class<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
    -        return runInChildContextAsync(name, TypeToken.get(resultType), func, config)
    -                .get();
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @param config the configuration for the child context
    -     * @return the child context result
    -     */
    -    default <T> T runInChildContext(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
    -        return runInChildContextAsync(name, resultType, func, config).get();
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @param config the configuration for the child context
    -     * @return the DurableFuture wrapping the child context result
    -     */
    -    default <T> DurableFuture<T> runInChildContextAsync(
    -            String name, Class<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
    -        return runInChildContextAsync(name, TypeToken.get(resultType), func, config);
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @param config the configuration for the child context
    -     * @return the DurableFuture wrapping the child context result
    -     */
    -    <T> DurableFuture<T> runInChildContextAsync(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config);
    -
    -    default <I, O> MapResult<O> map(String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function) {
    -        return mapAsync(
    -                        name,
    -                        items,
    -                        TypeToken.get(resultType),
    -                        function,
    -                        MapConfig.builder().build())
    -                .get();
    -    }
    -
    -    default <I, O> MapResult<O> map(
    -            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config) {
    -        return mapAsync(name, items, TypeToken.get(resultType), function, config)
    -                .get();
    -    }
    -
    -    default <I, O> MapResult<O> map(
    -            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function) {
    -        return mapAsync(name, items, resultType, function, MapConfig.builder().build())
    -                .get();
    -    }
    -
    -    default <I, O> MapResult<O> map(
    -            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config) {
    -        return mapAsync(name, items, resultType, function, config).get();
    -    }
    -
    -    default <I, O> DurableFuture<MapResult<O>> mapAsync(
    -            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function) {
    -        return mapAsync(
    -                name,
    -                items,
    -                TypeToken.get(resultType),
    -                function,
    -                MapConfig.builder().build());
    -    }
    -
    -    default <I, O> DurableFuture<MapResult<O>> mapAsync(
    -            String name, Collection<I> items, Class<O> resultType, MapFunction<I, O> function, MapConfig config) {
    -        return mapAsync(name, items, TypeToken.get(resultType), function, config);
    -    }
    -
    -    default <I, O> DurableFuture<MapResult<O>> mapAsync(
    -            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function) {
    -        return mapAsync(name, items, resultType, function, MapConfig.builder().build());
    -    }
    -
    -    <I, O> DurableFuture<MapResult<O>> mapAsync(
    -            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config);
    -
    -    /**
    -     * Creates a {@link ParallelDurableFuture} for executing multiple branches concurrently with default config
    -     *
    -     * @return a new ParallelDurableFuture for registering and executing branches
    -     */
    -    default ParallelDurableFuture parallel(String name) {
    -        return parallel(name, ParallelConfig.builder().build());
    -    }
    -
    -    /**
    -     * Creates a {@link ParallelDurableFuture} for executing multiple branches concurrently.
    -     *
    -     * @param config the parallel execution configuration
    -     * @return a new ParallelDurableFuture for registering and executing branches
    -     */
    -    ParallelDurableFuture parallel(String name, ParallelConfig config);
    -
    -    /**
    -     * Executes a submitter function and waits for an external callback, blocking until the callback completes.
    -     *
    -     * <p>Combines a step (to run the submitter) and a callback (to receive the external result) in a child context. The
    -     * submitter receives a callback ID that external systems use to report completion.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the submitter function, receiving the callback ID and a {@link StepContext}
    -     * @return the callback result
    -     */
    -    default <T> T waitForCallback(String name, Class<T> resultType, BiConsumer<String, StepContext> func) {
    -        return waitForCallbackAsync(
    -                        name,
    -                        TypeToken.get(resultType),
    -                        func,
    -                        WaitForCallbackConfig.builder().build())
    -                .get();
    -    }
    -
    -    /** Executes a submitter and waits for an external callback using a {@link TypeToken}, blocking until complete. */
    -    default <T> T waitForCallback(String name, TypeToken<T> resultType, BiConsumer<String, StepContext> func) {
    -        return waitForCallbackAsync(
    -                        name, resultType, func, WaitForCallbackConfig.builder().build())
    -                .get();
    -    }
    -
    -    /** Executes a submitter and waits for an external callback with custom configuration, blocking until complete. */
    -    default <T> T waitForCallback(
    -            String name,
    -            Class<T> resultType,
    -            BiConsumer<String, StepContext> func,
    -            WaitForCallbackConfig waitForCallbackConfig) {
    -        return waitForCallbackAsync(name, TypeToken.get(resultType), func, waitForCallbackConfig)
    -                .get();
    -    }
    -
    -    /** Executes a submitter and waits for an external callback using a {@link TypeToken} and custom configuration. */
    -    default <T> T waitForCallback(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiConsumer<String, StepContext> func,
    -            WaitForCallbackConfig waitForCallbackConfig) {
    -        return waitForCallbackAsync(name, resultType, func, waitForCallbackConfig)
    -                .get();
    -    }
    -
    -    /** Asynchronously executes a submitter and waits for an external callback. */
    -    default <T> DurableFuture<T> waitForCallbackAsync(
    -            String name, Class<T> resultType, BiConsumer<String, StepContext> func) {
    -        return waitForCallbackAsync(
    -                name,
    -                TypeToken.get(resultType),
    -                func,
    -                WaitForCallbackConfig.builder().build());
    -    }
    -
    -    /** Asynchronously executes a submitter and waits for an external callback using a {@link TypeToken}. */
    -    default <T> DurableFuture<T> waitForCallbackAsync(
    -            String name, TypeToken<T> resultType, BiConsumer<String, StepContext> func) {
    -        return waitForCallbackAsync(
    -                name, resultType, func, WaitForCallbackConfig.builder().build());
    -    }
    -
    -    /** Asynchronously executes a submitter and waits for an external callback with custom configuration. */
    -    default <T> DurableFuture<T> waitForCallbackAsync(
    -            String name,
    -            Class<T> resultType,
    -            BiConsumer<String, StepContext> func,
    -            WaitForCallbackConfig waitForCallbackConfig) {
    -        return waitForCallbackAsync(name, TypeToken.get(resultType), func, waitForCallbackConfig);
    -    }
    -
    -    /**
    -     * Asynchronously executes a submitter and waits for an external callback using a {@link TypeToken} and custom
    -     * configuration.
    -     *
    -     * <p>This is the core waitForCallbackAsync implementation. All other waitForCallback/waitForCallbackAsync overloads
    -     * delegate here. Internally creates a child context containing a callback operation and a step that runs the
    -     * submitter function.
    -     *
    -     * @param <T> the result type
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic result types
    -     * @param func the submitter function, receiving the callback ID and a {@link StepContext}
    -     * @param waitForCallbackConfig the configuration for both the callback and submitter step
    -     * @return a future representing the callback result
    -     */
    -    <T> DurableFuture<T> waitForCallbackAsync(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiConsumer<String, StepContext> func,
    -            WaitForCallbackConfig waitForCallbackConfig);
    -
    -    /**
    -     * Polls a condition function until it signals done, blocking until complete.
    -     *
    -     * @param <T> the type of state being polled
    -     * @param name the unique operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param checkFunc the function that evaluates the condition and returns a {@link WaitForConditionResult}
    -     * @return the final state value when the condition is met
    -     */
    -    default <T> T waitForCondition(
    -            String name, Class<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
    -        return waitForConditionAsync(
    -                        name,
    -                        TypeToken.get(resultType),
    -                        checkFunc,
    -                        WaitForConditionConfig.<T>builder().build())
    -                .get();
    -    }
    -
    -    /** Polls a condition function until it signals done, using a custom configuration, blocking until complete. */
    -    default <T> T waitForCondition(
    -            String name,
    -            Class<T> resultType,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            WaitForConditionConfig<T> config) {
    -        return waitForConditionAsync(name, resultType, checkFunc, config).get();
    -    }
    -
    -    /** Polls a condition function until it signals done, using a {@link TypeToken}, blocking until complete. */
    -    default <T> T waitForCondition(
    -            String name, TypeToken<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
    -        return waitForConditionAsync(
    -                        name,
    -                        resultType,
    -                        checkFunc,
    -                        WaitForConditionConfig.<T>builder().build())
    -                .get();
    -    }
    -
    -    /**
    -     * Polls a condition function until it signals done, using a {@link TypeToken} and custom configuration, blocking
    -     * until complete.
    -     */
    -    default <T> T waitForCondition(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            WaitForConditionConfig<T> config) {
    -        return waitForConditionAsync(name, resultType, checkFunc, config).get();
    -    }
    -
    -    /** Asynchronously polls a condition function until it signals done. */
    -    default <T> DurableFuture<T> waitForConditionAsync(
    -            String name, Class<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
    -        return waitForConditionAsync(
    -                name,
    -                TypeToken.get(resultType),
    -                checkFunc,
    -                WaitForConditionConfig.<T>builder().build());
    -    }
    -
    -    /** Asynchronously polls a condition function until it signals done, using custom configuration. */
    -    default <T> DurableFuture<T> waitForConditionAsync(
    -            String name,
    -            Class<T> resultType,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            WaitForConditionConfig<T> config) {
    -        return waitForConditionAsync(name, TypeToken.get(resultType), checkFunc, config);
    -    }
    -
    -    /** Asynchronously polls a condition function until it signals done, using a {@link TypeToken}. */
    -    default <T> DurableFuture<T> waitForConditionAsync(
    -            String name, TypeToken<T> resultType, BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc) {
    -        return waitForConditionAsync(
    -                name, resultType, checkFunc, WaitForConditionConfig.<T>builder().build());
    -    }
    -
    -    /**
    -     * Asynchronously polls a condition function until it signals done, using a {@link TypeToken} and custom
    -     * configuration.
    -     *
    -     * <p>This is the core waitForConditionAsync implementation. All other waitForCondition/waitForConditionAsync
    -     * overloads delegate here.
    -     *
    -     * @param <T> the type of state being polled
    -     * @param name the unique operation name within this context
    -     * @param resultType the type token for deserialization of generic types
    -     * @param checkFunc the function that evaluates the condition and returns a {@link WaitForConditionResult}
    -     * @param config the waitForCondition configuration (wait strategy, custom SerDes)
    -     * @return a future representing the final state value
    -     */
    -    <T> DurableFuture<T> waitForConditionAsync(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            WaitForConditionConfig<T> config);
    -
    -    /**
    -     * Function applied to each item in a map operation.
    -     *
    -     * <p>Each invocation receives its own {@link DurableContext}, allowing the use of durable operations like
    -     * {@code step()} and {@code wait()} within the function body. The index parameter indicates the item's position in
    -     * the input collection.
    -     *
    -     * @param <I> the input item type
    -     * @param <O> the output result type
    -     */
    -    @FunctionalInterface
    -    interface MapFunction<I, O> {
    -
    -        /**
    -         * Applies this function to the given item.
    -         *
    -         * @param item the input item to process
    -         * @param index the zero-based index of the item in the input collection
    -         * @param context the durable context for this item's execution
    -         * @return the result of processing the item
    -         */
    -        O apply(I item, int index, DurableContext context);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/DurableFuture.java b/sdk/src/main/java/software/amazon/lambda/durable/DurableFuture.java
    deleted file mode 100644
    index 51e7163ef..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/DurableFuture.java
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import java.util.Arrays;
    -import java.util.List;
    -import java.util.concurrent.CompletableFuture;
    -import software.amazon.lambda.durable.operation.BaseDurableOperation;
    -
    -/**
    - * A future representing the result of an asynchronous durable operation.
    - *
    - * <p>Calling {@link #get()} blocks the current thread until the operation completes, which may involve suspension and
    - * replay across Lambda invocations.
    - *
    - * @param <T> the result type
    - */
    -public interface DurableFuture<T> {
    -    /**
    -     * Blocks until the operation completes and returns the result.
    -     *
    -     * <p>This delegates to operation.get() which handles: - Thread deregistration (allows suspension) - Thread
    -     * reactivation (resumes execution) - Result retrieval
    -     *
    -     * @return the operation result
    -     */
    -    T get();
    -
    -    /**
    -     * Waits for all provided futures to complete and returns their results in order.
    -     *
    -     * <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
    -     * waits for all operations to complete. During replay, completed operations return immediately.
    -     *
    -     * @param futures the futures to wait for
    -     * @param <T> the result type of the futures
    -     * @return a list of results in the same order as the input futures
    -     */
    -    @SafeVarargs
    -    static <T> List<T> allOf(DurableFuture<T>... futures) {
    -        return Arrays.stream(futures).map(DurableFuture::get).toList();
    -    }
    -
    -    /**
    -     * Waits for all provided futures to complete and returns their results in order.
    -     *
    -     * <p>The futures are resolved sequentially, but since the underlying operations run concurrently, this effectively
    -     * waits for all operations to complete. During replay, completed operations return immediately.
    -     *
    -     * @param futures the list of futures to wait for
    -     * @param <T> the result type of the futures
    -     * @return a list of results in the same order as the input futures
    -     */
    -    static <T> List<T> allOf(List<DurableFuture<T>> futures) {
    -        return futures.stream().map(DurableFuture::get).toList();
    -    }
    -
    -    /**
    -     * Waits for any of the provided futures to complete and returns its result.
    -     *
    -     * @param futures the futures to wait for
    -     * @return the result of the first future to complete
    -     */
    -    static Object anyOf(DurableFuture<?>... futures) {
    -        return CompletableFuture.anyOf(Arrays.stream(futures)
    -                        .map(f -> ((BaseDurableOperation) f).getCompletionFuture())
    -                        .toArray(CompletableFuture[]::new))
    -                .thenApply(o -> (DurableFuture) o)
    -                .join()
    -                .get();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/DurableHandler.java b/sdk/src/main/java/software/amazon/lambda/durable/DurableHandler.java
    deleted file mode 100644
    index 966960979..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/DurableHandler.java
    +++ /dev/null
    @@ -1,145 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
    -import java.io.IOException;
    -import java.io.InputStream;
    -import java.io.OutputStream;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.execution.DurableExecutor;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.serde.DurableInputOutputSerDes;
    -
    -/**
    - * Abstract base class for Lambda handlers that use durable execution.
    - *
    - * <p>Extend this class and implement {@link #handleRequest(Object, DurableContext)} to build resilient, multi-step
    - * workflows. The handler automatically manages checkpoint-and-replay, input deserialization, and communication with the
    - * Lambda Durable Functions backend.
    - *
    - * @param <I> the input type
    - * @param <O> the output type
    - */
    -public abstract class DurableHandler<I, O> implements RequestStreamHandler {
    -
    -    private final TypeToken<I> inputType;
    -    private final DurableConfig config;
    -    private final DurableInputOutputSerDes serDes = new DurableInputOutputSerDes(); // Internal ObjectMapper
    -    private static final Logger logger = LoggerFactory.getLogger(DurableHandler.class);
    -
    -    protected DurableHandler() {
    -        this.inputType = TypeToken.fromGenericSuperClass(getClass(), 0);
    -        this.config = createConfiguration();
    -    }
    -
    -    /**
    -     * Gets the configuration used by this handler. This allows test frameworks and other tools to access the handler's
    -     * configuration for testing purposes.
    -     *
    -     * <p>DurableConfig is immutable.
    -     *
    -     * @return The DurableConfig instance used by this handler
    -     */
    -    public DurableConfig getConfiguration() {
    -        return config;
    -    }
    -
    -    /**
    -     * Template method for creating configuration. Override this method to provide custom DurableExecutionClient,
    -     * SerDes, or other configuration.
    -     *
    -     * <p>The {@link software.amazon.lambda.durable.client.LambdaDurableFunctionsClient} is a wrapper that customers
    -     * should use to inject their own configured {@link software.amazon.awssdk.services.lambda.LambdaClient}. This
    -     * allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.
    -     *
    -     * <p>Basic example with custom region and credentials:
    -     *
    -     * <pre>{@code
    -     * @Override
    -     * protected DurableConfig createConfiguration() {
    -     *     // Create custom Lambda client with specific configuration
    -     *     var lambdaClient = LambdaClient.builder()
    -     *         .region(Region.US_WEST_2)
    -     *         .credentialsProvider(ProfileCredentialsProvider.create("my-profile"))
    -     *         .build();
    -     *
    -     *     // Wrap the Lambda client with LambdaDurableFunctionsClient
    -     *     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    -     *
    -     *     return DurableConfig.builder()
    -     *         .withDurableExecutionClient(durableClient)
    -     *         .build();
    -     * }
    -     * }</pre>
    -     *
    -     * <p>Advanced example with AWS CRT HTTP Client for high-performance scenarios:
    -     *
    -     * <pre>{@code
    -     * @Override
    -     * protected DurableConfig createConfiguration() {
    -     *     // Configure AWS CRT HTTP Client for optimal performance
    -     *     var crtHttpClient = AwsCrtAsyncHttpClient.builder()
    -     *         .maxConcurrency(50)
    -     *         .connectionTimeout(Duration.ofSeconds(30))
    -     *         .connectionMaxIdleTime(Duration.ofSeconds(60))
    -     *         .build();
    -     *
    -     *     // Create Lambda client with CRT HTTP client
    -     *     var lambdaClient = LambdaClient.builder()
    -     *         .region(Region.US_EAST_1)
    -     *         .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
    -     *         .httpClient(crtHttpClient)
    -     *         .overrideConfiguration(ClientOverrideConfiguration.builder()
    -     *             .retryPolicy(RetryPolicy.builder()
    -     *                 .numRetries(5)
    -     *                 .build())
    -     *             .build())
    -     *         .build();
    -     *
    -     *     // Wrap with LambdaDurableFunctionsClient
    -     *     var durableClient = new LambdaDurableFunctionsClient(lambdaClient);
    -     *
    -     *     return DurableConfig.builder()
    -     *         .withDurableExecutionClient(durableClient)
    -     *         .withSerDes(customSerDes)  // Optional: custom SerDes for user data
    -     *         .withExecutorService(customExecutor)  // Optional: custom thread pool
    -     *         .build();
    -     * }
    -     * }</pre>
    -     *
    -     * @return DurableConfig with desired configuration
    -     */
    -    protected DurableConfig createConfiguration() {
    -        return DurableConfig.defaultConfig();
    -    }
    -
    -    /**
    -     * Reads the request, executes the durable function handler and writes the response
    -     *
    -     * @param inputStream the input stream
    -     * @param outputStream the output stream
    -     * @param context the Lambda context
    -     * @throws IOException thrown when serialize/deserialize fails
    -     */
    -    @Override
    -    public final void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
    -            throws IOException {
    -        var inputString = new String(inputStream.readAllBytes());
    -        logger.debug("Raw input from durable handler: {}", inputString);
    -        var input = serDes.deserialize(inputString, TypeToken.get(DurableExecutionInput.class));
    -        var output = DurableExecutor.execute(input, context, inputType, this::handleRequest, config);
    -        outputStream.write(serDes.serialize(output).getBytes());
    -    }
    -
    -    /**
    -     * Handle the durable execution.
    -     *
    -     * @param input User input
    -     * @param context Durable context for operations
    -     * @return Result
    -     */
    -    public abstract O handleRequest(I input, DurableContext context);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/ParallelDurableFuture.java b/sdk/src/main/java/software/amazon/lambda/durable/ParallelDurableFuture.java
    deleted file mode 100644
    index b71198d7d..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/ParallelDurableFuture.java
    +++ /dev/null
    @@ -1,74 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import java.util.function.Function;
    -import software.amazon.lambda.durable.config.ParallelBranchConfig;
    -import software.amazon.lambda.durable.model.ParallelResult;
    -
    -/** User-facing context for managing parallel branch execution within a durable function. */
    -public interface ParallelDurableFuture extends AutoCloseable, DurableFuture<ParallelResult> {
    -
    -    /**
    -     * Registers and immediately starts a branch (respects maxConcurrency).
    -     *
    -     * @param name the branch name
    -     * @param resultType the result type token for generic types
    -     * @param func the function to execute in the branch's child context
    -     * @param <T> the result type
    -     * @return a {@link DurableFuture} that will contain the branch result
    -     * @throws IllegalStateException if called after {@link #close()}
    -     */
    -    default <T> DurableFuture<T> branch(String name, Class<T> resultType, Function<DurableContext, T> func) {
    -        return branch(
    -                name,
    -                TypeToken.get(resultType),
    -                func,
    -                ParallelBranchConfig.builder().build());
    -    }
    -
    -    /**
    -     * Registers and immediately starts a branch (respects maxConcurrency).
    -     *
    -     * @param name the branch name
    -     * @param resultType the result type token for generic types
    -     * @param func the function to execute in the branch's child context
    -     * @param <T> the result type
    -     * @return a {@link DurableFuture} that will contain the branch result
    -     * @throws IllegalStateException if called after {@link #close()}
    -     */
    -    default <T> DurableFuture<T> branch(String name, TypeToken<T> resultType, Function<DurableContext, T> func) {
    -        return branch(name, resultType, func, ParallelBranchConfig.builder().build());
    -    }
    -
    -    /**
    -     * Registers and immediately starts a branch (respects maxConcurrency).
    -     *
    -     * @param name the branch name
    -     * @param resultType the result type token for generic types
    -     * @param func the function to execute in the branch's child context
    -     * @param <T> the result type
    -     * @return a {@link DurableFuture} that will contain the branch result
    -     * @throws IllegalStateException if called after {@link #close()}
    -     */
    -    default <T> DurableFuture<T> branch(
    -            String name, Class<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config) {
    -        return branch(name, TypeToken.get(resultType), func, config);
    -    }
    -
    -    /**
    -     * Registers and immediately starts a branch (respects maxConcurrency).
    -     *
    -     * @param name the branch name
    -     * @param resultType the result type token for generic types
    -     * @param func the function to execute in the branch's child context
    -     * @param <T> the result type
    -     * @return a {@link DurableFuture} that will contain the branch result
    -     * @throws IllegalStateException if called after {@link #close()}
    -     */
    -    <T> DurableFuture<T> branch(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config);
    -
    -    /** Calls {@link #get()} if not already called. Guarantees that the context is closed. */
    -    void close();
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/StepContext.java b/sdk/src/main/java/software/amazon/lambda/durable/StepContext.java
    deleted file mode 100644
    index 35e24b6fa..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/StepContext.java
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import software.amazon.lambda.durable.context.BaseContext;
    -
    -public interface StepContext extends BaseContext {
    -    /** Returns the current retry attempt number (0-based). */
    -    int getAttempt();
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/TypeToken.java b/sdk/src/main/java/software/amazon/lambda/durable/TypeToken.java
    deleted file mode 100644
    index 78c9ded2f..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/TypeToken.java
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import java.lang.reflect.ParameterizedType;
    -import java.lang.reflect.Type;
    -
    -/**
    - * Framework-agnostic type token for capturing generic type information at runtime.
    - *
    - * <p>This class enables type-safe deserialization of complex generic types like {@code List<MyObject>} or
    - * {@code Map<String, MyObject>} that would otherwise lose their type information due to Java's type erasure.
    - *
    - * <p>Usage example:
    - *
    - * <pre>{@code
    - * // Capture generic type information
    - * TypeToken<List<String>> token = new TypeToken<List<String>>() {};
    - *
    - * // Use with DurableContext
    - * List<String> items = context.step("fetch-items",
    - *     new TypeToken<List<String>>() {},
    - *     stepCtx -> fetchItems());
    - * }</pre>
    - *
    - * @param <T> the type being captured
    - */
    -public abstract class TypeToken<T> {
    -    private final Type type;
    -
    -    /**
    -     * Constructs a new TypeToken. This constructor must be called from an anonymous subclass to capture the type
    -     * parameter.
    -     *
    -     * @throws IllegalStateException if created without a type parameter
    -     */
    -    protected TypeToken() {
    -        Type superClass = getClass().getGenericSuperclass();
    -        if (superClass instanceof ParameterizedType parameterizedType) {
    -            this.type = parameterizedType.getActualTypeArguments()[0];
    -        } else {
    -            throw new IllegalStateException("TypeToken must be created as an anonymous subclass with a type parameter. "
    -                    + "Example: new TypeToken<List<String>>() {}");
    -        }
    -    }
    -
    -    private TypeToken(Type type) {
    -        this.type = type;
    -    }
    -
    -    /**
    -     * Creates a TypeToken for a simple (non-generic) class.
    -     *
    -     * @param clazz the class to create a token for
    -     * @param <U> the type
    -     * @return a TypeToken representing the given class
    -     */
    -    public static <U> TypeToken<U> get(Class<U> clazz) {
    -        return new TypeToken<>(clazz) {};
    -    }
    -
    -    /**
    -     * Creates a TypeToken by extracting a type parameter from a generic superclass.
    -     *
    -     * @param clazz the subclass to extract the type from
    -     * @param typeParameterPosition the position of the type parameter in the superclass declaration (0-based)
    -     * @param <U> the type to extract
    -     * @param <V> the superclass type
    -     * @return a TypeToken representing the extracted type
    -     */
    -    static <U, V> TypeToken<U> fromGenericSuperClass(Class<V> clazz, int typeParameterPosition) {
    -        // Extract input type from generic superclass
    -        var superClass = clazz.getGenericSuperclass();
    -        if (superClass instanceof ParameterizedType paramType) {
    -            return new TypeToken<>(paramType.getActualTypeArguments()[typeParameterPosition]) {};
    -        } else {
    -            throw new IllegalArgumentException("Cannot determine type from base class: " + clazz);
    -        }
    -    }
    -
    -    /**
    -     * Returns the captured type.
    -     *
    -     * @return the type represented by this token
    -     */
    -    public Type getType() {
    -        return type;
    -    }
    -
    -    @Override
    -    public boolean equals(Object obj) {
    -        if (this == obj) {
    -            return true;
    -        }
    -        if (obj instanceof TypeToken<?> other) {
    -            return type.equals(other.type);
    -        }
    -        return false;
    -    }
    -
    -    @Override
    -    public int hashCode() {
    -        return type.hashCode();
    -    }
    -
    -    @Override
    -    public String toString() {
    -        return "TypeToken<" + type.getTypeName() + ">";
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/client/DurableExecutionClient.java b/sdk/src/main/java/software/amazon/lambda/durable/client/DurableExecutionClient.java
    deleted file mode 100644
    index bf8b6485b..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/client/DurableExecutionClient.java
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.client;
    -
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -
    -/**
    - * Client interface for communicating with the Lambda Durable Functions backend.
    - *
    - * <p>Provides checkpoint and state-retrieval operations used internally by the SDK.
    - */
    -public interface DurableExecutionClient {
    -
    -    /**
    -     * Sends a batch of operation updates to the backend.
    -     *
    -     * @param arn the durable execution ARN
    -     * @param token the checkpoint token
    -     * @param updates the operation updates to send
    -     * @return the checkpoint response
    -     */
    -    CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates);
    -
    -    /**
    -     * Retrieves the current execution state from the backend.
    -     *
    -     * @param arn the durable execution ARN
    -     * @param checkpointToken the checkpoint token
    -     * @param marker pagination marker, or null for the first page
    -     * @return the execution state response
    -     */
    -    GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.java b/sdk/src/main/java/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.java
    deleted file mode 100644
    index 7e7c773bc..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/client/LambdaDurableFunctionsClient.java
    +++ /dev/null
    @@ -1,55 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.client;
    -
    -import java.util.List;
    -import java.util.Objects;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionRequest;
    -import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -
    -/**
    - * Default implementation of {@link DurableExecutionClient} backed by the AWS Lambda SDK client.
    - *
    - * <p>Translates SDK-level checkpoint and state-retrieval calls into the corresponding {@link LambdaClient} API
    - * requests.
    - */
    -public class LambdaDurableFunctionsClient implements DurableExecutionClient {
    -
    -    private final LambdaClient lambdaClient;
    -
    -    /**
    -     * Creates a LambdaDurableFunctionsClient with the provided LambdaClient.
    -     *
    -     * @param lambdaClient LambdaClient instance to use for backend communication
    -     * @throws NullPointerException if lambdaClient is null
    -     */
    -    public LambdaDurableFunctionsClient(LambdaClient lambdaClient) {
    -        this.lambdaClient = Objects.requireNonNull(lambdaClient, "LambdaClient cannot be null");
    -    }
    -
    -    @Override
    -    public CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates) {
    -        var request = CheckpointDurableExecutionRequest.builder()
    -                .durableExecutionArn(arn)
    -                .checkpointToken(token)
    -                .updates(updates)
    -                .build();
    -
    -        return lambdaClient.checkpointDurableExecution(request);
    -    }
    -
    -    @Override
    -    public GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker) {
    -        var request = GetDurableExecutionStateRequest.builder()
    -                .durableExecutionArn(arn)
    -                .checkpointToken(checkpointToken)
    -                .marker(marker)
    -                .build();
    -
    -        return lambdaClient.getDurableExecutionState(request);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/CallbackConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/CallbackConfig.java
    deleted file mode 100644
    index a71962aff..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/CallbackConfig.java
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.util.ParameterValidator;
    -
    -/** Configuration for callback operations. */
    -public class CallbackConfig {
    -    private final Duration timeout;
    -    private final Duration heartbeatTimeout;
    -    private final SerDes serDes;
    -
    -    private CallbackConfig(Builder builder) {
    -        this.timeout = builder.timeout;
    -        this.heartbeatTimeout = builder.heartbeatTimeout;
    -        this.serDes = builder.serDes;
    -    }
    -
    -    /**
    -     * Returns the maximum duration to wait for the callback to complete.
    -     *
    -     * @return the timeout duration, or null if not specified
    -     */
    -    public Duration timeout() {
    -        return timeout;
    -    }
    -
    -    /**
    -     * Returns the maximum duration between heartbeats before the callback is considered failed.
    -     *
    -     * @return the heartbeat timeout duration, or null if not specified
    -     */
    -    public Duration heartbeatTimeout() {
    -        return heartbeatTimeout;
    -    }
    -
    -    /** Returns the custom serializer for this callback, or null if not specified (uses default SerDes). */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    /** Creates a new builder with default values. */
    -    public static Builder builder() {
    -        return new Builder(null, null, null);
    -    }
    -
    -    /** Creates a new builder pre-populated with this config's values. */
    -    public Builder toBuilder() {
    -        return new Builder(timeout, heartbeatTimeout, serDes);
    -    }
    -
    -    /** Builder for {@link CallbackConfig}. */
    -    public static class Builder {
    -        private Duration timeout;
    -        private Duration heartbeatTimeout;
    -        private SerDes serDes;
    -
    -        public Builder(Duration timeout, Duration heartbeatTimeout, SerDes serDes) {
    -            this.timeout = timeout;
    -            this.heartbeatTimeout = heartbeatTimeout;
    -            this.serDes = serDes;
    -        }
    -
    -        /**
    -         * Sets the maximum duration to wait for the callback to complete before timing out.
    -         *
    -         * @param timeout the timeout duration
    -         * @return this builder for method chaining
    -         */
    -        public Builder timeout(Duration timeout) {
    -            ParameterValidator.validateOptionalDuration(timeout, "Callback timeout");
    -            this.timeout = timeout;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the maximum duration between heartbeats before the callback is considered failed.
    -         *
    -         * @param heartbeatTimeout the heartbeat timeout duration
    -         * @return this builder for method chaining
    -         */
    -        public Builder heartbeatTimeout(Duration heartbeatTimeout) {
    -            ParameterValidator.validateOptionalDuration(heartbeatTimeout, "Heartbeat timeout");
    -            this.heartbeatTimeout = heartbeatTimeout;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the callback.
    -         *
    -         * <p>If not specified, the callback will use the default SerDes configured for the handler. This allows
    -         * per-callback customization of serialization behavior, useful for callbacks that need special handling (e.g.,
    -         * custom date formats, encryption, compression).
    -         *
    -         * @param serDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        /** Builds the {@link CallbackConfig} instance. */
    -        public CallbackConfig build() {
    -            return new CallbackConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/CompletionConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/CompletionConfig.java
    deleted file mode 100644
    index bca1c4ecf..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/CompletionConfig.java
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -/**
    - * Controls when a concurrent operation (map or parallel) completes.
    - *
    - * <p>Provides factory methods for common completion strategies and fine-grained control via {@code minSuccessful},
    - * {@code toleratedFailureCount}, and {@code toleratedFailurePercentage}.
    - */
    -public record CompletionConfig(
    -        Integer minSuccessful, Integer toleratedFailureCount, Double toleratedFailurePercentage) {
    -
    -    /** All items must succeed. Zero failures tolerated. */
    -    public static CompletionConfig allSuccessful() {
    -        return new CompletionConfig(null, 0, null);
    -    }
    -
    -    /** All items run regardless of failures. Failures captured per-item. */
    -    public static CompletionConfig allCompleted() {
    -        return new CompletionConfig(null, null, null);
    -    }
    -
    -    /** Complete as soon as the first item succeeds. */
    -    public static CompletionConfig firstSuccessful() {
    -        return new CompletionConfig(1, null, null);
    -    }
    -
    -    /** Complete when the specified number of items have succeeded. */
    -    public static CompletionConfig minSuccessful(int count) {
    -        if (count < 1) {
    -            throw new IllegalArgumentException("minSuccessful must be at least 1, got: " + count);
    -        }
    -        return new CompletionConfig(count, null, null);
    -    }
    -
    -    /** Complete when more than the specified number of failures have occurred. */
    -    public static CompletionConfig toleratedFailureCount(int count) {
    -        if (count < 0) {
    -            throw new IllegalArgumentException("toleratedFailureCount must be non-negative, got: " + count);
    -        }
    -        return new CompletionConfig(null, count, null);
    -    }
    -
    -    /** Complete when the failure percentage exceeds the specified threshold (0.0 to 1.0). */
    -    public static CompletionConfig toleratedFailurePercentage(double percentage) {
    -        if (percentage < 0.0 || percentage > 1.0) {
    -            throw new IllegalArgumentException(
    -                    "toleratedFailurePercentage must be between 0.0 and 1.0, got: " + percentage);
    -        }
    -        return new CompletionConfig(null, null, percentage);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/InvokeConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/InvokeConfig.java
    deleted file mode 100644
    index e9dc7af24..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/InvokeConfig.java
    +++ /dev/null
    @@ -1,108 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration for chained invoke operations.
    - *
    - * <p>Controls serialization of the invoke payload and result, and optionally specifies a tenant ID.
    - */
    -public class InvokeConfig {
    -    private final SerDes payloadSerDes;
    -    private final SerDes resultSerDes;
    -    private final String tenantId;
    -
    -    public InvokeConfig(Builder builder) {
    -        this.payloadSerDes = builder.payloadSerDes;
    -        this.resultSerDes = builder.resultSerDes;
    -        this.tenantId = builder.tenantId;
    -    }
    -
    -    public SerDes payloadSerDes() {
    -        return this.payloadSerDes;
    -    }
    -
    -    public SerDes serDes() {
    -        return this.resultSerDes;
    -    }
    -
    -    public String tenantId() {
    -        return tenantId;
    -    }
    -
    -    public static Builder builder() {
    -        return new Builder(null, null, null);
    -    }
    -
    -    public Builder toBuilder() {
    -        return new Builder(payloadSerDes, resultSerDes, tenantId);
    -    }
    -
    -    /** Builder for creating InvokeConfig instances. */
    -    public static class Builder {
    -        private SerDes payloadSerDes;
    -        private SerDes resultSerDes;
    -        private String tenantId;
    -
    -        private Builder(SerDes payloadSerDes, SerDes resultSerDes, String tenantId) {
    -            this.payloadSerDes = payloadSerDes;
    -            this.resultSerDes = resultSerDes;
    -            this.tenantId = tenantId;
    -        }
    -
    -        /**
    -         * Sets the tenant ID for the invoke operation.
    -         *
    -         * <p>The tenant ID is used to isolate execution state for different tenants. It's required when invoking
    -         * multi-tenant functions.
    -         *
    -         * @param tenantId the tenant ID to use
    -         * @return this builder for method chaining
    -         */
    -        public Builder tenantId(String tenantId) {
    -            this.tenantId = tenantId;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the invoke operation payload.
    -         *
    -         * <p>If not specified, the invoke operation will use the default SerDes configured for the handler. This allows
    -         * per-invoke customization of serialization behavior, useful for invoke operations that need special handling
    -         * (e.g., custom date formats, encryption, compression).
    -         *
    -         * @param payloadSerDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder payloadSerDes(SerDes payloadSerDes) {
    -            this.payloadSerDes = payloadSerDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the invoke result.
    -         *
    -         * <p>If not specified, the invoke will use the default SerDes configured for the handler. This allows
    -         * per-invoke customization of serialization behavior, useful for invoke operations that need special handling
    -         * (e.g., custom date formats, encryption, compression).
    -         *
    -         * @param resultSerDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes resultSerDes) {
    -            this.resultSerDes = resultSerDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the InvokeConfig instance.
    -         *
    -         * @return a new InvokeConfig with the configured options
    -         */
    -        public InvokeConfig build() {
    -            return new InvokeConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/MapConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/MapConfig.java
    deleted file mode 100644
    index 7ca0e9b27..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/MapConfig.java
    +++ /dev/null
    @@ -1,93 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration for map operations.
    - *
    - * <p>Defaults to lenient completion (all items run regardless of failures) and unlimited concurrency.
    - */
    -public class MapConfig {
    -    private final Integer maxConcurrency;
    -    private final CompletionConfig completionConfig;
    -    private final SerDes serDes;
    -
    -    private MapConfig(Builder builder) {
    -        this.maxConcurrency = builder.maxConcurrency == null ? Integer.MAX_VALUE : builder.maxConcurrency;
    -        this.completionConfig =
    -                builder.completionConfig == null ? CompletionConfig.allCompleted() : builder.completionConfig;
    -        this.serDes = builder.serDes;
    -    }
    -
    -    /** @return max concurrent items, or null for unlimited */
    -    public Integer maxConcurrency() {
    -        return maxConcurrency;
    -    }
    -
    -    /** @return completion criteria, defaults to {@link CompletionConfig#allCompleted()} */
    -    public CompletionConfig completionConfig() {
    -        return completionConfig;
    -    }
    -
    -    /** @return the custom serializer, or null to use the default */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    public static Builder builder() {
    -        return new Builder(null, null, null);
    -    }
    -
    -    public Builder toBuilder() {
    -        return new Builder(maxConcurrency, completionConfig, serDes);
    -    }
    -
    -    /** Builder for creating MapConfig instances. */
    -    public static class Builder {
    -        private Integer maxConcurrency;
    -        private CompletionConfig completionConfig;
    -        private SerDes serDes;
    -
    -        private Builder(Integer maxConcurrency, CompletionConfig completionConfig, SerDes serDes) {
    -            this.maxConcurrency = maxConcurrency;
    -            this.completionConfig = completionConfig;
    -            this.serDes = serDes;
    -        }
    -
    -        public Builder maxConcurrency(Integer maxConcurrency) {
    -            if (maxConcurrency != null && maxConcurrency < 1) {
    -                throw new IllegalArgumentException("maxConcurrency must be at least 1, got: " + maxConcurrency);
    -            }
    -            this.maxConcurrency = maxConcurrency;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the completion criteria for the map operation.
    -         *
    -         * @param completionConfig the completion configuration (default: {@link CompletionConfig#allCompleted()})
    -         * @return this builder for method chaining
    -         */
    -        public Builder completionConfig(CompletionConfig completionConfig) {
    -            this.completionConfig = completionConfig;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the custom serializer to use for serializing map items and results.
    -         *
    -         * @param serDes the serializer to use
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        public MapConfig build() {
    -            return new MapConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelBranchConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelBranchConfig.java
    deleted file mode 100644
    index 689f9aa54..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelBranchConfig.java
    +++ /dev/null
    @@ -1,69 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration options for parallel branch in durable executions.
    - *
    - * <p>This class provides a builder pattern for configuring various aspects of parallel branch execution
    - */
    -public class ParallelBranchConfig {
    -    private final SerDes serDes;
    -
    -    private ParallelBranchConfig(Builder builder) {
    -        this.serDes = builder.serDes;
    -    }
    -
    -    /** Returns the custom serializer for this step, or null if not specified (uses default SerDes). */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    public Builder toBuilder() {
    -        return new Builder(serDes);
    -    }
    -
    -    /**
    -     * Creates a new builder for ParallelBranchConfig.
    -     *
    -     * @return a new Builder instance
    -     */
    -    public static Builder builder() {
    -        return new Builder(null);
    -    }
    -
    -    /** Builder for creating StepConfig instances. */
    -    public static class Builder {
    -        private SerDes serDes;
    -
    -        public Builder(SerDes serDes) {
    -            this.serDes = serDes;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the step.
    -         *
    -         * <p>If not specified, the parallel branch will use the default SerDes configured for the handler. This allows
    -         * per-branch customization of serialization behavior, useful for branches that need special handling (e.g.,
    -         * custom date formats, encryption, compression).
    -         *
    -         * @param serDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the ParallelBranchConfig instance.
    -         *
    -         * @return a new StepConfig with the configured options
    -         */
    -        public ParallelBranchConfig build() {
    -            return new ParallelBranchConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelConfig.java
    deleted file mode 100644
    index 3371be21b..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/ParallelConfig.java
    +++ /dev/null
    @@ -1,84 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -/**
    - * Configuration options for parallel operations in durable executions.
    - *
    - * <p>This class provides a builder pattern for configuring concurrency limits and completion semantics for parallel
    - * branch execution.
    - */
    -public class ParallelConfig {
    -    private final int maxConcurrency;
    -    private final CompletionConfig completionConfig;
    -
    -    private ParallelConfig(Builder builder) {
    -        this.maxConcurrency = builder.maxConcurrency == null ? Integer.MAX_VALUE : builder.maxConcurrency;
    -        this.completionConfig =
    -                builder.completionConfig == null ? CompletionConfig.allCompleted() : builder.completionConfig;
    -    }
    -
    -    /** @return the maximum number of branches running simultaneously, or -1 for unlimited */
    -    public int maxConcurrency() {
    -        return maxConcurrency;
    -    }
    -
    -    public CompletionConfig completionConfig() {
    -        return completionConfig;
    -    }
    -
    -    /**
    -     * Creates a new builder for ParallelConfig.
    -     *
    -     * @return a new Builder instance
    -     */
    -    public static Builder builder() {
    -        return new Builder();
    -    }
    -
    -    /** Builder for creating ParallelConfig instances. */
    -    public static class Builder {
    -        private Integer maxConcurrency;
    -        private CompletionConfig completionConfig;
    -
    -        private Builder() {}
    -
    -        /**
    -         * Sets the maximum number of branches that can run simultaneously.
    -         *
    -         * @param maxConcurrency the concurrency limit (default: unlimited)
    -         * @return this builder for method chaining
    -         */
    -        public Builder maxConcurrency(Integer maxConcurrency) {
    -            if (maxConcurrency != null && maxConcurrency < 1) {
    -                throw new IllegalArgumentException("maxConcurrency must be at least 1, got: " + maxConcurrency);
    -            }
    -            this.maxConcurrency = maxConcurrency;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the maximum number of branches that can run simultaneously.
    -         *
    -         * @param completionConfig the completion configuration for the parallel operation
    -         * @return this builder for method chaining
    -         */
    -        public Builder completionConfig(CompletionConfig completionConfig) {
    -            if (completionConfig != null && completionConfig.toleratedFailurePercentage() != null) {
    -                throw new IllegalArgumentException("ParallelConfig does not support toleratedFailurePercentage");
    -            }
    -            this.completionConfig = completionConfig;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the ParallelConfig instance.
    -         *
    -         * @return a new ParallelConfig with the configured options
    -         * @throws IllegalArgumentException if any configuration values are invalid
    -         */
    -        public ParallelConfig build() {
    -            return new ParallelConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/RunInChildContextConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/RunInChildContextConfig.java
    deleted file mode 100644
    index 7eb42cbaf..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/RunInChildContextConfig.java
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration options for RunInChildContext operations in durable executions.
    - *
    - * <p>This class provides a builder pattern for configuring various aspects of RunInChildContext execution.
    - */
    -public class RunInChildContextConfig {
    -    private final SerDes serDes;
    -
    -    private RunInChildContextConfig(Builder builder) {
    -        this.serDes = builder.serDes;
    -    }
    -
    -    /**
    -     * Returns the custom serializer for this RunInChildContext operation, or null if not specified (uses default
    -     * SerDes).
    -     */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    public Builder toBuilder() {
    -        return new Builder(serDes);
    -    }
    -
    -    /**
    -     * Creates a new builder for RunInChildContextConfig.
    -     *
    -     * @return a new Builder instance
    -     */
    -    public static Builder builder() {
    -        return new Builder(null);
    -    }
    -
    -    /** Builder for creating StepConfig instances. */
    -    public static class Builder {
    -        private SerDes serDes;
    -
    -        public Builder(SerDes serDes) {
    -            this.serDes = serDes;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the step.
    -         *
    -         * <p>If not specified, the RunInChildContext operation will use the default SerDes configured for the handler.
    -         * This allows per-operation customization of serialization behavior, useful for operations that need special
    -         * handling (e.g., custom date formats, encryption, compression).
    -         *
    -         * @param serDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the RunInChildContextConfig instance.
    -         *
    -         * @return a new StepConfig with the configured options
    -         */
    -        public RunInChildContextConfig build() {
    -            return new RunInChildContextConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/StepConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/StepConfig.java
    deleted file mode 100644
    index 8eada6faf..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/StepConfig.java
    +++ /dev/null
    @@ -1,112 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -import software.amazon.lambda.durable.retry.RetryStrategy;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration options for step operations in durable executions.
    - *
    - * <p>This class provides a builder pattern for configuring various aspects of step execution, including retry behavior
    - * and delivery semantics.
    - */
    -public class StepConfig {
    -    private final RetryStrategy retryStrategy;
    -    private final StepSemantics semantics;
    -    private final SerDes serDes;
    -
    -    private StepConfig(Builder builder) {
    -        this.retryStrategy = builder.retryStrategy;
    -        this.semantics = builder.semantics;
    -        this.serDes = builder.serDes;
    -    }
    -
    -    /** Returns the retry strategy for this step, or the default strategy if not specified. */
    -    public RetryStrategy retryStrategy() {
    -        return retryStrategy != null ? retryStrategy : RetryStrategies.Presets.DEFAULT;
    -    }
    -
    -    /** Returns the delivery semantics for this step, defaults to AT_LEAST_ONCE_PER_RETRY if not specified. */
    -    public StepSemantics semantics() {
    -        return semantics != null ? semantics : StepSemantics.AT_LEAST_ONCE_PER_RETRY;
    -    }
    -
    -    /** Returns the custom serializer for this step, or null if not specified (uses default SerDes). */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    public Builder toBuilder() {
    -        return new Builder(retryStrategy, semantics, serDes);
    -    }
    -
    -    /**
    -     * Creates a new builder for StepConfig.
    -     *
    -     * @return a new Builder instance
    -     */
    -    public static Builder builder() {
    -        return new Builder(null, null, null);
    -    }
    -
    -    /** Builder for creating StepConfig instances. */
    -    public static class Builder {
    -        private RetryStrategy retryStrategy;
    -        private StepSemantics semantics;
    -        private SerDes serDes;
    -
    -        public Builder(RetryStrategy retryStrategy, StepSemantics semantics, SerDes serDes) {
    -            this.retryStrategy = retryStrategy;
    -            this.semantics = semantics;
    -            this.serDes = serDes;
    -        }
    -
    -        /**
    -         * Sets the retry strategy for the step.
    -         *
    -         * @param retryStrategy the retry strategy to use, or null for default behavior
    -         * @return this builder for method chaining
    -         */
    -        public Builder retryStrategy(RetryStrategy retryStrategy) {
    -            this.retryStrategy = retryStrategy;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the delivery semantics for the step.
    -         *
    -         * @param semantics the delivery semantics to use, defaults to AT_LEAST_ONCE_PER_RETRY if not specified
    -         * @return this builder for method chaining
    -         */
    -        public Builder semantics(StepSemantics semantics) {
    -            this.semantics = semantics;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the step.
    -         *
    -         * <p>If not specified, the step will use the default SerDes configured for the handler. This allows per-step
    -         * customization of serialization behavior, useful for steps that need special handling (e.g., custom date
    -         * formats, encryption, compression).
    -         *
    -         * @param serDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Builds the StepConfig instance.
    -         *
    -         * @return a new StepConfig with the configured options
    -         */
    -        public StepConfig build() {
    -            return new StepConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/StepSemantics.java b/sdk/src/main/java/software/amazon/lambda/durable/config/StepSemantics.java
    deleted file mode 100644
    index fc23ab3c7..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/StepSemantics.java
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -/**
    - * Delivery semantics for step operations.
    - *
    - * <p>Controls how the SDK handles step execution and interruption recovery.
    - */
    -public enum StepSemantics {
    -    /**
    -     * At-least-once delivery (default). The step may be re-executed if interrupted. START checkpoint is
    -     * fire-and-forget.
    -     */
    -    AT_LEAST_ONCE_PER_RETRY,
    -
    -    /**
    -     * At-most-once delivery per retry attempt. The step will not be re-executed if interrupted. START checkpoint is
    -     * awaited before user code runs. If interrupted, throws
    -     * {@link software.amazon.lambda.durable.exception.StepInterruptedException}.
    -     */
    -    AT_MOST_ONCE_PER_RETRY
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForCallbackConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForCallbackConfig.java
    deleted file mode 100644
    index e3bd57f44..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForCallbackConfig.java
    +++ /dev/null
    @@ -1,75 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -/**
    - * Configuration for the {@code waitForCallback} composite operation.
    - *
    - * <p>Combines a {@link StepConfig} (for the step that produces the callback) and a {@link CallbackConfig} (for the
    - * callback wait itself).
    - */
    -public class WaitForCallbackConfig {
    -    private final StepConfig stepConfig;
    -    private final CallbackConfig callbackConfig;
    -
    -    private WaitForCallbackConfig(Builder builder) {
    -        this.stepConfig = builder.stepConfig == null ? StepConfig.builder().build() : builder.stepConfig;
    -        this.callbackConfig =
    -                builder.callbackConfig == null ? CallbackConfig.builder().build() : builder.callbackConfig;
    -    }
    -
    -    /** Returns the step configuration for the composite operation. */
    -    public StepConfig stepConfig() {
    -        return stepConfig;
    -    }
    -
    -    /** Returns the callback configuration for the composite operation. */
    -    public CallbackConfig callbackConfig() {
    -        return callbackConfig;
    -    }
    -
    -    /** Creates a new builder. */
    -    public static Builder builder() {
    -        return new Builder();
    -    }
    -
    -    /** Creates a builder pre-populated with this instance's values. */
    -    public Builder toBuilder() {
    -        return new Builder().stepConfig(this.stepConfig).callbackConfig(this.callbackConfig);
    -    }
    -
    -    /** Builder for {@link WaitForCallbackConfig}. */
    -    public static class Builder {
    -        private StepConfig stepConfig;
    -        private CallbackConfig callbackConfig;
    -
    -        public Builder() {}
    -
    -        /**
    -         * Sets the step configuration for the composite operation.
    -         *
    -         * @param stepConfig the step configuration
    -         * @return this builder for method chaining
    -         */
    -        public Builder stepConfig(StepConfig stepConfig) {
    -            this.stepConfig = stepConfig;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the callback configuration for the composite operation.
    -         *
    -         * @param callbackConfig the callback configuration
    -         * @return this builder for method chaining
    -         */
    -        public Builder callbackConfig(CallbackConfig callbackConfig) {
    -            this.callbackConfig = callbackConfig;
    -            return this;
    -        }
    -
    -        /** Builds the WaitForCallbackConfig instance. */
    -        public WaitForCallbackConfig build() {
    -            return new WaitForCallbackConfig(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForConditionConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForConditionConfig.java
    deleted file mode 100644
    index 1561199f9..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/config/WaitForConditionConfig.java
    +++ /dev/null
    @@ -1,118 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy;
    -import software.amazon.lambda.durable.retry.WaitStrategies;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Configuration for {@code waitForCondition} operations.
    - *
    - * <p>Holds only optional parameters for a waitForCondition call. Use {@link #builder()} to create instances.
    - *
    - * @param <T> the type of state being polled
    - */
    -public class WaitForConditionConfig<T> {
    -    private final WaitForConditionWaitStrategy<T> waitStrategy;
    -    private final SerDes serDes;
    -    private final T initialState;
    -
    -    private WaitForConditionConfig(Builder<T> builder) {
    -        this.waitStrategy = builder.waitStrategy;
    -        this.serDes = builder.serDes;
    -        this.initialState = builder.initialState;
    -    }
    -
    -    /**
    -     * Returns the wait strategy that controls polling behavior. If no strategy was explicitly set, returns the default
    -     * strategy from {@link WaitStrategies#defaultStrategy()}.
    -     */
    -    public WaitForConditionWaitStrategy<T> waitStrategy() {
    -        return waitStrategy != null ? waitStrategy : WaitStrategies.defaultStrategy();
    -    }
    -
    -    /** Returns the custom serializer, or null if not specified (uses default SerDes). */
    -    public SerDes serDes() {
    -        return serDes;
    -    }
    -
    -    /** Returns the initial state object, or null if not specified. */
    -    public T initialState() {
    -        return initialState;
    -    }
    -
    -    /**
    -     * Returns a new builder initialized with the values from this config. Useful internally for injecting default
    -     * SerDes.
    -     *
    -     * @return a new builder pre-populated with this config's values
    -     */
    -    public Builder<T> toBuilder() {
    -        var b = new Builder<T>();
    -        b.waitStrategy = this.waitStrategy;
    -        b.serDes = this.serDes;
    -        b.initialState = this.initialState;
    -        return b;
    -    }
    -
    -    /**
    -     * Creates a new builder for {@code WaitForConditionConfig}. All fields are optional.
    -     *
    -     * @param <T> the type of state being polled
    -     * @return a new builder instance
    -     */
    -    public static <T> Builder<T> builder() {
    -        return new Builder<>();
    -    }
    -
    -    public static class Builder<T> {
    -        private WaitForConditionWaitStrategy<T> waitStrategy;
    -        private SerDes serDes;
    -        private T initialState;
    -
    -        private Builder() {}
    -
    -        /**
    -         * Sets the wait strategy for the waitForCondition operation.
    -         *
    -         * <p>If not specified, the default exponential backoff strategy from {@link WaitStrategies#defaultStrategy()}
    -         * is used.
    -         *
    -         * @param waitStrategy the strategy controlling polling intervals and termination
    -         * @return this builder for method chaining
    -         */
    -        public Builder<T> waitStrategy(WaitForConditionWaitStrategy<T> waitStrategy) {
    -            this.waitStrategy = waitStrategy;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets a custom serializer for the waitForCondition operation.
    -         *
    -         * <p>If not specified, the operation will use the default SerDes configured for the handler.
    -         *
    -         * @param serDes the custom serializer to use, or null to use the default
    -         * @return this builder for method chaining
    -         */
    -        public Builder<T> serDes(SerDes serDes) {
    -            this.serDes = serDes;
    -            return this;
    -        }
    -
    -        /**
    -         * Sets the initial state for the waitForCondition operation. The initial state will be null if it's not set.
    -         *
    -         * @param initialState the initial state object to pass to the condition function
    -         * @return this builder for method chaining
    -         */
    -        public Builder<T> initialState(T initialState) {
    -            this.initialState = initialState;
    -            return this;
    -        }
    -
    -        public WaitForConditionConfig<T> build() {
    -            return new WaitForConditionConfig<>(this);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContext.java b/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContext.java
    deleted file mode 100644
    index 274b31a79..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContext.java
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.logging.DurableLogger;
    -
    -public interface BaseContext extends AutoCloseable {
    -    /**
    -     * Gets a logger with additional information of the current execution context.
    -     *
    -     * @return a DurableLogger instance
    -     */
    -    DurableLogger getLogger();
    -
    -    /**
    -     * Returns the AWS Lambda runtime context.
    -     *
    -     * @return the Lambda context
    -     */
    -    Context getLambdaContext();
    -
    -    /**
    -     * Returns the current durable execution arn
    -     *
    -     * @return the execution arn
    -     */
    -    String getExecutionArn();
    -
    -    /**
    -     * Returns the configuration for durable execution behavior.
    -     *
    -     * @return the durable configuration
    -     */
    -    DurableConfig getDurableConfig();
    -
    -    /**
    -     * Gets the context ID for this context. Null for root context, operationId of the context operation for child
    -     * contexts.
    -     */
    -    String getContextId();
    -
    -    /** Gets the context name for this context. Null for root context. */
    -    String getContextName();
    -
    -    /** Returns whether this context is currently in replay mode. */
    -    boolean isReplaying();
    -
    -    /** Closes this context. */
    -    void close();
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContextImpl.java b/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContextImpl.java
    deleted file mode 100644
    index 9920366f4..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/context/BaseContextImpl.java
    +++ /dev/null
    @@ -1,112 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -
    -public abstract class BaseContextImpl implements AutoCloseable, BaseContext {
    -    private final ExecutionManager executionManager;
    -    private final DurableConfig durableConfig;
    -    private final Context lambdaContext;
    -    private final String contextId;
    -    private final String contextName;
    -    private final ThreadType threadType;
    -
    -    private boolean isReplaying;
    -
    -    /**
    -     * Creates a new BaseContext instance.
    -     *
    -     * @param executionManager the execution manager for thread coordination and state management
    -     * @param durableConfig the durable execution configuration
    -     * @param lambdaContext the AWS Lambda runtime context
    -     * @param contextId the context ID, null for root context, set for child contexts
    -     * @param contextName the human-readable name for this context
    -     * @param threadType the type of thread this context runs on
    -     */
    -    protected BaseContextImpl(
    -            ExecutionManager executionManager,
    -            DurableConfig durableConfig,
    -            Context lambdaContext,
    -            String contextId,
    -            String contextName,
    -            ThreadType threadType) {
    -        this.executionManager = executionManager;
    -        this.durableConfig = durableConfig;
    -        this.lambdaContext = lambdaContext;
    -        this.contextId = contextId;
    -        this.contextName = contextName;
    -        this.isReplaying = executionManager.hasOperationsForContext(contextId);
    -        this.threadType = threadType;
    -    }
    -
    -    // =============== accessors ================
    -
    -    /**
    -     * Returns the AWS Lambda runtime context.
    -     *
    -     * @return the Lambda context
    -     */
    -    @Override
    -    public Context getLambdaContext() {
    -        return lambdaContext;
    -    }
    -
    -    /**
    -     * Returns metadata about the current durable execution.
    -     *
    -     * <p>The execution context provides information that remains constant throughout the execution lifecycle, such as
    -     * the durable execution ARN. This is useful for tracking execution progress, correlating logs, and referencing this
    -     * execution in external systems.
    -     *
    -     * @return the execution context
    -     */
    -    @Override
    -    public String getExecutionArn() {
    -        return executionManager.getDurableExecutionArn();
    -    }
    -
    -    /**
    -     * Returns the configuration for durable execution behavior.
    -     *
    -     * @return the durable configuration
    -     */
    -    @Override
    -    public DurableConfig getDurableConfig() {
    -        return durableConfig;
    -    }
    -
    -    // ============= internal utilities ===============
    -
    -    /** Gets the context ID for this context. Null for root context, set for child contexts. */
    -    @Override
    -    public String getContextId() {
    -        return contextId;
    -    }
    -
    -    /** Gets the context name for this context. Null for root context. */
    -    @Override
    -    public String getContextName() {
    -        return contextName;
    -    }
    -
    -    public ExecutionManager getExecutionManager() {
    -        return executionManager;
    -    }
    -
    -    /** Returns whether this context is currently in replay mode. */
    -    @Override
    -    public boolean isReplaying() {
    -        return isReplaying;
    -    }
    -
    -    /**
    -     * Transitions this context from replay to execution mode. Called when the first un-cached operation is encountered.
    -     */
    -    public void setExecutionMode() {
    -        this.isReplaying = false;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/context/DurableContextImpl.java b/sdk/src/main/java/software/amazon/lambda/durable/context/DurableContextImpl.java
    deleted file mode 100644
    index 11614e4a2..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/context/DurableContextImpl.java
    +++ /dev/null
    @@ -1,390 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import java.time.Duration;
    -import java.util.Collection;
    -import java.util.List;
    -import java.util.Objects;
    -import java.util.function.BiConsumer;
    -import java.util.function.BiFunction;
    -import java.util.function.Function;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableCallbackFuture;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.ParallelDurableFuture;
    -import software.amazon.lambda.durable.StepContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.config.RunInChildContextConfig;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.WaitForCallbackConfig;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.OperationIdGenerator;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.logging.DurableLogger;
    -import software.amazon.lambda.durable.model.MapResult;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -import software.amazon.lambda.durable.operation.CallbackOperation;
    -import software.amazon.lambda.durable.operation.ChildContextOperation;
    -import software.amazon.lambda.durable.operation.InvokeOperation;
    -import software.amazon.lambda.durable.operation.MapOperation;
    -import software.amazon.lambda.durable.operation.ParallelOperation;
    -import software.amazon.lambda.durable.operation.StepOperation;
    -import software.amazon.lambda.durable.operation.WaitForConditionOperation;
    -import software.amazon.lambda.durable.operation.WaitOperation;
    -import software.amazon.lambda.durable.util.ParameterValidator;
    -
    -/**
    - * User-facing API for defining durable operations within a workflow.
    - *
    - * <p>Provides methods for creating steps, waits, chained invokes, callbacks, and child contexts. Each method creates a
    - * checkpoint-backed operation that survives Lambda interruptions.
    - */
    -public class DurableContextImpl extends BaseContextImpl implements DurableContext {
    -    private static final String WAIT_FOR_CALLBACK_CALLBACK_SUFFIX = "-callback";
    -    private static final String WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX = "-submitter";
    -    private static final int MAX_WAIT_FOR_CALLBACK_NAME_LENGTH = ParameterValidator.MAX_OPERATION_NAME_LENGTH
    -            - Math.max(WAIT_FOR_CALLBACK_CALLBACK_SUFFIX.length(), WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX.length());
    -    private final OperationIdGenerator operationIdGenerator;
    -    private volatile DurableLogger logger;
    -
    -    /** Shared initialization β€” sets all fields. */
    -    private DurableContextImpl(
    -            ExecutionManager executionManager,
    -            DurableConfig durableConfig,
    -            Context lambdaContext,
    -            String contextId,
    -            String contextName) {
    -        super(executionManager, durableConfig, lambdaContext, contextId, contextName, ThreadType.CONTEXT);
    -        operationIdGenerator = new OperationIdGenerator(contextId);
    -    }
    -
    -    /**
    -     * Creates a root context (contextId = null)
    -     *
    -     * <p>The context itself always has a null contextId (making it a root context).
    -     *
    -     * @param executionManager the execution manager
    -     * @param durableConfig the durable configuration
    -     * @param lambdaContext the Lambda context
    -     * @return a new root DurableContext
    -     */
    -    public static DurableContextImpl createRootContext(
    -            ExecutionManager executionManager, DurableConfig durableConfig, Context lambdaContext) {
    -        return new DurableContextImpl(executionManager, durableConfig, lambdaContext, null, null);
    -    }
    -
    -    /**
    -     * Creates a child context.
    -     *
    -     * @param childContextId the child context's ID (the CONTEXT operation's operation ID)
    -     * @param childContextName the name of the child context
    -     * @return a new DurableContext for the child context
    -     */
    -    public DurableContextImpl createChildContext(String childContextId, String childContextName) {
    -        return new DurableContextImpl(
    -                getExecutionManager(), getDurableConfig(), getLambdaContext(), childContextId, childContextName);
    -    }
    -
    -    /**
    -     * Creates a step context for executing step operations.
    -     *
    -     * @param stepOperationId the ID of the step operation (used for thread registration)
    -     * @param stepOperationName the name of the step operation
    -     * @param attempt the current retry attempt number (0-based)
    -     * @return a new StepContext instance
    -     */
    -    public StepContextImpl createStepContext(String stepOperationId, String stepOperationName, int attempt) {
    -        return new StepContextImpl(
    -                getExecutionManager(),
    -                getDurableConfig(),
    -                getLambdaContext(),
    -                stepOperationId,
    -                stepOperationName,
    -                attempt);
    -    }
    -
    -    @Override
    -    public <T> DurableFuture<T> stepAsync(
    -            String name, TypeToken<T> resultType, Function<StepContext, T> func, StepConfig config) {
    -        Objects.requireNonNull(config, "config cannot be null");
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        ParameterValidator.validateOperationName(name);
    -
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -        var operationId = nextOperationId();
    -
    -        // Create and start step operation with TypeToken
    -        var operation = new StepOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.STEP), func, resultType, config, this);
    -
    -        operation.execute(); // Start the step (returns immediately)
    -
    -        return operation;
    -    }
    -
    -    @Override
    -    public DurableFuture<Void> waitAsync(String name, Duration duration) {
    -        ParameterValidator.validateDuration(duration, "Wait duration");
    -        ParameterValidator.validateOperationName(name);
    -
    -        var operationId = nextOperationId();
    -
    -        // Create and start wait operation
    -        var operation =
    -                new WaitOperation(OperationIdentifier.of(operationId, name, OperationType.WAIT), duration, this);
    -
    -        operation.execute(); // Checkpoint the wait
    -        return operation;
    -    }
    -
    -    @Override
    -    public <T, U> DurableFuture<T> invokeAsync(
    -            String name, String functionName, U payload, TypeToken<T> resultType, InvokeConfig config) {
    -        Objects.requireNonNull(config, "config cannot be null");
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        ParameterValidator.validateOperationName(name);
    -
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -        if (config.payloadSerDes() == null) {
    -            config = config.toBuilder()
    -                    .payloadSerDes(getDurableConfig().getSerDes())
    -                    .build();
    -        }
    -        var operationId = nextOperationId();
    -
    -        // Create and start invoke operation
    -        var operation = new InvokeOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.CHAINED_INVOKE),
    -                functionName,
    -                payload,
    -                resultType,
    -                config,
    -                this);
    -
    -        operation.execute(); // checkpoint the invoke operation
    -        return operation; // Block (will throw SuspendExecutionException if needed)
    -    }
    -
    -    @Override
    -    public <T> DurableCallbackFuture<T> createCallback(String name, TypeToken<T> resultType, CallbackConfig config) {
    -        ParameterValidator.validateOperationName(name);
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -        var operationId = nextOperationId();
    -
    -        var operation = new CallbackOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.CALLBACK), resultType, config, this);
    -        operation.execute();
    -
    -        return operation;
    -    }
    -
    -    /**
    -     * Runs a function in a child context, blocking until it completes.
    -     *
    -     * <p>Child contexts provide isolated operation ID namespaces, allowing nested workflows to be composed without ID
    -     * collisions. On replay, the child context's operations are replayed independently.
    -     *
    -     * @param name the operation name within this context
    -     * @param resultType the result class for deserialization
    -     * @param func the function to execute, receiving a child {@link DurableContext}
    -     * @param config the configuration for the child context
    -     * @return the DurableFuture wrapping the child context result
    -     */
    -    @Override
    -    public <T> DurableFuture<T> runInChildContextAsync(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func, RunInChildContextConfig config) {
    -        return runInChildContextAsync(name, resultType, func, config, OperationSubType.RUN_IN_CHILD_CONTEXT);
    -    }
    -
    -    private <T> DurableFuture<T> runInChildContextAsync(
    -            String name,
    -            TypeToken<T> resultType,
    -            Function<DurableContext, T> func,
    -            RunInChildContextConfig config,
    -            OperationSubType subType) {
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        Objects.requireNonNull(config, "RunInChildContextConfig cannot be null");
    -        ParameterValidator.validateOperationName(name);
    -
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -
    -        var operationId = nextOperationId();
    -
    -        var operation = new ChildContextOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, subType),
    -                func,
    -                resultType,
    -                config,
    -                this);
    -
    -        operation.execute();
    -        return operation;
    -    }
    -
    -    @Override
    -    public <I, O> DurableFuture<MapResult<O>> mapAsync(
    -            String name, Collection<I> items, TypeToken<O> resultType, MapFunction<I, O> function, MapConfig config) {
    -        Objects.requireNonNull(items, "items cannot be null");
    -        Objects.requireNonNull(function, "function cannot be null");
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        Objects.requireNonNull(config, "config cannot be null");
    -        ParameterValidator.validateOperationName(name);
    -        ParameterValidator.validateOrderedCollection(items);
    -
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -
    -        // Convert to List for deterministic index-based access
    -        var itemList = List.copyOf(items);
    -        var operationId = nextOperationId();
    -
    -        var operation = new MapOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, OperationSubType.MAP),
    -                itemList,
    -                function,
    -                resultType,
    -                config,
    -                this);
    -        operation.execute();
    -        return operation;
    -    }
    -
    -    @Override
    -    public ParallelDurableFuture parallel(String name, ParallelConfig config) {
    -        Objects.requireNonNull(config, "config cannot be null");
    -        var operationId = nextOperationId();
    -
    -        var parallelOp = new ParallelOperation(
    -                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, OperationSubType.PARALLEL),
    -                getDurableConfig().getSerDes(),
    -                this,
    -                config);
    -
    -        parallelOp.execute();
    -
    -        return parallelOp;
    -    }
    -
    -    @Override
    -    public <T> DurableFuture<T> waitForCallbackAsync(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiConsumer<String, StepContext> func,
    -            WaitForCallbackConfig waitForCallbackConfig) {
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        Objects.requireNonNull(waitForCallbackConfig, "waitForCallbackConfig cannot be null");
    -        // waitForCallback adds a suffix for the callback operation name and the submitter operation name so
    -        // the length restriction of waitForCallback name is different from the other operations.
    -        ParameterValidator.validateOperationName(name, MAX_WAIT_FOR_CALLBACK_NAME_LENGTH);
    -
    -        var finalWaitForCallbackConfig = waitForCallbackConfig.stepConfig().serDes() == null
    -                ? waitForCallbackConfig.toBuilder()
    -                        .stepConfig(waitForCallbackConfig.stepConfig().toBuilder()
    -                                .serDes(getDurableConfig().getSerDes())
    -                                .build())
    -                        .build()
    -                : waitForCallbackConfig;
    -
    -        return runInChildContextAsync(
    -                name,
    -                resultType,
    -                childCtx -> {
    -                    var callback = childCtx.createCallback(
    -                            name + WAIT_FOR_CALLBACK_CALLBACK_SUFFIX,
    -                            resultType,
    -                            finalWaitForCallbackConfig.callbackConfig());
    -                    childCtx.step(
    -                            name + WAIT_FOR_CALLBACK_SUBMITTER_SUFFIX,
    -                            Void.class,
    -                            stepCtx -> {
    -                                func.accept(callback.callbackId(), stepCtx);
    -                                return null;
    -                            },
    -                            finalWaitForCallbackConfig.stepConfig());
    -                    return callback.get();
    -                },
    -                RunInChildContextConfig.builder()
    -                        .serDes(finalWaitForCallbackConfig.stepConfig().serDes())
    -                        .build(),
    -                OperationSubType.WAIT_FOR_CALLBACK);
    -    }
    -
    -    @Override
    -    public <T> DurableFuture<T> waitForConditionAsync(
    -            String name,
    -            TypeToken<T> resultType,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            WaitForConditionConfig<T> config) {
    -        Objects.requireNonNull(config, "config cannot be null");
    -        Objects.requireNonNull(resultType, "resultType cannot be null");
    -        Objects.requireNonNull(checkFunc, "checkFunc cannot be null");
    -        ParameterValidator.validateOperationName(name);
    -
    -        if (config.serDes() == null) {
    -            config = config.toBuilder().serDes(getDurableConfig().getSerDes()).build();
    -        }
    -        var operationId = nextOperationId();
    -
    -        var operation = new WaitForConditionOperation<>(operationId, name, checkFunc, resultType, config, this);
    -
    -        operation.execute();
    -
    -        return operation;
    -    }
    -
    -    // =============== accessors ================
    -    @Override
    -    public DurableLogger getLogger() {
    -        // lazy initialize logger
    -        if (logger == null) {
    -            synchronized (this) {
    -                if (logger == null) {
    -                    logger = new DurableLogger(LoggerFactory.getLogger(DurableContext.class), this);
    -                }
    -            }
    -        }
    -        return logger;
    -    }
    -
    -    /**
    -     * Clears the logger's thread properties. Called during context destruction to prevent memory leaks and ensure clean
    -     * state for subsequent executions.
    -     */
    -    @Override
    -    public void close() {
    -        if (logger != null) {
    -            logger.close();
    -        }
    -    }
    -
    -    /**
    -     * Get the next operationId. Returns a globally unique operation ID by hashing a sequential operation counter. For
    -     * root contexts, the counter value is hashed directly (e.g. "1", "2", "3"). For child contexts, the values are
    -     * prefixed with the parent hashed contextId (e.g. "<hash>-1", "<hash>-2" inside parent context <hash>). This
    -     * matches the Python SDK's stepPrefix convention and prevents ID collisions in checkpoint batches.
    -     */
    -    private String nextOperationId() {
    -        return operationIdGenerator.nextOperationId();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/context/StepContextImpl.java b/sdk/src/main/java/software/amazon/lambda/durable/context/StepContextImpl.java
    deleted file mode 100644
    index dcf5af66b..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/context/StepContextImpl.java
    +++ /dev/null
    @@ -1,70 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.StepContext;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.logging.DurableLogger;
    -
    -/**
    - * Context available inside a step operation's user function.
    - *
    - * <p>Provides access to the current retry attempt number and a logger that includes execution metadata. Extends
    - * {@link BaseContext} for thread lifecycle management.
    - */
    -public class StepContextImpl extends BaseContextImpl implements StepContext {
    -    private volatile DurableLogger logger;
    -    private final int attempt;
    -
    -    /**
    -     * Creates a new StepContext instance for use in step operations.
    -     *
    -     * @param executionManager Manages durable execution state and operations
    -     * @param durableConfig Configuration for durable execution behavior
    -     * @param lambdaContext AWS Lambda runtime context
    -     * @param stepOperationId Unique identifier for this context instance that equals to step operation id
    -     * @param stepOperationName the name of the step operation
    -     * @param attempt the current retry attempt number (0-based)
    -     */
    -    protected StepContextImpl(
    -            ExecutionManager executionManager,
    -            DurableConfig durableConfig,
    -            Context lambdaContext,
    -            String stepOperationId,
    -            String stepOperationName,
    -            int attempt) {
    -        super(executionManager, durableConfig, lambdaContext, stepOperationId, stepOperationName, ThreadType.STEP);
    -        this.attempt = attempt;
    -    }
    -
    -    /** Returns the current retry attempt number (0-based). */
    -    @Override
    -    public int getAttempt() {
    -        return attempt;
    -    }
    -
    -    @Override
    -    public DurableLogger getLogger() {
    -        // lazy initialize logger
    -        if (logger == null) {
    -            synchronized (this) {
    -                if (logger == null) {
    -                    logger = new DurableLogger(LoggerFactory.getLogger(StepContext.class), this);
    -                }
    -            }
    -        }
    -        return logger;
    -    }
    -
    -    /** Closes the logger for this context. */
    -    @Override
    -    public void close() {
    -        if (logger != null) {
    -            logger.close();
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackException.java
    deleted file mode 100644
    index a8fb6a011..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackException.java
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a callback operation encounters an error. */
    -public class CallbackException extends DurableOperationException {
    -    private final String callbackId;
    -
    -    public CallbackException(Operation operation, String message) {
    -        this(operation, message, null);
    -    }
    -
    -    public CallbackException(Operation operation, String message, Throwable cause) {
    -        super(operation, operation.callbackDetails().error(), message, cause);
    -        this.callbackId = operation.callbackDetails().callbackId();
    -    }
    -
    -    /** Returns the callback ID associated with this exception. */
    -    public String getCallbackId() {
    -        return callbackId;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackFailedException.java
    deleted file mode 100644
    index e3fb9e177..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackFailedException.java
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Exception thrown when a callback fails due to an error from the external system. */
    -public class CallbackFailedException extends CallbackException {
    -    public CallbackFailedException(Operation operation) {
    -        super(operation, buildMessage(operation.callbackDetails().error()));
    -    }
    -
    -    private static String buildMessage(ErrorObject error) {
    -        var errorType = error.errorType();
    -        var errorMessage = error.errorMessage();
    -
    -        if (errorType != null && !errorType.isEmpty()) {
    -            return errorType + ": " + errorMessage;
    -        }
    -        return errorMessage;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackSubmitterException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackSubmitterException.java
    deleted file mode 100644
    index a54ce1785..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackSubmitterException.java
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Exception thrown when a callback submitter step fails to submit a callback. */
    -public class CallbackSubmitterException extends CallbackException {
    -    public CallbackSubmitterException(Operation callbackOp, StepException stepEx) {
    -        super(callbackOp, stepEx.getMessage(), stepEx);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackTimeoutException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackTimeoutException.java
    deleted file mode 100644
    index 7a4cf8af2..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/CallbackTimeoutException.java
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Exception thrown when a callback times out. */
    -public class CallbackTimeoutException extends CallbackException {
    -    public CallbackTimeoutException(Operation operation) {
    -        super(operation, "Callback timed out: " + operation.callbackDetails().callbackId());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/ChildContextFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/ChildContextFailedException.java
    deleted file mode 100644
    index 3a6ee0f0c..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/ChildContextFailedException.java
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Exception thrown when a child context fails and the original exception cannot be reconstructed. */
    -public class ChildContextFailedException extends DurableOperationException {
    -    public ChildContextFailedException(Operation operation) {
    -        super(operation, getError(operation), formatMessage(getError(operation)));
    -    }
    -
    -    private static ErrorObject getError(Operation operation) {
    -        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
    -    }
    -
    -    private static String formatMessage(ErrorObject errorObject) {
    -        if (errorObject == null) {
    -            return "Child context failed without an error";
    -        }
    -        return String.format(
    -                "Child context failed with error of type %s. Message: %s",
    -                errorObject.errorType(), errorObject.errorMessage());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableExecutionException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableExecutionException.java
    deleted file mode 100644
    index 95ed281b1..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableExecutionException.java
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -/** Base exception for all durable execution errors. */
    -public class DurableExecutionException extends RuntimeException {
    -    public DurableExecutionException(String message, Throwable cause, StackTraceElement[] stackTrace) {
    -        super(message, cause);
    -        if (stackTrace != null) {
    -            this.setStackTrace(stackTrace);
    -        }
    -    }
    -
    -    public DurableExecutionException(String message, Throwable cause) {
    -        this(message, cause, null);
    -    }
    -
    -    public DurableExecutionException(String message) {
    -        this(message, null, null);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableOperationException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableOperationException.java
    deleted file mode 100644
    index 73078ea1d..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/DurableOperationException.java
    +++ /dev/null
    @@ -1,63 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/** Exception associated with a specific durable operation, carrying the operation and error details. */
    -public class DurableOperationException extends DurableExecutionException {
    -    private final Operation operation;
    -    private final ErrorObject errorObject;
    -
    -    public DurableOperationException(Operation operation, ErrorObject errorObject) {
    -        this(operation, errorObject, errorObject != null ? errorObject.errorMessage() : null);
    -    }
    -
    -    public DurableOperationException(Operation operation, ErrorObject errorObject, String errorMessage) {
    -        this(operation, errorObject, errorMessage, null);
    -    }
    -
    -    public DurableOperationException(
    -            Operation operation, ErrorObject errorObject, String errorMessage, Throwable cause) {
    -        this(
    -                operation,
    -                errorObject,
    -                errorMessage,
    -                errorObject != null ? ExceptionHelper.deserializeStackTrace(errorObject.stackTrace()) : null,
    -                cause);
    -    }
    -
    -    public DurableOperationException(
    -            Operation operation,
    -            ErrorObject errorObject,
    -            String errorMessage,
    -            StackTraceElement[] stackTrace,
    -            Throwable cause) {
    -        super(errorMessage, cause, stackTrace);
    -        this.operation = operation;
    -        this.errorObject = errorObject;
    -    }
    -
    -    /** Returns the error details from the failed operation. */
    -    public ErrorObject getErrorObject() {
    -        return errorObject;
    -    }
    -
    -    /** Returns the operation that caused this exception. */
    -    public Operation getOperation() {
    -        return operation;
    -    }
    -
    -    /** Returns the status of the operation that caused this exception. */
    -    public OperationStatus getOperationStatus() {
    -        return operation.status();
    -    }
    -
    -    /** Returns the ID of the operation that caused this exception. */
    -    public String getOperationId() {
    -        return operation.id();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/IllegalDurableOperationException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/IllegalDurableOperationException.java
    deleted file mode 100644
    index 875a1c063..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/IllegalDurableOperationException.java
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -
    -/** An illegal operation is detected. The execution will be immediately terminated. */
    -public class IllegalDurableOperationException extends UnrecoverableDurableExecutionException {
    -    public IllegalDurableOperationException(String message) {
    -        super(ErrorObject.builder()
    -                .errorType(IllegalDurableOperationException.class.getName())
    -                .errorMessage(message)
    -                .build());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeException.java
    deleted file mode 100644
    index 37bbf2ff9..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeException.java
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Base exception for chained invoke operation failures. */
    -public class InvokeException extends DurableOperationException {
    -    public InvokeException(Operation operation) {
    -        super(
    -                operation,
    -                operation.chainedInvokeDetails() != null
    -                        ? operation.chainedInvokeDetails().error()
    -                        : null);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeFailedException.java
    deleted file mode 100644
    index 45f84c341..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeFailedException.java
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a chained invoke operation fails with an error in the invoked function. */
    -public class InvokeFailedException extends InvokeException {
    -
    -    public InvokeFailedException(Operation operation) {
    -        super(operation);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeStoppedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeStoppedException.java
    deleted file mode 100644
    index 01dd3e22c..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeStoppedException.java
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a chained invoke operation is stopped before completion. */
    -public class InvokeStoppedException extends InvokeException {
    -
    -    public InvokeStoppedException(Operation operation) {
    -        super(operation);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeTimedOutException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeTimedOutException.java
    deleted file mode 100644
    index a0c36c623..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/InvokeTimedOutException.java
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a chained invoke operation exceeds its timeout. */
    -public class InvokeTimedOutException extends InvokeException {
    -
    -    public InvokeTimedOutException(Operation operation) {
    -        super(operation);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/MapIterationFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/MapIterationFailedException.java
    deleted file mode 100644
    index 8e4c5abfe..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/MapIterationFailedException.java
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a map iteration fails and deserialization of the original exception also fails. */
    -public class MapIterationFailedException extends DurableOperationException {
    -    public MapIterationFailedException(Operation operation) {
    -        super(operation, getError(operation), formatMessage(getError(operation)));
    -    }
    -
    -    private static ErrorObject getError(Operation operation) {
    -        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
    -    }
    -
    -    private static String formatMessage(ErrorObject errorObject) {
    -        if (errorObject == null) {
    -            return "Map iteration failed without an error";
    -        }
    -        return String.format(
    -                "Map iteration failed with error of type %s. Message: %s",
    -                errorObject.errorType(), errorObject.errorMessage());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.java
    deleted file mode 100644
    index e5e23f882..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/NonDeterministicExecutionException.java
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -
    -/**
    - * Exception thrown when non-deterministic code is detected during replay. This indicates that the workflow code has
    - * changed in a way that violates determinism requirements between the original execution and replay.
    - */
    -public class NonDeterministicExecutionException extends UnrecoverableDurableExecutionException {
    -    public NonDeterministicExecutionException(String message) {
    -        super(ErrorObject.builder()
    -                .errorMessage(message)
    -                .errorType(NonDeterministicExecutionException.class.getName())
    -                .build());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/ParallelBranchFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/ParallelBranchFailedException.java
    deleted file mode 100644
    index 1b2c724e6..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/ParallelBranchFailedException.java
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a parallel branch fails and deserialization of the original exception also fails. */
    -public class ParallelBranchFailedException extends DurableOperationException {
    -    public ParallelBranchFailedException(Operation operation) {
    -        super(operation, getError(operation), formatMessage(getError(operation)));
    -    }
    -
    -    private static ErrorObject getError(Operation operation) {
    -        return operation.contextDetails() != null ? operation.contextDetails().error() : null;
    -    }
    -
    -    private static String formatMessage(ErrorObject errorObject) {
    -        if (errorObject == null) {
    -            return "Parallel branch failed without an error";
    -        }
    -        return String.format(
    -                "Parallel branch failed with error of type %s. Message: %s",
    -                errorObject.errorType(), errorObject.errorMessage());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/SerDesException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/SerDesException.java
    deleted file mode 100644
    index 9cdaae69e..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/SerDesException.java
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -/** Exception thrown when serialization or deserialization fails. */
    -public class SerDesException extends DurableExecutionException {
    -    public SerDesException(String message, Throwable cause) {
    -        super(message, cause);
    -    }
    -
    -    public SerDesException(String message) {
    -        super(message);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/StepException.java
    deleted file mode 100644
    index a57932ff3..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepException.java
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Base exception for step operation failures. */
    -public class StepException extends DurableOperationException {
    -    public StepException(Operation operation, ErrorObject errorObject, String errorMessage) {
    -        super(operation, errorObject, errorMessage);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/StepFailedException.java
    deleted file mode 100644
    index cb417b25e..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepFailedException.java
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Thrown when a step operation fails after exhausting all retry attempts. */
    -public class StepFailedException extends StepException {
    -    public StepFailedException(Operation operation) {
    -        super(
    -                operation,
    -                operation.stepDetails().error(),
    -                formatMessage(operation.stepDetails().error()));
    -    }
    -
    -    private static String formatMessage(ErrorObject errorObject) {
    -        if (errorObject == null) {
    -            return "Step failed without an error";
    -        }
    -        return String.format(
    -                "Step failed with error of type %s. Message: %s", errorObject.errorType(), errorObject.errorMessage());
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepInterruptedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/StepInterruptedException.java
    deleted file mode 100644
    index a82e3ad03..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/StepInterruptedException.java
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/** Exception thrown when a step with AT_MOST_ONCE_PER_RETRY semantics was started but interrupted before completion. */
    -public class StepInterruptedException extends StepException {
    -    public StepInterruptedException(Operation operation) {
    -        super(operation, toErrorObject(), formatMessage(operation));
    -    }
    -
    -    public static boolean isStepInterruptedException(ErrorObject errorObject) {
    -        if (errorObject == null) {
    -            return false;
    -        }
    -        return StepInterruptedException.toErrorObject().errorType().equals(errorObject.errorType());
    -    }
    -
    -    private static ErrorObject toErrorObject() {
    -        return ErrorObject.builder()
    -                .errorType(StepInterruptedException.class.getName())
    -                .build();
    -    }
    -
    -    private static String formatMessage(Operation operation) {
    -        var message = String.format(
    -                "The step execution was initiated but failed to reach completion due to an interruption. Operation ID: %s",
    -                operation.id());
    -        if (operation.name() != null) {
    -            message += String.format(", Step Name: %s", operation.name());
    -        }
    -        return message;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.java
    deleted file mode 100644
    index bff0a13d9..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionException.java
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -
    -/** Exception thrown when the execution is not recoverable. The durable execution will be immediately terminated. */
    -public class UnrecoverableDurableExecutionException extends DurableExecutionException {
    -    private final ErrorObject errorObject;
    -
    -    public UnrecoverableDurableExecutionException(ErrorObject errorObject) {
    -        super(errorObject.errorMessage());
    -        this.errorObject = errorObject;
    -    }
    -
    -    /** Returns the error details for this unrecoverable exception. */
    -    public ErrorObject getErrorObject() {
    -        return errorObject;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/exception/WaitForConditionFailedException.java b/sdk/src/main/java/software/amazon/lambda/durable/exception/WaitForConditionFailedException.java
    deleted file mode 100644
    index f1810800b..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/exception/WaitForConditionFailedException.java
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/**
    - * Exception thrown when a {@code waitForCondition} operation fails.
    - *
    - * <p>This can occur when the maximum number of polling attempts is exceeded, or when the check function throws an
    - * error.
    - */
    -public class WaitForConditionFailedException extends DurableOperationException {
    -
    -    public WaitForConditionFailedException(String message) {
    -        super(null, null, message);
    -    }
    -
    -    public WaitForConditionFailedException(Operation operation) {
    -        super(
    -                operation,
    -                operation.stepDetails() != null ? operation.stepDetails().error() : null);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.java
    deleted file mode 100644
    index 3b0def81f..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcher.java
    +++ /dev/null
    @@ -1,196 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.Objects;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.ConcurrentLinkedQueue;
    -import java.util.concurrent.TimeUnit;
    -import java.util.function.Consumer;
    -import java.util.function.Function;
    -
    -/**
    - * Batches API requests to optimize throughput by grouping individual calls into batch operations. Batches are flushed
    - * when full, when size limits are reached, or after a timeout.
    - *
    - * <p>Uses a dedicated SDK thread pool for internal coordination, keeping checkpoint processing separate from
    - * customer-configured executors used for user-defined operations.
    - *
    - * @see InternalExecutor
    - * @param <T> Request type
    - */
    -public class ApiRequestDelayedBatcher<T> {
    -    private static final Duration MAX_DELAY = Duration.ofMinutes(60);
    -
    -    /** Maximum items allowed in a single batch */
    -    private final int maxItemCount;
    -    /** Maximum bytes allowed in a single batch */
    -    private final int maxBatchBytes;
    -    /** Calculates byte size of each request */
    -    private final Function<T, Integer> calculateItemSize;
    -    /** Executes the batch operation */
    -    private final Consumer<List<T>> executeBatch;
    -
    -    /** Accumulated requests to be executed in future */
    -    private final List<Item<T>> delayedBatch;
    -
    -    /** Time when the current batch must be flushed */
    -    private long delayedBatchFlushTime;
    -
    -    /** Timer to auto-flush current batch */
    -    private CompletableFuture<Void> delayedBatchFlushTimer;
    -
    -    /** Requests to be flushed */
    -    private final ConcurrentLinkedQueue<Item<T>> flushingQueue;
    -
    -    /** Future of flushing items in queue */
    -    private CompletableFuture<Void> flushingQueueFuture;
    -
    -    private record Item<T>(T request, CompletableFuture<Void> result) {}
    -
    -    /**
    -     * Creates a new ApiRequestDelayedBatcher with the specified configuration.
    -     *
    -     * @param maxItemCount Maximum number of items per batch
    -     * @param maxBatchBytes Maximum total size in bytes for all items in a batch
    -     * @param calculateItemSize Function to calculate the size in bytes of each item
    -     * @param executeBatch Function to execute the batch action
    -     */
    -    public ApiRequestDelayedBatcher(
    -            int maxItemCount,
    -            int maxBatchBytes,
    -            Function<T, Integer> calculateItemSize,
    -            Consumer<List<T>> executeBatch) {
    -        this.maxItemCount = maxItemCount;
    -        this.maxBatchBytes = maxBatchBytes;
    -        this.calculateItemSize = calculateItemSize;
    -        this.executeBatch = executeBatch;
    -
    -        this.flushingQueueFuture = CompletableFuture.allOf();
    -        this.flushingQueue = new ConcurrentLinkedQueue<>();
    -        this.delayedBatch = new ArrayList<>();
    -
    -        initializeDelayedBatch();
    -    }
    -
    -    /**
    -     * Submits request for delayed execution.
    -     *
    -     * @param request Request to batch
    -     * @param flushDelay maximum delay of processing the request
    -     * @return Future completed when batch executes
    -     */
    -    CompletableFuture<Void> submit(T request, Duration flushDelay) {
    -        synchronized (delayedBatch) {
    -            // add the request to the current batch
    -            CompletableFuture<Void> future = new CompletableFuture<>();
    -            delayedBatch.add(new Item<>(request, future));
    -
    -            // The flush time of the current batch is determined by the earliest flush time in the batch.
    -            var delayInNano = flushDelay.toNanos();
    -            long newFlushTime = System.nanoTime() + delayInNano;
    -            if (newFlushTime < delayedBatchFlushTime) {
    -                // Schedule a new timer if the batch needs to be completed earlier than previously scheduled
    -                delayedBatchFlushTime = newFlushTime;
    -                delayedBatchFlushTimer.completeOnTimeout(null, delayInNano, TimeUnit.NANOSECONDS);
    -            }
    -
    -            return future;
    -        }
    -    }
    -
    -    /** Flushes pending batch and waits for completion */
    -    void shutdown() {
    -        synchronized (delayedBatch) {
    -            // cancel the flush timer if it has not been triggered
    -            this.delayedBatchFlushTimer.cancel(false);
    -            // execute the current batch now
    -            flushDelayedBatch();
    -        }
    -
    -        // wait for previous batches to be flushed
    -        flushingQueueFuture.join();
    -    }
    -
    -    /** clear the current batch and creates a new batch */
    -    private void initializeDelayedBatch() {
    -        this.delayedBatch.clear();
    -        // MAX_DELAY is longer than a single Lambda invocation
    -        this.delayedBatchFlushTime = System.nanoTime() + MAX_DELAY.toNanos();
    -
    -        // the timer future is created initially without a timeout until an item is added to the batch
    -        this.delayedBatchFlushTimer = new CompletableFuture<>();
    -        this.delayedBatchFlushTimer.thenRun(() -> {
    -            synchronized (delayedBatch) {
    -                flushDelayedBatch();
    -            }
    -        });
    -    }
    -
    -    /** Add the delayed batch to the flushing queue */
    -    private void flushDelayedBatch() {
    -        // All the items in the delayed batch are flushed altogether, no matter if the scheduled time for the item has
    -        // arrived or not
    -        flushingQueue.addAll(delayedBatch);
    -        initializeDelayedBatch();
    -
    -        if (flushingQueue.isEmpty()) {
    -            return;
    -        }
    -
    -        // Schedule a new flushing future. If the items in this batch have been executed by the previous flushQueue
    -        // future,
    -        // the new future will just do nothing.
    -        flushingQueueFuture = flushingQueueFuture.thenRunAsync(this::flushQueue, InternalExecutor.INSTANCE);
    -    }
    -    /** Call checkpoint API with items in the flushing queue */
    -    private void flushQueue() {
    -        // There could be more items to flush because
    -        // - remaining items that didn't fit in the previous checkpoint call
    -        // - new items being added when processing the previous items
    -        // This allows the items being added when making the checkpoint request to be immediately processed
    -        while (flushingQueue.peek() != null) {
    -            var flushingSize = 0L;
    -            var flushingItems = new ArrayList<Item<T>>();
    -            while (true) {
    -                var item = flushingQueue.peek();
    -                if (item == null) {
    -                    break;
    -                }
    -
    -                var itemSizeInByte = calculateItemSize.apply(item.request);
    -                var canFit = flushingSize + itemSizeInByte <= maxBatchBytes;
    -
    -                // Add the item if
    -                // - it can fit in one checkpoint call, or
    -                // - flushingItems is empty, so that we can try the big item even if it's bigger than the max batch size
    -                if (!flushingItems.isEmpty() && (!canFit || flushingItems.size() >= maxItemCount)) {
    -                    break;
    -                }
    -
    -                flushingItems.add(flushingQueue.poll());
    -                flushingSize += itemSizeInByte;
    -            }
    -            if (!flushingItems.isEmpty()) {
    -                try {
    -                    // requests might be null for polling requests
    -                    var requests = flushingItems.stream()
    -                            .map(Item::request)
    -                            .filter(Objects::nonNull)
    -                            .toList();
    -                    executeBatch.accept(requests);
    -                    for (Item<T> item : flushingItems) {
    -                        item.result().complete(null);
    -                    }
    -                } catch (Throwable ex) {
    -                    for (Item<T> item : flushingItems) {
    -                        item.result().completeExceptionally(ex);
    -                    }
    -                }
    -            }
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/CheckpointManager.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/CheckpointManager.java
    deleted file mode 100644
    index 35128c3ab..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/CheckpointManager.java
    +++ /dev/null
    @@ -1,233 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Objects;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.ConcurrentHashMap;
    -import java.util.function.Consumer;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.retry.PollingStrategies;
    -import software.amazon.lambda.durable.retry.PollingStrategy;
    -
    -/**
    - * Package-private checkpoint manager for batching and queueing checkpoint API calls.
    - *
    - * <p>Single responsibility: Queue and batch checkpoint requests efficiently. Uses a Consumer to notify when checkpoints
    - * complete, avoiding cyclic dependency.
    - */
    -class CheckpointManager {
    -    private static final int MAX_BATCH_SIZE_BYTES = 750 * 1024; // 750KB
    -    private static final int MAX_ITEM_COUNT = 200; // max updates in one batch
    -    private static final int FIRST_ATTEMPT = 1;
    -    private static final Logger logger = LoggerFactory.getLogger(CheckpointManager.class);
    -
    -    private final Consumer<List<Operation>> callback;
    -    private final String durableExecutionArn;
    -    private final Map<String, List<CompletableFuture<Operation>>> pollingFutures = new ConcurrentHashMap<>();
    -    private final ApiRequestDelayedBatcher<OperationUpdate> checkpointApiRequestDelayedBatcher;
    -    private final DurableConfig config;
    -    private String checkpointToken;
    -
    -    CheckpointManager(
    -            DurableConfig config,
    -            String durableExecutionArn,
    -            String checkpointToken,
    -            Consumer<List<Operation>> callback) {
    -        this.config = config;
    -        this.durableExecutionArn = durableExecutionArn;
    -        this.callback = callback;
    -        this.checkpointToken = checkpointToken;
    -        this.checkpointApiRequestDelayedBatcher = new ApiRequestDelayedBatcher<>(
    -                MAX_ITEM_COUNT, MAX_BATCH_SIZE_BYTES, CheckpointManager::estimateSize, this::checkpointBatch);
    -    }
    -
    -    /**
    -     * Queues a checkpoint request for batched execution
    -     *
    -     * @return a future that completes when the checkpoint request is executed
    -     */
    -    CompletableFuture<Void> checkpoint(OperationUpdate update) {
    -        logger.debug("Checkpoint request received: Action {}", update.action());
    -        return checkpointApiRequestDelayedBatcher.submit(update, config.getCheckpointDelay());
    -    }
    -
    -    /**
    -     * Polls for updates of the specified operation with preconfigured intervals
    -     *
    -     * @return a future that completes when the operation is updated
    -     */
    -    CompletableFuture<Operation> pollForUpdate(String operationId) {
    -        return pollForUpdate(operationId, config.getPollingStrategy());
    -    }
    -
    -    /**
    -     * Polls for updates of the specified operation at the specified time. If the give time is at the past, SDK will
    -     * immediately make a polling call.
    -     *
    -     * @param at the time to poll for the update
    -     * @return a future that completes when the operation is updated
    -     */
    -    CompletableFuture<Operation> pollForUpdate(String operationId, Instant at) {
    -        return pollForUpdate(operationId, PollingStrategies.at(at));
    -    }
    -
    -    /**
    -     * Polls for updates of the specified operation with specified polling strategy
    -     *
    -     * @return a future that completes when the operation is updated
    -     */
    -    CompletableFuture<Operation> pollForUpdate(String operationId, PollingStrategy pollingStrategy) {
    -        logger.debug("Polling request received: operation id {}", operationId);
    -        var future = new CompletableFuture<Operation>();
    -        synchronized (pollingFutures) {
    -            // register the future in pollingFutures, which will be completed by the polling thread
    -            pollingFutures
    -                    .computeIfAbsent(operationId, k -> Collections.synchronizedList(new ArrayList<>()))
    -                    .add(future);
    -        }
    -        pollForUpdateInternal(future, FIRST_ATTEMPT, Instant.now(), pollingStrategy);
    -        return future;
    -    }
    -
    -    /**
    -     * Recursively polls for updates of the specified operation with specified polling strategy
    -     *
    -     * @param future the future to complete
    -     * @param attempt the attempt number
    -     * @param startTime the start time of the current attempt
    -     * @param pollingStrategy the polling strategy
    -     * @return a completable future that completes when the polling is done
    -     */
    -    private CompletableFuture<Void> pollForUpdateInternal(
    -            CompletableFuture<Operation> future, int attempt, Instant startTime, PollingStrategy pollingStrategy) {
    -
    -        // the delay is the polling interval minus the time already elapsed in the current attempt
    -        var delay = pollingStrategy.computeDelay(attempt).minus(Duration.between(startTime, Instant.now()));
    -        return checkpointApiRequestDelayedBatcher.submit(null, delay).thenCompose(v -> {
    -            if (future.isDone()) {
    -                return CompletableFuture.completedFuture(null);
    -            }
    -            var now = Instant.now();
    -            if (Duration.between(startTime, now).compareTo(pollingStrategy.computeDelay(attempt)) > 0) {
    -                // It has exceeded the previous attempt duration, starting a new attempt
    -                return pollForUpdateInternal(future, attempt + 1, now, pollingStrategy);
    -            } else {
    -                // continue the previous attempt. The future was completed just because
    -                // it was batched with other checkpoint API calls.
    -                return pollForUpdateInternal(future, attempt, startTime, pollingStrategy);
    -            }
    -        });
    -    }
    -
    -    /** Cancels all polling futures and waits for all pending checkpoint requests to complete */
    -    void shutdown() {
    -        // complete all polling futures with an exception
    -        List<List<CompletableFuture<Operation>>> allFutures;
    -        synchronized (pollingFutures) {
    -            allFutures = new ArrayList<>(pollingFutures.values());
    -            pollingFutures.clear();
    -        }
    -
    -        for (var futures : allFutures) {
    -            futures.forEach(f -> f.completeExceptionally(new IllegalStateException("CheckpointManager shutdown")));
    -        }
    -
    -        // wait for all non-polling checkpoint requests to complete
    -        checkpointApiRequestDelayedBatcher.shutdown();
    -    }
    -
    -    /**
    -     * Calling GetExecutionState API to get all pages of operations given CheckpointUpdatedExecutionState(operations,
    -     * nextMarker)
    -     */
    -    List<Operation> fetchAllPages(CheckpointUpdatedExecutionState checkpointUpdatedExecutionState) {
    -        List<Operation> operations = new ArrayList<>();
    -        if (checkpointUpdatedExecutionState == null) {
    -            return operations;
    -        }
    -        if (checkpointUpdatedExecutionState.operations() != null) {
    -            operations.addAll(checkpointUpdatedExecutionState.operations());
    -        }
    -        var nextMarker = checkpointUpdatedExecutionState.nextMarker();
    -        while (nextMarker != null && !nextMarker.isEmpty()) {
    -            var startTime = System.nanoTime();
    -            var response = config.getDurableExecutionClient()
    -                    .getExecutionState(durableExecutionArn, checkpointToken, nextMarker);
    -            logger.debug(
    -                    "Durable getExecutionState API called (latency={}ns): {}.",
    -                    System.nanoTime() - startTime,
    -                    response);
    -            operations.addAll(response.operations());
    -            nextMarker = response.nextMarker();
    -        }
    -        return operations;
    -    }
    -
    -    private void checkpointBatch(List<OperationUpdate> updates) {
    -        synchronized (pollingFutures) {
    -            // filter the null values from pollers
    -            var request = updates.stream().filter(Objects::nonNull).toList();
    -
    -            if (pollingFutures.isEmpty() && request.isEmpty()) {
    -                // ignore the batch if no pollers and no data to checkpoint
    -                return;
    -            }
    -
    -            var startTime = System.nanoTime();
    -            logger.debug("Calling durable checkpoint API with {} updates: {}", updates.size(), request);
    -            var response = config.getDurableExecutionClient().checkpoint(durableExecutionArn, checkpointToken, request);
    -            logger.debug("Durable checkpoint API called (latency={}ns): {}.", System.nanoTime() - startTime, response);
    -
    -            // Notify callback of completion
    -            checkpointToken = response.checkpointToken();
    -            if (response.newExecutionState() != null) {
    -                // fetch all pages of operations
    -                var operations = fetchAllPages(response.newExecutionState());
    -
    -                var processStartTime = System.nanoTime();
    -                int completedFutures = 0;
    -                logger.debug(
    -                        "Processing {} operations. ({} pending pollers)", operations.size(), pollingFutures.size());
    -                // call the callback
    -                callback.accept(operations);
    -
    -                // complete the registered pollingFutures
    -                for (var operation : operations) {
    -                    var pollers = pollingFutures.remove(operation.id());
    -                    if (pollers != null) {
    -                        completedFutures += pollers.size();
    -                        pollers.forEach(poller -> poller.complete(operation));
    -                    }
    -                }
    -                logger.debug(
    -                        "{} operations processed and {} pollers completed (latency={}ns). ",
    -                        operations.size(),
    -                        completedFutures,
    -                        System.nanoTime() - processStartTime);
    -            }
    -        }
    -    }
    -
    -    private static int estimateSize(OperationUpdate update) {
    -        if (update == null) {
    -            return 0;
    -        }
    -        return update.id().length()
    -                + update.type().toString().length()
    -                + update.action().toString().length()
    -                + (update.payload() != null ? update.payload().length() : 0)
    -                + 100;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/DurableExecutor.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/DurableExecutor.java
    deleted file mode 100644
    index 28608e8dd..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/DurableExecutor.java
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import com.amazonaws.services.lambda.runtime.Context;
    -import com.amazonaws.services.lambda.runtime.RequestHandler;
    -import java.nio.charset.StandardCharsets;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.function.BiFunction;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.DurableOperationException;
    -import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.DurableExecutionOutput;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Orchestrates the lifecycle of a durable execution.
    - *
    - * <p>Handles deserialization of user input, invocation of the user handler within a {@link DurableContext}, and
    - * production of the {@link DurableExecutionOutput} (success, failure, or pending suspension).
    - */
    -public class DurableExecutor {
    -    private static final String ROOT_THREAD_ID = null;
    -    private static final Logger logger = LoggerFactory.getLogger(DurableExecutor.class);
    -
    -    // Lambda response size limit is 6MB minus small epsilon for envelope
    -    private static final int LAMBDA_RESPONSE_SIZE_LIMIT = 6 * 1024 * 1024 - 50;
    -
    -    private DurableExecutor() {}
    -
    -    public static <I, O> DurableExecutionOutput execute(
    -            DurableExecutionInput input,
    -            Context lambdaContext,
    -            TypeToken<I> inputType,
    -            BiFunction<I, DurableContext, O> handler,
    -            DurableConfig config) {
    -        try (var executionManager = new ExecutionManager(input, config)) {
    -            executionManager.registerActiveThread(null);
    -            var handlerFuture = CompletableFuture.supplyAsync(
    -                    () -> {
    -                        executionManager.setCurrentThreadContext(new ThreadContext(null, ThreadType.CONTEXT));
    -                        var userInput = extractUserInput(
    -                                executionManager.getExecutionOperation(), config.getSerDes(), inputType);
    -                        // use try-with-resources to clear logger properties
    -                        try (var context =
    -                                DurableContextImpl.createRootContext(executionManager, config, lambdaContext)) {
    -                            return handler.apply(userInput, context);
    -                        }
    -                    },
    -                    config.getExecutorService()); // Get executor from config for running user code
    -
    -            // Execute the handlerFuture in ExecutionManager. If it completes successfully, the output of user function
    -            // will be returned. Otherwise, it will complete exceptionally with a SuspendExecutionException or a
    -            // failure.
    -            return executionManager
    -                    .runUntilCompleteOrSuspend(handlerFuture)
    -                    .handle((result, ex) -> {
    -                        if (ex != null) {
    -                            // an exception thrown from handlerFuture or suspension/termination occurred
    -                            Throwable cause = ExceptionHelper.unwrapCompletableFuture(ex);
    -                            if (cause instanceof SuspendExecutionException) {
    -                                return DurableExecutionOutput.pending();
    -                            }
    -
    -                            logger.debug("Execution failed: {}", cause.getMessage());
    -                            return DurableExecutionOutput.failure(buildErrorObject(cause, config.getSerDes()));
    -                        }
    -                        // user handler complete successfully
    -                        var outputPayload = config.getSerDes().serialize(result);
    -
    -                        logger.debug("Execution completed");
    -                        return DurableExecutionOutput.success(handleLargePayload(executionManager, outputPayload));
    -                    })
    -                    .join();
    -        }
    -    }
    -
    -    private static String handleLargePayload(ExecutionManager executionManager, String outputPayload) {
    -        // Check if the serialized payload exceeds Lambda response size limit
    -        var payloadSize = outputPayload != null ? outputPayload.getBytes(StandardCharsets.UTF_8).length : 0;
    -
    -        if (payloadSize > LAMBDA_RESPONSE_SIZE_LIMIT) {
    -            logger.debug(
    -                    "Response size ({} bytes) exceeds Lambda limit ({} bytes). Checkpointing result.",
    -                    payloadSize,
    -                    LAMBDA_RESPONSE_SIZE_LIMIT);
    -
    -            // Checkpoint the large result and wait for it to complete
    -            executionManager
    -                    .sendOperationUpdate(OperationUpdate.builder()
    -                            .type(OperationType.EXECUTION)
    -                            .id(executionManager.getExecutionOperation().id())
    -                            .action(OperationAction.SUCCEED)
    -                            .payload(outputPayload)
    -                            .build())
    -                    .join();
    -
    -            // Return empty result, we checkpointed the data manually
    -            logger.debug("Execution completed (large response checkpointed)");
    -            return "";
    -        }
    -
    -        // If response size is acceptable, return the result directly
    -        return outputPayload;
    -    }
    -
    -    private static ErrorObject buildErrorObject(Throwable e, SerDes serDes) {
    -        // exceptions thrown from operations, e.g. Step
    -        if (e instanceof DurableOperationException durableOperationException) {
    -            return durableOperationException.getErrorObject();
    -        }
    -        if (e instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
    -            return unrecoverableDurableExecutionException.getErrorObject();
    -        }
    -        // exceptions thrown from non-operation code
    -        return ExceptionHelper.buildErrorObject(e, serDes);
    -    }
    -
    -    private static <I> I extractUserInput(Operation executionOp, SerDes serDes, TypeToken<I> inputType) {
    -        if (executionOp.executionDetails() == null) {
    -            throw new IllegalDurableOperationException("EXECUTION operation missing executionDetails");
    -        }
    -
    -        var inputPayload = executionOp.executionDetails().inputPayload();
    -        return serDes.deserialize(inputPayload, inputType);
    -    }
    -
    -    /**
    -     * Wraps a user handler in a RequestHandler that can be used by the Lambda runtime.
    -     *
    -     * @param inputType the type token for the input
    -     * @param handler the handler function
    -     * @param config the durable config
    -     * @return a request handler that executes the durable function
    -     * @param <I> the type of the input
    -     * @param <O> the type of the output
    -     */
    -    public static <I, O> RequestHandler<DurableExecutionInput, DurableExecutionOutput> wrap(
    -            TypeToken<I> inputType, BiFunction<I, DurableContext, O> handler, DurableConfig config) {
    -        return (input, context) -> execute(input, context, inputType, handler, config);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionManager.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionManager.java
    deleted file mode 100644
    index 92e1ff1c4..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionManager.java
    +++ /dev/null
    @@ -1,376 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import java.time.Instant;
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Objects;
    -import java.util.Set;
    -import java.util.concurrent.CancellationException;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.ThreadPoolExecutor;
    -import java.util.concurrent.atomic.AtomicReference;
    -import java.util.stream.Collectors;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.operation.BaseDurableOperation;
    -
    -/**
    - * Central manager for durable execution coordination.
    - *
    - * <p>Consolidates:
    - *
    - * <ul>
    - *   <li>Execution state (operations, checkpoint token)
    - *   <li>Thread lifecycle (registration/deregistration)
    - *   <li>Checkpoint batching (via CheckpointManager)
    - *   <li>Checkpoint result handling (CheckpointManager callback)
    - *   <li>Polling (for waits and retries)
    - * </ul>
    - *
    - * <p>This is the single entry point for all execution coordination. Internal coordination (polling, checkpointing) uses
    - * a dedicated SDK thread pool, while user-defined operations run on a customer-configured executor.
    - *
    - * <p>Operations are keyed by their globally unique operation ID. Child context operations use prefixed IDs (e.g.,
    - * "1-1", "1-2") to avoid collisions with root-level operations.
    - *
    - * @see InternalExecutor
    - */
    -public class ExecutionManager implements AutoCloseable {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(ExecutionManager.class);
    -
    -    // ===== Execution State =====
    -    private final Map<String, Operation> operationStorage;
    -    private final Operation executionOp;
    -    private final String durableExecutionArn;
    -    private final AtomicReference<ExecutionMode> executionMode;
    -    private final DurableConfig durableConfig;
    -
    -    // ===== Thread Coordination =====
    -    private final Map<String, BaseDurableOperation> registeredOperations = Collections.synchronizedMap(new HashMap<>());
    -    private final Set<String> activeThreads = Collections.synchronizedSet(new HashSet<>());
    -    private static final ThreadLocal<ThreadContext> currentThreadContext = new ThreadLocal<>();
    -    private final CompletableFuture<Void> executionExceptionFuture = new CompletableFuture<>();
    -
    -    // ===== Checkpoint Batching =====
    -    private final CheckpointManager checkpointManager;
    -
    -    public ExecutionManager(DurableExecutionInput input, DurableConfig config) {
    -        durableConfig = config;
    -        this.durableExecutionArn = input.durableExecutionArn();
    -
    -        // Create checkpoint batcher for internal coordination
    -        this.checkpointManager =
    -                new CheckpointManager(config, durableExecutionArn, input.checkpointToken(), this::onCheckpointComplete);
    -
    -        this.operationStorage = checkpointManager.fetchAllPages(input.initialExecutionState()).stream()
    -                .collect(Collectors.toConcurrentMap(Operation::id, op -> op));
    -
    -        // Start in REPLAY mode if we have more than just the initial EXECUTION operation
    -        this.executionMode =
    -                new AtomicReference<>(operationStorage.size() > 1 ? ExecutionMode.REPLAY : ExecutionMode.EXECUTION);
    -
    -        // parse durableExecutionArn and get the last part after / which is the invocation id
    -        var durableExecutionArnParts = durableExecutionArn.split("/", -1);
    -        var invocationId = durableExecutionArnParts[durableExecutionArnParts.length - 1];
    -        executionOp = operationStorage.get(invocationId);
    -
    -        // Validate initial operation is an EXECUTION operation
    -        if (executionOp == null) {
    -            throw new IllegalStateException("EXECUTION operation not found");
    -        }
    -        logger.debug("DurableExecution.execute() called");
    -        logger.debug("DurableExecutionArn: {}", durableExecutionArn);
    -        logger.debug("Initial operations count: {}", operationStorage.size());
    -        logger.debug("EXECUTION operation found: {}", executionOp.id());
    -    }
    -
    -    // ===== State Management =====
    -
    -    /** Returns the ARN of the durable execution being managed. */
    -    public String getDurableExecutionArn() {
    -        return durableExecutionArn;
    -    }
    -
    -    /** Returns {@code true} if the execution is currently replaying completed operations. */
    -    public boolean isReplaying() {
    -        return executionMode.get() == ExecutionMode.REPLAY;
    -    }
    -
    -    /** Registers an operation so it can receive checkpoint completion notifications. */
    -    public void registerOperation(BaseDurableOperation operation) {
    -        registeredOperations.put(operation.getOperationId(), operation);
    -    }
    -
    -    // ===== Checkpoint Completion Handler =====
    -    /** Called by CheckpointManager when a checkpoint completes. Updates operationStorage and notify operations . */
    -    private void onCheckpointComplete(List<Operation> newOperations) {
    -        newOperations.forEach(op -> {
    -            // Update operation storage
    -            operationStorage.put(op.id(), op);
    -            // call registered operation's onCheckpointComplete method for completed operations
    -            registeredOperations.computeIfPresent(op.id(), (id, operation) -> {
    -                operation.onCheckpointComplete(op);
    -                return operation;
    -            });
    -        });
    -    }
    -
    -    /**
    -     * Gets all child operations for a given operationId.
    -     *
    -     * @param operationId the operationId to get children for
    -     * @return List of child operations for the given operationId
    -     */
    -    public List<Operation> getChildOperations(String operationId) {
    -        // todo: this is O(n) - consider an improvement if performance becomes an issue
    -        var children = new ArrayList<Operation>();
    -        for (Operation op : operationStorage.values()) {
    -            if (Objects.equals(op.parentId(), operationId)) {
    -                children.add(op);
    -            }
    -        }
    -        return children;
    -    }
    -
    -    /**
    -     * Gets an operation by its globally unique operationId, and updates replay state. Transitions from REPLAY to
    -     * EXECUTION mode if the operation is not found or is not in a terminal state (still in progress).
    -     *
    -     * @param operationId the globally unique operation ID (e.g., "1" for root, "1-1" for child context)
    -     * @return the existing operation, or null if not found (first execution)
    -     */
    -    public Operation getOperationAndUpdateReplayState(String operationId) {
    -        var existing = operationStorage.get(operationId);
    -        if (executionMode.get() == ExecutionMode.REPLAY && (existing == null || !isTerminalStatus(existing.status()))) {
    -            if (executionMode.compareAndSet(ExecutionMode.REPLAY, ExecutionMode.EXECUTION)) {
    -                logger.debug("Transitioned to EXECUTION mode at operation '{}'", operationId);
    -            }
    -        }
    -        return existing;
    -    }
    -
    -    /** Returns the initial EXECUTION operation from the checkpoint state. */
    -    public Operation getExecutionOperation() {
    -        return executionOp;
    -    }
    -
    -    /**
    -     * Checks whether there are any cached operations for the given parent context ID. Used to initialize per-context
    -     * replay state β€” a context starts in replay mode if the ExecutionManager has cached operations belonging to it.
    -     *
    -     * @param parentId the context ID to check (null for root context)
    -     * @return true if at least one operation exists with the given parentId
    -     */
    -    public boolean hasOperationsForContext(String parentId) {
    -        return operationStorage.values().stream().anyMatch(op -> Objects.equals(op.parentId(), parentId));
    -    }
    -
    -    // ===== Thread Coordination =====
    -    /** Sets the current thread's ThreadContext (threadId and threadType). Called when a user thread is started. */
    -    public void setCurrentThreadContext(ThreadContext threadContext) {
    -        currentThreadContext.set(threadContext);
    -    }
    -
    -    /** Returns the current thread's ThreadContext (threadId and threadType), or null if not set. */
    -    public ThreadContext getCurrentThreadContext() {
    -        return currentThreadContext.get();
    -    }
    -
    -    /**
    -     * Registers a thread as active.
    -     *
    -     * @see ThreadContext
    -     */
    -    public void registerActiveThread(String threadId) {
    -        synchronized (activeThreads) {
    -            if (activeThreads.add(threadId)) {
    -                logger.trace("Registered thread '{}' as active. Active threads: {}", threadId, activeThreads.size());
    -            } else {
    -                logger.warn("Thread '{}' already registered as active", threadId);
    -            }
    -        }
    -    }
    -
    -    /**
    -     * Mark a thread as inactive. If no threads remain, suspends the execution.
    -     *
    -     * @param threadId the thread ID to deregister
    -     */
    -    public void deregisterActiveThread(String threadId) {
    -        // Skip if already suspended
    -        if (executionExceptionFuture.isDone()) {
    -            return;
    -        }
    -
    -        // Add synchronized block to avoid remove then check race condition and make sure that
    -        // the suspendExecution is called only once
    -        synchronized (activeThreads) {
    -            boolean removed = activeThreads.remove(threadId);
    -            if (removed) {
    -                logger.trace("Deregistered thread '{}' Active threads: {}", threadId, activeThreads.size());
    -            } else {
    -                logger.warn("Thread '{}' not active, cannot deregister", threadId);
    -            }
    -
    -            if (activeThreads.isEmpty()) {
    -                logger.info("No active threads remaining - suspending execution");
    -                preSuspendCheck();
    -                suspendExecution();
    -            }
    -        }
    -    }
    -
    -    private void preSuspendCheck() {
    -        var hasAnyPendingOperation = operationStorage.values().stream().anyMatch(o -> switch (o.type()) {
    -            case STEP -> o.status() == OperationStatus.PENDING;
    -            case WAIT, CALLBACK -> o.status() == OperationStatus.STARTED;
    -            case CHAINED_INVOKE -> o.status() == OperationStatus.PENDING || o.status() == OperationStatus.STARTED;
    -            default -> false;
    -        });
    -
    -        if (!hasAnyPendingOperation) {
    -            logger.warn("Invalid suspension. No operation is pending");
    -        }
    -    }
    -
    -    // ===== Checkpointing =====
    -
    -    // This method will checkpoint the operation updates to the durable backend and return a future which completes
    -    // when the checkpoint completes.
    -    public CompletableFuture<Void> sendOperationUpdate(OperationUpdate update) {
    -        return checkpointManager.checkpoint(update);
    -    }
    -
    -    // ===== Polling =====
    -
    -    // This method will poll the operation updates from the durable backend and return a future which completes
    -    // when an update of the operation is received.
    -    // This is useful for in-process waits. For example, we want to
    -    // wait while another thread is still running, and we therefore are not
    -    // re-invoked because we never suspended.
    -    public CompletableFuture<Operation> pollForOperationUpdates(String operationId) {
    -        return checkpointManager.pollForUpdate(operationId);
    -    }
    -
    -    /**
    -     * Pools for operation updates at a specific time
    -     *
    -     * @param operationId the operation id to poll for updates
    -     * @param at the time to poll for updates
    -     * @return a completable future that completes with the operation update
    -     */
    -    public CompletableFuture<Operation> pollForOperationUpdates(String operationId, Instant at) {
    -        return checkpointManager.pollForUpdate(operationId, at);
    -    }
    -
    -    // ===== Utilities =====
    -    /** Shutdown the checkpoint batcher. */
    -    @Override
    -    public void close() {
    -        validateRunningThreads();
    -
    -        checkpointManager.shutdown();
    -    }
    -
    -    private void validateRunningThreads() {
    -        // This will detect stuck user thread and thread leaks in the thread pool
    -        for (BaseDurableOperation op : registeredOperations.values()) {
    -            var userHandlerFuture = op.getRunningUserHandler();
    -            if (userHandlerFuture != null && !userHandlerFuture.isDone()) {
    -                // Some user threads can still be running because
    -                // the operations that run them have never been waiting for and the execution has completed.
    -                logger.info("Waiting for operation to complete before shutting down: {}", op.getOperationId());
    -                try {
    -                    userHandlerFuture.get();
    -                } catch (InterruptedException | CancellationException e) {
    -                    // if the user handler is stuck
    -                    throw new IllegalStateException(
    -                            "Stuck running user handler when shutting down: " + op.getOperationId());
    -                } catch (Exception e) {
    -                    // ok if the future completed exceptionally
    -                }
    -            }
    -        }
    -
    -        // double check if the thread pool is empty
    -        if (durableConfig.getExecutorService() instanceof ThreadPoolExecutor threadPoolExecutor) {
    -            var threadCount = threadPoolExecutor.getActiveCount();
    -            // This may or may not be a problem because getActiveCount doesn't return an accurate number
    -            if (threadCount > 0) {
    -                logger.warn("{} active threads in user executor pool when shutting down", threadCount);
    -            }
    -        }
    -    }
    -
    -    /** Returns {@code true} if the given status represents a terminal (final) operation state. */
    -    public static boolean isTerminalStatus(OperationStatus status) {
    -        return status == OperationStatus.SUCCEEDED
    -                || status == OperationStatus.FAILED
    -                || status == OperationStatus.CANCELLED
    -                || status == OperationStatus.TIMED_OUT
    -                || status == OperationStatus.STOPPED;
    -    }
    -
    -    /**
    -     * Terminates the execution immediately with an unrecoverable error.
    -     *
    -     * @param exception the unrecoverable exception that caused termination
    -     */
    -    public void terminateExecution(UnrecoverableDurableExecutionException exception) {
    -        stopAllOperations(exception);
    -        executionExceptionFuture.completeExceptionally(exception);
    -        throw exception;
    -    }
    -
    -    /** Suspends the execution by completing the execution exception future with a {@link SuspendExecutionException}. */
    -    public void suspendExecution() {
    -        var ex = new SuspendExecutionException();
    -        stopAllOperations(ex);
    -        executionExceptionFuture.completeExceptionally(ex);
    -        throw ex;
    -    }
    -
    -    /**
    -     * returns {@code true} if the execution is terminated exceptionally (with a {@link SuspendExecutionException} or an
    -     * unrecoverable error).
    -     */
    -    public boolean isExecutionCompletedExceptionally() {
    -        return executionExceptionFuture.isCompletedExceptionally();
    -    }
    -
    -    private void stopAllOperations(Exception cause) {
    -        registeredOperations.values().forEach(op -> op.getCompletionFuture().completeExceptionally(cause));
    -    }
    -
    -    /**
    -     * return a future that completes when userFuture completes successfully or the execution is terminated or
    -     * suspended.
    -     *
    -     * @param userFuture user provided function
    -     * @return a future of userFuture result if userFuture completes successfully, a user exception if userFuture
    -     *     completes with an exception, a SuspendExecutionException if the execution is suspended, or an
    -     *     UnrecoverableDurableExecutionException if the execution is terminated.
    -     */
    -    public <T> CompletableFuture<T> runUntilCompleteOrSuspend(CompletableFuture<T> userFuture) {
    -        return CompletableFuture.anyOf(userFuture, executionExceptionFuture).thenApply(v -> {
    -            // reaches here only if userFuture complete successfully
    -            if (userFuture.isDone()) {
    -                return userFuture.join();
    -            }
    -            return null;
    -        });
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionMode.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionMode.java
    deleted file mode 100644
    index 869ceedf1..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/ExecutionMode.java
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -/** Represents the current execution mode of a durable execution. */
    -enum ExecutionMode {
    -    /** Replaying completed operations from checkpoint log. */
    -    REPLAY,
    -    /** Executing new operations. */
    -    EXECUTION
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/InternalExecutor.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/InternalExecutor.java
    deleted file mode 100644
    index fd01c801e..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/InternalExecutor.java
    +++ /dev/null
    @@ -1,34 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import java.util.concurrent.Executor;
    -import java.util.concurrent.Executors;
    -import java.util.concurrent.atomic.AtomicInteger;
    -
    -/**
    - * Shared executor for internal SDK coordination tasks.
    - *
    - * <p>This executor is used for SDK-internal operations such as checkpoint batching. It is separate from the
    - * user-configured executor (via {@code DurableConfig}) which runs user-defined operations.
    - *
    - * <p>Using a dedicated thread pool ensures SDK coordination tasks are isolated from user code.
    - */
    -final class InternalExecutor {
    -
    -    private static final AtomicInteger THREAD_COUNTER = new AtomicInteger(0);
    -
    -    /**
    -     * Shared executor for all SDK-internal coordination tasks. Uses a cached thread pool that creates threads on
    -     * demand, reuses idle threads, and terminates threads after 60 seconds of inactivity by default.
    -     */
    -    static final Executor INSTANCE = Executors.newCachedThreadPool(runnable -> {
    -        var thread = new Thread(runnable, "durable-sdk-internal-" + THREAD_COUNTER.getAndIncrement());
    -        thread.setDaemon(true);
    -        return thread;
    -    });
    -
    -    private InternalExecutor() {
    -        // Utility class
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/OperationIdGenerator.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/OperationIdGenerator.java
    deleted file mode 100644
    index 08ea883db..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/OperationIdGenerator.java
    +++ /dev/null
    @@ -1,48 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import java.nio.charset.StandardCharsets;
    -import java.security.MessageDigest;
    -import java.security.NoSuchAlgorithmException;
    -import java.util.HexFormat;
    -import java.util.concurrent.atomic.AtomicInteger;
    -
    -/** Generates operation IDs for the durable operations. */
    -public class OperationIdGenerator {
    -    private final AtomicInteger operationCounter;
    -    private final String operationIdPrefix;
    -
    -    public OperationIdGenerator(String contextId) {
    -        this.operationCounter = new AtomicInteger(0);
    -        this.operationIdPrefix = contextId != null ? contextId + "-" : "";
    -    }
    -
    -    /**
    -     * Hashes the given string using SHA-256
    -     *
    -     * @param rawId the string to hash
    -     * @return the hashed string
    -     */
    -    public static String hashOperationId(String rawId) {
    -        try {
    -            var messageDigest = MessageDigest.getInstance("SHA-256");
    -            var hash = messageDigest.digest(rawId.getBytes(StandardCharsets.UTF_8));
    -            return HexFormat.of().formatHex(hash);
    -        } catch (NoSuchAlgorithmException e) {
    -            throw new RuntimeException("failed to get next operation id, SHA-256 not available", e);
    -        }
    -    }
    -
    -    /**
    -     * Returns the next globally unique operation ID. Increments an internal counter, concatenates it with the context
    -     * ID prefix ({@code contextId + "-" + counter}), and SHA-256 hashes the result. For root contexts the prefix is the
    -     * EXECUTION operation ID; for child contexts it is the parent's hashed context ID. This produces IDs like
    -     * {@code hash("execId-1")}, {@code hash("execId-2")} at the root level, and {@code hash("<parentHash>-1")},
    -     * {@code hash("<parentHash>-2")} inside a child context.
    -     */
    -    public String nextOperationId() {
    -        var counter = String.valueOf(operationCounter.incrementAndGet());
    -        return hashOperationId(operationIdPrefix + counter);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/SuspendExecutionException.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/SuspendExecutionException.java
    deleted file mode 100644
    index 85eb6254d..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/SuspendExecutionException.java
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -/** Exception thrown to suspend execution during wait operations. This is an internal control flow mechanism. */
    -public class SuspendExecutionException extends RuntimeException {
    -    public SuspendExecutionException() {
    -        super("Execution suspended for wait operation");
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadContext.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadContext.java
    deleted file mode 100644
    index c2345fc69..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadContext.java
    +++ /dev/null
    @@ -1,6 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -/** Holds the current thread's execution context. */
    -public record ThreadContext(String threadId, ThreadType threadType) {}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadType.java b/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadType.java
    deleted file mode 100644
    index 03201781a..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/execution/ThreadType.java
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -/**
    - * Thread type enum for tracking conceptual threads in durable execution.
    - *
    - * <p>These are not physical OS threads, but logical threads representing different types of work in the execution.
    - */
    -public enum ThreadType {
    -    CONTEXT("Context"),
    -    STEP("Step");
    -
    -    private final String displayName;
    -
    -    ThreadType(String displayName) {
    -        this.displayName = displayName;
    -    }
    -
    -    @Override
    -    public String toString() {
    -        return displayName;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/logging/DurableLogger.java b/sdk/src/main/java/software/amazon/lambda/durable/logging/DurableLogger.java
    deleted file mode 100644
    index 735e42867..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/logging/DurableLogger.java
    +++ /dev/null
    @@ -1,105 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.logging;
    -
    -import org.slf4j.Logger;
    -import org.slf4j.MDC;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.StepContext;
    -import software.amazon.lambda.durable.context.BaseContextImpl;
    -
    -/**
    - * Logger wrapper that adds durable execution context to log entries via MDC and optionally suppresses logs during
    - * replay.
    - */
    -public class DurableLogger {
    -    static final String MDC_EXECUTION_ARN = "durableExecutionArn";
    -    static final String MDC_REQUEST_ID = "requestId";
    -    static final String MDC_OPERATION_ID = "operationId";
    -    static final String MDC_CONTEXT_ID = "contextId";
    -    static final String MDC_OPERATION_NAME = "operationName";
    -    static final String MDC_CONTEXT_NAME = "contextName";
    -    static final String MDC_ATTEMPT = "attempt";
    -
    -    private final Logger delegate;
    -    private final BaseContextImpl context;
    -
    -    /**
    -     * Creates a DurableLogger wrapping the given SLF4J logger with execution context MDC entries.
    -     *
    -     * @param delegate the SLF4J logger to wrap
    -     * @param context the durable execution context providing MDC values
    -     */
    -    public DurableLogger(Logger delegate, BaseContextImpl context) {
    -        this.delegate = delegate;
    -        this.context = context;
    -
    -        // execution arn
    -        MDC.put(MDC_EXECUTION_ARN, context.getExecutionArn());
    -
    -        // lambda request id
    -        var requestId =
    -                context.getLambdaContext() != null ? context.getLambdaContext().getAwsRequestId() : null;
    -        if (requestId != null) {
    -            MDC.put(MDC_REQUEST_ID, requestId);
    -        }
    -
    -        if (context instanceof DurableContext) {
    -            // context thread - context id and name
    -            if (context.getContextId() != null) {
    -                MDC.put(MDC_CONTEXT_ID, context.getContextId());
    -            }
    -            if (context.getContextName() != null) {
    -                MDC.put(MDC_CONTEXT_NAME, context.getContextName());
    -            }
    -        } else if (context instanceof StepContext stepContext) {
    -            // In step context, context id is the operation id, context name is the operation name
    -            var operationId = context.getContextId();
    -            MDC.put(MDC_OPERATION_ID, operationId);
    -            if (context.getContextName() != null) {
    -                MDC.put(MDC_OPERATION_NAME, context.getContextName());
    -            }
    -            MDC.put(MDC_ATTEMPT, String.valueOf(stepContext.getAttempt()));
    -        }
    -    }
    -
    -    /** Clears all MDC entries. User set MDC entries will also be removed as the thread will not be used anymore. */
    -    public void close() {
    -        MDC.clear();
    -    }
    -
    -    public void trace(String format, Object... args) {
    -        log(() -> delegate.trace(format, args));
    -    }
    -
    -    public void debug(String format, Object... args) {
    -        log(() -> delegate.debug(format, args));
    -    }
    -
    -    public void info(String format, Object... args) {
    -        log(() -> delegate.info(format, args));
    -    }
    -
    -    public void warn(String format, Object... args) {
    -        log(() -> delegate.warn(format, args));
    -    }
    -
    -    public void error(String format, Object... args) {
    -        log(() -> delegate.error(format, args));
    -    }
    -
    -    public void error(String message, Throwable t) {
    -        log(() -> delegate.error(message, t));
    -    }
    -
    -    private boolean shouldSuppress() {
    -        return context.getDurableConfig().getLoggerConfig().suppressReplayLogs()
    -                && context.getExecutionManager().isReplaying();
    -    }
    -
    -    private void log(Runnable logAction) {
    -        if (!shouldSuppress()) {
    -            logAction.run();
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/logging/LoggerConfig.java b/sdk/src/main/java/software/amazon/lambda/durable/logging/LoggerConfig.java
    deleted file mode 100644
    index 66e16045c..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/logging/LoggerConfig.java
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.logging;
    -
    -/** Configuration for DurableLogger behavior. */
    -public record LoggerConfig(boolean suppressReplayLogs) {
    -
    -    /** Default configuration: suppress logs during replay. */
    -    public static LoggerConfig defaults() {
    -        return new LoggerConfig(true);
    -    }
    -
    -    /** Configuration that allows logs during replay. */
    -    public static LoggerConfig withReplayLogging() {
    -        return new LoggerConfig(false);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.java b/sdk/src/main/java/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.java
    deleted file mode 100644
    index 220e25867..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/ConcurrencyCompletionStatus.java
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -public enum ConcurrencyCompletionStatus {
    -    ALL_COMPLETED,
    -    MIN_SUCCESSFUL_REACHED,
    -    FAILURE_TOLERANCE_EXCEEDED;
    -
    -    @Override
    -    public String toString() {
    -        return name();
    -    }
    -
    -    public boolean isSucceeded() {
    -        return this == ALL_COMPLETED || this == MIN_SUCCESSFUL_REACHED;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionInput.java b/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionInput.java
    deleted file mode 100644
    index f2bf4b986..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionInput.java
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -
    -/**
    - * Input payload received by the Lambda handler from the Durable Functions backend.
    - *
    - * @param durableExecutionArn ARN identifying this durable execution
    - * @param checkpointToken token used to authenticate checkpoint API calls
    - * @param initialExecutionState snapshot of operations already completed in previous invocations
    - */
    -public record DurableExecutionInput(
    -        String durableExecutionArn, String checkpointToken, CheckpointUpdatedExecutionState initialExecutionState) {}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionOutput.java b/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionOutput.java
    deleted file mode 100644
    index 9a604e491..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/DurableExecutionOutput.java
    +++ /dev/null
    @@ -1,30 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -
    -/**
    - * Output payload returned by the Lambda handler to the Durable Functions backend.
    - *
    - * @param status the execution status (SUCCEEDED, FAILED, or PENDING)
    - * @param result the serialized result on success, or null otherwise
    - * @param error the error details on failure, or null otherwise
    - */
    -public record DurableExecutionOutput(ExecutionStatus status, String result, ErrorObject error) {
    -
    -    /** Creates a successful output with the given serialized result. */
    -    public static DurableExecutionOutput success(String result) {
    -        return new DurableExecutionOutput(ExecutionStatus.SUCCEEDED, result, null);
    -    }
    -
    -    /** Creates a pending output indicating the execution was suspended. */
    -    public static DurableExecutionOutput pending() {
    -        return new DurableExecutionOutput(ExecutionStatus.PENDING, null, null);
    -    }
    -
    -    /** Creates a failed output with the given error details. */
    -    public static DurableExecutionOutput failure(ErrorObject errorObject) {
    -        return new DurableExecutionOutput(ExecutionStatus.FAILED, null, errorObject);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/ExecutionStatus.java b/sdk/src/main/java/software/amazon/lambda/durable/model/ExecutionStatus.java
    deleted file mode 100644
    index a364ca5aa..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/ExecutionStatus.java
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -/** Terminal status of a durable execution. */
    -public enum ExecutionStatus {
    -    SUCCEEDED,
    -    FAILED,
    -    PENDING;
    -
    -    @Override
    -    public String toString() {
    -        return name();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/MapResult.java b/sdk/src/main/java/software/amazon/lambda/durable/model/MapResult.java
    deleted file mode 100644
    index 9fbbbcb09..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/MapResult.java
    +++ /dev/null
    @@ -1,137 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import java.util.Collections;
    -import java.util.List;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Result container for map operations.
    - *
    - * <p>Holds ordered results from a map operation. Each index corresponds to the input item at the same position. Each
    - * item is represented as a {@link MapResultItem} containing its status, result, and error. Includes the
    - * {@link ConcurrencyCompletionStatus} indicating why the operation completed.
    - *
    - * <p>Errors are stored as {@link MapError} rather than raw Throwable, so they survive serialization across
    - * checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.
    - *
    - * @param items ordered result items from the map operation
    - * @param completionReason why the operation completed
    - * @param <T> the result type of each item
    - */
    -public record MapResult<T>(List<MapResultItem<T>> items, ConcurrencyCompletionStatus completionReason) {
    -
    -    /** Compact constructor that applies defensive copy and defaults. */
    -    public MapResult {
    -        items = items != null ? List.copyOf(items) : Collections.emptyList();
    -        completionReason = completionReason != null ? completionReason : ConcurrencyCompletionStatus.ALL_COMPLETED;
    -    }
    -
    -    /** Returns an empty MapResult with no items. */
    -    public static <T> MapResult<T> empty() {
    -        return new MapResult<>(Collections.emptyList(), ConcurrencyCompletionStatus.ALL_COMPLETED);
    -    }
    -
    -    /** Returns the result item at the given index. */
    -    public MapResultItem<T> getItem(int index) {
    -        return items.get(index);
    -    }
    -
    -    /** Returns the result at the given index, or null if that item failed or was not started. */
    -    public T getResult(int index) {
    -        return items.get(index).result();
    -    }
    -
    -    /** Returns the error at the given index, or null if that item succeeded or was not started. */
    -    public MapError getError(int index) {
    -        return items.get(index).error();
    -    }
    -
    -    /** Returns true if all items succeeded (no failures or not-started items). */
    -    public boolean allSucceeded() {
    -        return items.stream().allMatch(item -> item.status() == MapResultItem.Status.SUCCEEDED);
    -    }
    -
    -    /** Returns the number of items in this result. */
    -    public int size() {
    -        return items.size();
    -    }
    -
    -    /** Returns all results as an unmodifiable list (nulls for failed/not-started items). */
    -    public List<T> results() {
    -        return items.stream().map(MapResultItem::result).toList();
    -    }
    -
    -    /** Returns results from items that succeeded (includes null results from successful items). */
    -    public List<T> succeeded() {
    -        return items.stream()
    -                .filter(item -> item.status() == MapResultItem.Status.SUCCEEDED)
    -                .map(MapResultItem::result)
    -                .toList();
    -    }
    -
    -    /** Returns errors from items that failed. */
    -    public List<MapError> failed() {
    -        return items.stream()
    -                .filter(item -> item.status() == MapResultItem.Status.FAILED)
    -                .map(MapResultItem::error)
    -                .toList();
    -    }
    -
    -    /**
    -     * Represents the outcome of a single item in a map operation.
    -     *
    -     * <p>Each item either succeeds with a result, fails with an error, or was never started. The status field indicates
    -     * which case applies.
    -     *
    -     * <p>Errors are stored as {@link MapError} (plain strings) rather than raw Throwable, so they survive serialization
    -     * across checkpoint-and-replay cycles without requiring AWS SDK-specific Jackson modules.
    -     *
    -     * @param status the status of this item
    -     * @param result the result value, or null if failed/not started
    -     * @param error the error details, or null if succeeded/not started
    -     * @param <T> the result type
    -     */
    -    public record MapResultItem<T>(Status status, T result, MapError error) {
    -
    -        /** Status of an individual map item. */
    -        public enum Status {
    -            SUCCEEDED,
    -            FAILED,
    -            SKIPPED
    -        }
    -
    -        /** Creates a successful result item. */
    -        public static <T> MapResultItem<T> succeeded(T result) {
    -            return new MapResultItem<>(Status.SUCCEEDED, result, null);
    -        }
    -
    -        /** Creates a failed result item. */
    -        public static <T> MapResultItem<T> failed(MapError error) {
    -            return new MapResultItem<>(Status.FAILED, null, error);
    -        }
    -
    -        /** Creates a skipped result item. */
    -        public static <T> MapResultItem<T> skipped() {
    -            return new MapResultItem<>(Status.SKIPPED, null, null);
    -        }
    -    }
    -
    -    /**
    -     * Error details for a failed map item.
    -     *
    -     * <p>Stores error information as plain strings so that {@link MapResult} can be serialized through the user's
    -     * SerDes without requiring AWS SDK-specific Jackson modules.
    -     *
    -     * @param errorType the fully qualified exception class name
    -     * @param errorMessage the error message
    -     * @param stackTrace the stack trace frames, or null
    -     */
    -    public record MapError(String errorType, String errorMessage, List<String> stackTrace) {
    -        public static MapError of(Throwable e) {
    -            return new MapError(
    -                    e.getClass().getName(), e.getMessage(), ExceptionHelper.serializeStackTrace(e.getStackTrace()));
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/OperationIdentifier.java b/sdk/src/main/java/software/amazon/lambda/durable/model/OperationIdentifier.java
    deleted file mode 100644
    index 17fd4771a..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/OperationIdentifier.java
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -
    -/**
    - * Identifies a durable operation by its unique ID, human-readable name, type, and optional sub-type.
    - *
    - * @param operationId unique sequential identifier for the operation within an execution
    - * @param name human-readable name for the operation
    - * @param operationType the kind of operation (STEP, WAIT, CALLBACK, etc.)
    - * @param subType optional sub-type for operations that need further classification (e.g. child contexts)
    - */
    -public record OperationIdentifier(
    -        String operationId, String name, OperationType operationType, OperationSubType subType) {
    -
    -    /** Creates an identifier without a sub-type. */
    -    public static OperationIdentifier of(String operationId, String name, OperationType type) {
    -        return new OperationIdentifier(operationId, name, type, null);
    -    }
    -
    -    /** Creates an identifier with a sub-type. */
    -    public static OperationIdentifier of(
    -            String operationId, String name, OperationType type, OperationSubType subType) {
    -        return new OperationIdentifier(operationId, name, type, subType);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/OperationSubType.java b/sdk/src/main/java/software/amazon/lambda/durable/model/OperationSubType.java
    deleted file mode 100644
    index 90c351487..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/OperationSubType.java
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -/**
    - * Fine-grained classification of durable operations beyond the basic operation types.
    - *
    - * <p>Used as the {@code subType} field in checkpoint updates for {@code CONTEXT} operations. Matches the
    - * {@code OperationSubType} enum in the JavaScript and Python durable execution SDKs.
    - */
    -public enum OperationSubType {
    -    RUN_IN_CHILD_CONTEXT("RunInChildContext"),
    -    MAP("Map"),
    -    MAP_ITERATION("MapIteration"),
    -    PARALLEL("Parallel"),
    -    PARALLEL_BRANCH("ParallelBranch"),
    -    WAIT_FOR_CALLBACK("WaitForCallback"),
    -    WAIT_FOR_CONDITION("WaitForCondition");
    -
    -    private final String value;
    -
    -    OperationSubType(String value) {
    -        this.value = value;
    -    }
    -
    -    /** Returns the wire-format string value sent in checkpoint updates. */
    -    public String getValue() {
    -        return value;
    -    }
    -
    -    @Override
    -    public String toString() {
    -        return value;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/ParallelResult.java b/sdk/src/main/java/software/amazon/lambda/durable/model/ParallelResult.java
    deleted file mode 100644
    index 11bd9049e..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/ParallelResult.java
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -/**
    - * Summary result of a parallel operation.
    - *
    - * <p>Captures the aggregate outcome of a parallel execution: how many branches were registered, how many succeeded, how
    - * many failed, and why the operation completed.
    - */
    -public record ParallelResult(int size, int succeeded, int failed, ConcurrencyCompletionStatus completionStatus) {}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/model/WaitForConditionResult.java b/sdk/src/main/java/software/amazon/lambda/durable/model/WaitForConditionResult.java
    deleted file mode 100644
    index 67c073c82..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/model/WaitForConditionResult.java
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -/**
    - * Result returned by a WaitForCondition check function to signal whether the condition is met.
    - *
    - * <p>When {@code isDone} is true, polling stops and {@code value} becomes the final result. When {@code isDone} is
    - * false, polling continues using the delay computed by the wait strategy.
    - *
    - * @param value the current state after evaluation
    - * @param isDone true if the condition is met and polling should stop, false to continue polling
    - * @param <T> the type of the state value
    - */
    -public record WaitForConditionResult<T>(T value, boolean isDone) {
    -
    -    /**
    -     * Creates a result indicating the condition is met and polling should stop.
    -     *
    -     * @param value the final state value
    -     * @param <T> the type of the state value
    -     * @return a WaitForConditionResult with isDone=true
    -     */
    -    public static <T> WaitForConditionResult<T> stopPolling(T value) {
    -        return new WaitForConditionResult<>(value, true);
    -    }
    -
    -    /**
    -     * Creates a result indicating polling should continue with the given state.
    -     *
    -     * @param value the current state value to pass to the next check
    -     * @param <T> the type of the state value
    -     * @return a WaitForConditionResult with isDone=false
    -     */
    -    public static <T> WaitForConditionResult<T> continuePolling(T value) {
    -        return new WaitForConditionResult<>(value, false);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/BaseDurableOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/BaseDurableOperation.java
    deleted file mode 100644
    index 069977a07..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/BaseDurableOperation.java
    +++ /dev/null
    @@ -1,412 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.time.Instant;
    -import java.util.List;
    -import java.util.Objects;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.atomic.AtomicReference;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
    -import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Base class for all durable operations (STEP, WAIT, etc.).
    - *
    - * <p>Key methods:
    - *
    - * <ul>
    - *   <li>{@code execute()} starts the operation (returns immediately)
    - *   <li>{@code get()} blocks until complete and returns the result
    - * </ul>
    - *
    - * <p>The separation allows:
    - *
    - * <ul>
    - *   <li>Starting multiple async operations quickly
    - *   <li>Blocking on results later when needed
    - *   <li>Proper thread coordination via future
    - * </ul>
    - */
    -public abstract class BaseDurableOperation {
    -    private static final Logger logger = LoggerFactory.getLogger(BaseDurableOperation.class);
    -
    -    private final OperationIdentifier operationIdentifier;
    -    protected final ExecutionManager executionManager;
    -    protected final CompletableFuture<BaseDurableOperation> completionFuture;
    -    protected final BaseDurableOperation parentOperation;
    -    private final DurableContextImpl durableContext;
    -    private final AtomicReference<CompletableFuture<Void>> runningUserHandler = new AtomicReference<>(null);
    -
    -    /**
    -     * Constructs a new durable operation.
    -     *
    -     * @param operationIdentifier the unique identifier for this operation
    -     * @param durableContext the parent context this operation belongs to
    -     * @param parentOperation the parent operation if this is a branch/iteration of a ConcurrencyOperation
    -     */
    -    protected BaseDurableOperation(
    -            OperationIdentifier operationIdentifier,
    -            DurableContextImpl durableContext,
    -            BaseDurableOperation parentOperation) {
    -        this.operationIdentifier = operationIdentifier;
    -        this.parentOperation = parentOperation;
    -        this.durableContext = durableContext;
    -        this.executionManager = durableContext.getExecutionManager();
    -
    -        this.completionFuture = new CompletableFuture<>();
    -
    -        // register this operation in ExecutionManager so that the operation can receive updates from ExecutionManager
    -        executionManager.registerOperation(this);
    -    }
    -
    -    public CompletableFuture<BaseDurableOperation> getCompletionFuture() {
    -        return completionFuture;
    -    }
    -
    -    /** Gets the operation sub-type (e.g. RUN_IN_CHILD_CONTEXT, WAIT_FOR_CALLBACK). */
    -    public OperationSubType getSubType() {
    -        return operationIdentifier.subType();
    -    }
    -
    -    /** Gets the unique identifier for this operation. */
    -    public String getOperationId() {
    -        return operationIdentifier.operationId();
    -    }
    -
    -    /** Gets the operation name (may be null). */
    -    public String getName() {
    -        return operationIdentifier.name();
    -    }
    -
    -    /** Gets the parent context. */
    -    protected DurableContextImpl getContext() {
    -        return durableContext;
    -    }
    -
    -    /** Gets the operation type. */
    -    public OperationType getType() {
    -        return operationIdentifier.operationType();
    -    }
    -
    -    /**
    -     * Starts the operation by checking for an existing checkpoint. If a checkpoint exists, validates and replays it;
    -     * otherwise starts fresh execution.
    -     */
    -    public void execute() {
    -        var existing = getOperation();
    -
    -        if (existing != null) {
    -            validateReplay(existing);
    -            replay(existing);
    -        } else {
    -            if (durableContext.isReplaying()) {
    -                this.durableContext.setExecutionMode();
    -            }
    -            start();
    -        }
    -    }
    -
    -    /** Starts the operation on first execution (no existing checkpoint). */
    -    protected abstract void start();
    -
    -    /**
    -     * Replays the operation from an existing checkpoint.
    -     *
    -     * @param existing the checkpointed operation state
    -     */
    -    protected abstract void replay(Operation existing);
    -
    -    /**
    -     * Gets the Operation from ExecutionManager and update the replay state from REPLAY to EXECUTE if operation is not
    -     * found. Operation IDs are globally unique (prefixed for child contexts), so no parentId is needed for lookups.
    -     *
    -     * @return the operation if found, otherwise null
    -     */
    -    protected Operation getOperation() {
    -        return executionManager.getOperationAndUpdateReplayState(getOperationId());
    -    }
    -
    -    /**
    -     * Gets the direct child Operations of this context operation
    -     *
    -     * @return list of the child Operations
    -     */
    -    protected List<Operation> getChildOperations() {
    -        return executionManager.getChildOperations(getOperationId());
    -    }
    -
    -    /**
    -     * Checks if it's called from a Step.
    -     *
    -     * @throws IllegalDurableOperationException if it's in a step
    -     */
    -    private void validateCurrentThreadType() {
    -        ThreadType current = getCurrentThreadContext().threadType();
    -        if (current == ThreadType.STEP) {
    -            var message = String.format(
    -                    "Nested %s operation is not supported on %s from within a %s execution.",
    -                    getType(), getName(), current);
    -            // terminate execution and throw the exception
    -            throw terminateExecutionWithIllegalDurableOperationException(message);
    -        }
    -    }
    -
    -    /** Returns true if this operation has completed (successfully or exceptionally). */
    -    protected boolean isOperationCompleted() {
    -        return completionFuture.isDone();
    -    }
    -
    -    /**
    -     * Waits for the operation to complete. Deregisters the current thread to allow Lambda suspension if the operation
    -     * is still in progress, then re-registers when the operation completes.
    -     *
    -     * @return the completed operation
    -     */
    -    protected Operation waitForOperationCompletion() {
    -
    -        validateCurrentThreadType();
    -
    -        var threadContext = getCurrentThreadContext();
    -
    -        // It's important that we synchronize access to the future. Otherwise, a race condition could happen if the
    -        // completionFuture is completed by a user thread (a step or child context thread) when the execution here
    -        // is between `isOperationCompleted` and `thenRun`.
    -        // If this operation is a branch/iteration of a ConcurrencyOperation (map or parallel), the branches/iterations
    -        // must be completed sequentially to avoid race conditions.
    -        synchronized (parentOperation == null ? completionFuture : parentOperation.completionFuture) {
    -            if (!isOperationCompleted()) {
    -                // Operation not done yet
    -                logger.trace(
    -                        "deregistering thread {} when waiting for operation {} ({}) to complete ({})",
    -                        threadContext.threadId(),
    -                        getOperation(),
    -                        getType(),
    -                        completionFuture);
    -
    -                // Add a completion stage to completionFuture so that when the completionFuture is completed,
    -                // it will register the current Context thread synchronously to make sure it is always registered
    -                // strictly before the execution thread (Step or child context) is deregistered.
    -                completionFuture.thenRun(() -> registerActiveThread(threadContext.threadId()));
    -
    -                // Deregister the current thread to allow suspension
    -                executionManager.deregisterActiveThread(threadContext.threadId());
    -            }
    -        }
    -
    -        // Block until operation completes. No-op if the future is already completed.
    -        try {
    -            completionFuture.join();
    -        } catch (Throwable throwable) {
    -            ExceptionHelper.sneakyThrow(ExceptionHelper.unwrapCompletableFuture(throwable));
    -        }
    -
    -        // Get result based on status
    -        var op = getOperation();
    -        if (op == null) {
    -            throw terminateExecutionWithIllegalDurableOperationException(
    -                    String.format("%s operation not found: %s", getType(), getOperationId()));
    -        }
    -        return op;
    -    }
    -
    -    protected void runUserHandler(Runnable runnable, ThreadType threadType) {
    -        String operationId = getOperationId();
    -        logger.debug("Starting user handler for operation {} ({})", operationId, threadType);
    -        Runnable wrapped = () -> {
    -            executionManager.setCurrentThreadContext(new ThreadContext(operationId, threadType));
    -            try {
    -                runnable.run();
    -            } catch (Throwable throwable) {
    -                // Operations always wrap the user's function and handles all possible exceptions except for
    -                // SuspendExecutionException.
    -                if (!executionManager.isExecutionCompletedExceptionally()
    -                        && !(throwable instanceof SuspendExecutionException)) {
    -                    logger.error("An unhandled exception is thrown from user function: ", throwable);
    -                    throw terminateExecutionWithIllegalDurableOperationException(
    -                            "An unhandled exception is thrown from user function: " + throwable);
    -                }
    -            } finally {
    -                if (operationId != null) {
    -                    try {
    -                        // if this is a child context or a step context, we need to
    -                        // deregister the context's thread from the execution manager
    -                        executionManager.deregisterActiveThread(operationId);
    -                    } catch (SuspendExecutionException e) {
    -                        // Expected when this is the last active thread. Must catch here because:
    -                        // 1/ This runs in a worker thread detached from handlerFuture
    -                        // 2/ Uncaught exception would prevent stepAsync().get() from resume
    -                        // Suspension/Termination is already signaled via
    -                        // suspendExecutionFuture/terminateExecutionFuture
    -                        // before the throw.
    -                    }
    -                }
    -            }
    -        };
    -
    -        // runUserHandler is used to ensure that only one user handler is running at a time
    -        if (runningUserHandler.get() != null && !runningUserHandler.get().isDone()) {
    -            logger.error("User handler already running for operation {} ({})", getOperationId(), threadType);
    -            throw terminateExecutionWithIllegalDurableOperationException(
    -                    "User handler already running: " + getOperationId());
    -        }
    -
    -        // Thread registration is intentionally split across two threads:
    -        // 1. registerActiveThread on the PARENT thread β€” ensures the child is tracked before the
    -        //    parent can deregister and trigger suspension (race prevention).
    -        // 2. setCurrentContext on the CHILD thread β€” sets the ThreadLocal so operations inside
    -        //    the child context know which context they belong to.
    -        // registerActiveThread is idempotent (no-op if already registered).
    -        registerActiveThread(operationId);
    -
    -        runningUserHandler.set(CompletableFuture.runAsync(
    -                wrapped, getContext().getDurableConfig().getExecutorService()));
    -    }
    -
    -    /**
    -     * Receives operation updates from ExecutionManager. Completes the internal future when the operation reaches a
    -     * terminal status, unblocking any threads waiting on this operation.
    -     *
    -     * @param operation the updated operation state
    -     */
    -    public void onCheckpointComplete(Operation operation) {
    -        if (ExecutionManager.isTerminalStatus(operation.status())) {
    -            // This method handles only terminal status updates. Override this method if a DurableOperation needs to
    -            // handle other updates.
    -            logger.trace("In onCheckpointComplete, completing operation {} ({})", getOperationId(), completionFuture);
    -
    -            markCompletionFutureCompleted();
    -        }
    -    }
    -
    -    /** Marks the operation as already completed (in replay). */
    -    protected void markAlreadyCompleted() {
    -        // When the operation is already completed in a replay, we complete completionFuture immediately
    -        // so that the `get` method will be unblocked and the context thread will be registered
    -        logger.trace("In markAlreadyCompleted, completing operation: {} ({}).", getOperationId(), completionFuture);
    -        markCompletionFutureCompleted();
    -    }
    -
    -    private void markCompletionFutureCompleted() {
    -        // It's important that we synchronize access to the future, otherwise the processing could happen
    -        // on someone else's thread and cause a race condition.
    -        synchronized (parentOperation == null ? completionFuture : parentOperation.completionFuture) {
    -            // Completing the future here will also run any other completion stages that have been attached
    -            // to the future. In our case, other contexts may have attached a function to reactivate themselves,
    -            // so they will definitely have a chance to reactivate before we finish completing and deactivating
    -            // whatever operations were just checkpointed.
    -            completionFuture.complete(this);
    -        }
    -    }
    -
    -    /**
    -     * Terminates the execution with the given exception.
    -     *
    -     * @param exception the unrecoverable exception
    -     * @return never returns normally; always throws
    -     */
    -    protected RuntimeException terminateExecution(UnrecoverableDurableExecutionException exception) {
    -        executionManager.terminateExecution(exception);
    -        // Exception is already thrown from above. Keep the throw statement below to make tests happy
    -        throw exception;
    -    }
    -
    -    /**
    -     * Terminates the execution with an {@link IllegalDurableOperationException}.
    -     *
    -     * @param message the error message
    -     * @return never returns normally; always throws
    -     */
    -    protected RuntimeException terminateExecutionWithIllegalDurableOperationException(String message) {
    -        return terminateExecution(new IllegalDurableOperationException(message));
    -    }
    -
    -    /**
    -     * Registers a thread as active in the execution manager.
    -     *
    -     * @param threadId the thread identifier to register
    -     */
    -    protected void registerActiveThread(String threadId) {
    -        executionManager.registerActiveThread(threadId);
    -    }
    -
    -    /** Returns the current thread's context from the execution manager. */
    -    protected ThreadContext getCurrentThreadContext() {
    -        return executionManager.getCurrentThreadContext();
    -    }
    -
    -    /** Polls the backend for updates to this operation. */
    -    protected CompletableFuture<Operation> pollForOperationUpdates() {
    -        return executionManager.pollForOperationUpdates(getOperationId());
    -    }
    -
    -    /**
    -     * Polls the backend for updates to this operation at a specific time.
    -     *
    -     * @param at the time to poll for updates
    -     * @return a future that completes with the updated operation
    -     */
    -    protected CompletableFuture<Operation> pollForOperationUpdates(Instant at) {
    -        return executionManager.pollForOperationUpdates(getOperationId(), at);
    -    }
    -
    -    /** Sends an operation update synchronously (blocks until the update is acknowledged). */
    -    protected void sendOperationUpdate(OperationUpdate.Builder builder) {
    -        sendOperationUpdateAsync(builder).join();
    -    }
    -
    -    /** Sends an operation update asynchronously. */
    -    protected CompletableFuture<Void> sendOperationUpdateAsync(OperationUpdate.Builder builder) {
    -        var updateBuilder =
    -                builder.id(getOperationId()).name(getName()).type(getType()).parentId(durableContext.getContextId());
    -        if (getSubType() != null) {
    -            updateBuilder.subType(getSubType().getValue());
    -        }
    -        return executionManager.sendOperationUpdate(updateBuilder.build());
    -    }
    -
    -    /** Validates that current operation matches checkpointed operation during replay. */
    -    protected void validateReplay(Operation checkpointed) {
    -        if (checkpointed == null || checkpointed.type() == null) {
    -            return; // First execution, no validation needed
    -        }
    -
    -        if (!checkpointed.type().equals(getType())) {
    -            throw terminateExecution(new NonDeterministicExecutionException(String.format(
    -                    "Operation type mismatch for \"%s\". Expected %s, got %s",
    -                    getOperationId(), checkpointed.type(), getType())));
    -        }
    -
    -        if (!Objects.equals(checkpointed.name(), getName())) {
    -            throw terminateExecution(new NonDeterministicExecutionException(String.format(
    -                    "Operation name mismatch for \"%s\". Expected \"%s\", got \"%s\"",
    -                    getOperationId(), checkpointed.name(), getName())));
    -        }
    -
    -        if ((getSubType() == null && checkpointed.subType() != null)
    -                || getSubType() != null
    -                        && !Objects.equals(checkpointed.subType(), getSubType().getValue())) {
    -            throw terminateExecution(new NonDeterministicExecutionException(String.format(
    -                    "Operation subType mismatch for \"%s\". Expected \"%s\", got \"%s\"",
    -                    getOperationId(), checkpointed.subType(), getSubType())));
    -        }
    -    }
    -
    -    public CompletableFuture<Void> getRunningUserHandler() {
    -        return runningUserHandler.get();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/CallbackOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/CallbackOperation.java
    deleted file mode 100644
    index 9d9481fb9..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/CallbackOperation.java
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import software.amazon.awssdk.services.lambda.model.CallbackOptions;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableCallbackFuture;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.CallbackFailedException;
    -import software.amazon.lambda.durable.exception.CallbackTimeoutException;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -
    -/** Durable operation for creating and waiting on external callbacks. */
    -public class CallbackOperation<T> extends SerializableDurableOperation<T> implements DurableCallbackFuture<T> {
    -
    -    private final CallbackConfig config;
    -
    -    private String callbackId;
    -
    -    public CallbackOperation(
    -            OperationIdentifier operationIdentifier,
    -            TypeToken<T> resultTypeToken,
    -            CallbackConfig config,
    -            DurableContextImpl durableContext) {
    -        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
    -        this.config = config;
    -    }
    -
    -    public String callbackId() {
    -        return callbackId;
    -    }
    -
    -    /** Starts the operation. */
    -    @Override
    -    protected void start() {
    -        // First execution: checkpoint and get callback ID
    -        var update = OperationUpdate.builder().action(OperationAction.START).callbackOptions(buildCallbackOptions());
    -
    -        sendOperationUpdate(update);
    -
    -        // Get the callback ID from the updated operation
    -        var op = getOperation();
    -        callbackId = op.callbackDetails().callbackId();
    -
    -        pollForOperationUpdates();
    -    }
    -
    -    /** Replays the operation. */
    -    @Override
    -    protected void replay(Operation existing) {
    -        // Replay: use existing callback ID
    -        callbackId = existing.callbackDetails().callbackId();
    -
    -        switch (existing.status()) {
    -            case SUCCEEDED, FAILED, TIMED_OUT -> {
    -                // Terminal state - complete the operation immediately
    -                markAlreadyCompleted();
    -                return;
    -            }
    -            case STARTED -> {
    -                // Still waiting - continue to polling
    -            }
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected callback status: " + existing.status());
    -        }
    -        pollForOperationUpdates();
    -    }
    -
    -    @Override
    -    public T get() {
    -        var op = waitForOperationCompletion();
    -
    -        return switch (op.status()) {
    -            case SUCCEEDED -> deserializeResult(op.callbackDetails().result());
    -            case FAILED -> throw new CallbackFailedException(op);
    -            case TIMED_OUT -> throw new CallbackTimeoutException(op);
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected callback status: " + op.status());
    -        };
    -    }
    -
    -    private CallbackOptions buildCallbackOptions() {
    -        var builder = CallbackOptions.builder();
    -        if (config != null) {
    -            if (config.timeout() != null) {
    -                builder.timeoutSeconds((int) config.timeout().toSeconds());
    -            }
    -            if (config.heartbeatTimeout() != null) {
    -                builder.heartbeatTimeoutSeconds((int) config.heartbeatTimeout().toSeconds());
    -            }
    -        }
    -        return builder.build();
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/ChildContextOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/ChildContextOperation.java
    deleted file mode 100644
    index bc17f13fb..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/ChildContextOperation.java
    +++ /dev/null
    @@ -1,267 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static software.amazon.lambda.durable.execution.ExecutionManager.isTerminalStatus;
    -
    -import java.nio.charset.StandardCharsets;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import java.util.function.Function;
    -import software.amazon.awssdk.services.lambda.model.ContextOptions;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.RunInChildContextConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.CallbackFailedException;
    -import software.amazon.lambda.durable.exception.CallbackSubmitterException;
    -import software.amazon.lambda.durable.exception.CallbackTimeoutException;
    -import software.amazon.lambda.durable.exception.ChildContextFailedException;
    -import software.amazon.lambda.durable.exception.DurableOperationException;
    -import software.amazon.lambda.durable.exception.MapIterationFailedException;
    -import software.amazon.lambda.durable.exception.ParallelBranchFailedException;
    -import software.amazon.lambda.durable.exception.StepFailedException;
    -import software.amazon.lambda.durable.exception.StepInterruptedException;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Manages the lifecycle of a child execution context.
    - *
    - * <p>A child context runs a user function in a separate thread with its own operation counter and checkpoint log.
    - * Operations within the child context use the child's context ID as their parentId.
    - *
    - * <p>When created as part of a {@link ConcurrencyOperation} (e.g., parallel execution), the child notifies its parent
    - * on completion via {@code onItemComplete()} BEFORE closing its own child context. It also skips checkpointing if the
    - * parent operation has already succeeded.
    - */
    -public class ChildContextOperation<T> extends SerializableDurableOperation<T> {
    -
    -    private static final int LARGE_RESULT_THRESHOLD = 256 * 1024;
    -
    -    private final Function<DurableContext, T> function;
    -    private final AtomicBoolean replayChildren = new AtomicBoolean(false);
    -    private T reconstructedResult;
    -
    -    public ChildContextOperation(
    -            OperationIdentifier operationIdentifier,
    -            Function<DurableContext, T> function,
    -            TypeToken<T> resultTypeToken,
    -            RunInChildContextConfig config,
    -            DurableContextImpl durableContext) {
    -        this(operationIdentifier, function, resultTypeToken, config, durableContext, null);
    -    }
    -
    -    public ChildContextOperation(
    -            OperationIdentifier operationIdentifier,
    -            Function<DurableContext, T> function,
    -            TypeToken<T> resultTypeToken,
    -            RunInChildContextConfig config,
    -            DurableContextImpl durableContext,
    -            ConcurrencyOperation<?> parentOperation) {
    -        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext, parentOperation);
    -        this.function = function;
    -    }
    -
    -    /** Starts the operation. */
    -    @Override
    -    protected void start() {
    -        // First execution: fire-and-forget START checkpoint, then run
    -        sendOperationUpdateAsync(OperationUpdate.builder().action(OperationAction.START));
    -        executeChildContext();
    -    }
    -
    -    /** Replays the operation. */
    -    @Override
    -    protected void replay(Operation existing) {
    -        switch (existing.status()) {
    -            case SUCCEEDED -> {
    -                if (existing.contextDetails() != null
    -                        && Boolean.TRUE.equals(existing.contextDetails().replayChildren())) {
    -                    // Large result: re-execute child context to reconstruct result
    -                    replayChildren.set(true);
    -                    executeChildContext();
    -                } else {
    -                    markAlreadyCompleted();
    -                }
    -            }
    -            case FAILED -> markAlreadyCompleted();
    -            case STARTED -> executeChildContext();
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected child context status: " + existing.status());
    -        }
    -    }
    -
    -    private void executeChildContext() {
    -        // The operationId is already globally unique (prefixed by parent context path via
    -        // DurableContext.nextOperationId), so we use it directly as the contextId.
    -        // E.g., first level child context "hash(1)",
    -        //       second level child context "hash(hash(1)-2)",
    -        //       third level child context "hash(hash(hash(1)-2)-1)".
    -        var contextId = getOperationId();
    -
    -        Runnable userHandler = () -> {
    -            // use a try-with-resources to
    -            // - add thread id/type to thread local when the step starts
    -            // - clear logger properties when the step finishes
    -            //
    -            // When this child is part of a ConcurrencyOperation (parentOperation != null),
    -            // we notify the parent BEFORE closing the child context. This ensures the parent
    -            // can trigger the next queued branch while the current child context is still valid.
    -            try (var childContext = getContext().createChildContext(contextId, getName())) {
    -                try {
    -                    T result = function.apply(childContext);
    -
    -                    handleChildContextSuccess(result);
    -                } catch (Throwable e) {
    -                    handleChildContextFailure(e);
    -                }
    -            }
    -        };
    -
    -        // Execute user provided child context code in user-configured executor
    -        runUserHandler(userHandler, ThreadType.CONTEXT);
    -    }
    -
    -    private void handleChildContextSuccess(T result) {
    -        if (replayChildren.get()) {
    -            // Replaying a SUCCEEDED child with replayChildren=true β€” skip checkpointing.
    -            // Mark the completableFuture completed so get() doesn't block waiting for a checkpoint response.
    -            this.reconstructedResult = result;
    -            markAlreadyCompleted();
    -        } else {
    -            checkpointSuccess(result);
    -        }
    -    }
    -
    -    private void checkpointSuccess(T result) {
    -        // Skip checkpointing if parent ConcurrencyOperation has already completed β€”
    -        // prevents race conditions where a child finishes after the parent has already completed.
    -        if (parentOperation != null && parentOperation.isOperationCompleted()) {
    -            return;
    -        }
    -
    -        var serialized = serializeResult(result);
    -
    -        if (serialized == null || serialized.getBytes(StandardCharsets.UTF_8).length < LARGE_RESULT_THRESHOLD) {
    -            sendOperationUpdate(
    -                    OperationUpdate.builder().action(OperationAction.SUCCEED).payload(serialized));
    -        } else {
    -            // Large result: checkpoint with empty payload + ReplayChildren flag.
    -            // Store the result so get() can return it directly without deserializing the empty payload.
    -            this.reconstructedResult = result;
    -            sendOperationUpdate(OperationUpdate.builder()
    -                    .action(OperationAction.SUCCEED)
    -                    .payload("")
    -                    .contextOptions(
    -                            ContextOptions.builder().replayChildren(true).build()));
    -        }
    -    }
    -
    -    private void handleChildContextFailure(Throwable exception) {
    -        exception = ExceptionHelper.unwrapCompletableFuture(exception);
    -        if (exception instanceof SuspendExecutionException suspendExecutionException) {
    -            // Rethrow Error immediately β€” do not checkpoint
    -            throw suspendExecutionException;
    -        }
    -        if (exception instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
    -            // terminate the execution and throw the exception if it's not recoverable
    -            throw terminateExecution(unrecoverableDurableExecutionException);
    -        }
    -
    -        // Skip checkpointing if parent ConcurrencyOperation has already completed β€”
    -        // prevents race conditions where a child finishes after the parent has already succeeded.
    -        if (parentOperation != null && parentOperation.isOperationCompleted()) {
    -            return;
    -        }
    -
    -        final ErrorObject errorObject;
    -        if (exception instanceof DurableOperationException opEx) {
    -            errorObject = opEx.getErrorObject();
    -        } else {
    -            errorObject = serializeException(exception);
    -        }
    -
    -        sendOperationUpdate(
    -                OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject));
    -    }
    -
    -    @Override
    -    public T get() {
    -        var op = waitForOperationCompletion();
    -
    -        if (op.status() == OperationStatus.SUCCEEDED) {
    -            if (reconstructedResult != null) {
    -                return reconstructedResult;
    -            }
    -            var contextDetails = op.contextDetails();
    -            var result = (contextDetails != null) ? contextDetails.result() : null;
    -            return deserializeResult(result);
    -        } else {
    -            var contextDetails = op.contextDetails();
    -            var errorObject = (contextDetails != null) ? contextDetails.error() : null;
    -
    -            // Attempt to reconstruct and throw the original exception
    -            Throwable original = deserializeException(errorObject);
    -            if (original != null) {
    -                ExceptionHelper.sneakyThrow(original);
    -            }
    -
    -            // throw a general failed exception if a user exception is not reconstructed
    -            return switch (getSubType()) {
    -                case WAIT_FOR_CALLBACK -> handleWaitForCallbackFailure();
    -                case MAP_ITERATION -> throw new MapIterationFailedException(op);
    -                case PARALLEL_BRANCH -> throw new ParallelBranchFailedException(op);
    -                case RUN_IN_CHILD_CONTEXT -> throw new ChildContextFailedException(op);
    -
    -                // the following subtypes should not be able to reach here
    -                case PARALLEL, MAP, WAIT_FOR_CONDITION ->
    -                    throw new IllegalStateException("Unexpected sub-type: " + getSubType());
    -            };
    -        }
    -    }
    -
    -    private T handleWaitForCallbackFailure() {
    -        var childrenOps = getChildOperations();
    -        var callbackOp = childrenOps.stream()
    -                .filter(o -> o.type() == OperationType.CALLBACK)
    -                .findFirst()
    -                .orElse(null);
    -        var submitterOp = childrenOps.stream()
    -                .filter(o -> o.type() == OperationType.STEP)
    -                .findFirst()
    -                .orElse(null);
    -        if (callbackOp != null) {
    -            // if callback failed
    -            if (isTerminalStatus(callbackOp.status())) {
    -                switch (callbackOp.status()) {
    -                    case FAILED -> throw new CallbackFailedException(callbackOp);
    -                    case TIMED_OUT -> throw new CallbackTimeoutException(callbackOp);
    -                }
    -            }
    -
    -            // if submitter failed
    -            if (submitterOp != null
    -                    && isTerminalStatus(submitterOp.status())
    -                    && submitterOp.status() != OperationStatus.SUCCEEDED) {
    -                var stepError = submitterOp.stepDetails().error();
    -                if (StepInterruptedException.isStepInterruptedException(stepError)) {
    -                    throw new CallbackSubmitterException(callbackOp, new StepInterruptedException(submitterOp));
    -                } else {
    -                    throw new CallbackSubmitterException(callbackOp, new StepFailedException(submitterOp));
    -                }
    -            }
    -        }
    -
    -        throw new IllegalStateException("Unknown waitForCallback status");
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/ConcurrencyOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/ConcurrencyOperation.java
    deleted file mode 100644
    index d018da2fc..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/ConcurrencyOperation.java
    +++ /dev/null
    @@ -1,342 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.Queue;
    -import java.util.Set;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.ConcurrentLinkedDeque;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import java.util.concurrent.atomic.AtomicReference;
    -import java.util.function.Function;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.RunInChildContextConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.execution.OperationIdGenerator;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Abstract base class for concurrent execution of multiple child context operations.
    - *
    - * <p>Encapsulates shared concurrency logic: queue-based concurrency control, success/failure counting, and completion
    - * checking. Both {@code ParallelOperation} and {@code MapOperation} extend this base.
    - *
    - * <p>Key design points:
    - *
    - * <ul>
    - *   <li>Does NOT register its own thread β€” child context threads handle all suspension
    - *   <li>Uses a pending queue + running counter for concurrency control
    - *   <li>Completion is determined by subclass-specific logic via abstract {@code canComplete()} and
    - *       {@code validateItemCount()}
    - *   <li>When a child suspends, the running count is NOT decremented
    - * </ul>
    - *
    - * @param <T> the result type of this operation
    - */
    -public abstract class ConcurrencyOperation<T> extends SerializableDurableOperation<T> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(ConcurrencyOperation.class);
    -
    -    private final int maxConcurrency;
    -    private final Integer minSuccessful;
    -    private final Integer toleratedFailureCount;
    -    private final OperationIdGenerator operationIdGenerator;
    -    private final DurableContextImpl rootContext;
    -
    -    // access by context thread only
    -    private final List<ChildContextOperation<?>> branches = Collections.synchronizedList(new ArrayList<>());
    -
    -    // put only by context thread and consume only by consumer thread
    -    private final Queue<ChildContextOperation<?>> pendingQueue = new ConcurrentLinkedDeque<>();
    -
    -    // set by context thread and used by consumer thread
    -    protected final AtomicBoolean isJoined = new AtomicBoolean(false);
    -
    -    // used to wake up consumer thread for either new items or checking completion condition (isJoined changed)
    -    private final AtomicReference<CompletableFuture<BaseDurableOperation>> consumerThreadListener;
    -
    -    protected ConcurrencyOperation(
    -            OperationIdentifier operationIdentifier,
    -            TypeToken<T> resultTypeToken,
    -            SerDes resultSerDes,
    -            DurableContextImpl durableContext,
    -            int maxConcurrency,
    -            Integer minSuccessful,
    -            Integer toleratedFailureCount) {
    -        super(operationIdentifier, resultTypeToken, resultSerDes, durableContext);
    -        this.maxConcurrency = maxConcurrency;
    -        this.minSuccessful = minSuccessful;
    -        this.toleratedFailureCount = toleratedFailureCount;
    -        this.operationIdGenerator = new OperationIdGenerator(getOperationId());
    -        this.rootContext = durableContext.createChildContext(getOperationId(), getName());
    -        this.consumerThreadListener = new AtomicReference<>(new CompletableFuture<>());
    -    }
    -
    -    // ========== Template methods for subclasses ==========
    -
    -    /**
    -     * Creates a child context operation for a single item (branch or iteration).
    -     *
    -     * @param operationId the unique operation ID for this item
    -     * @param name the name of this item
    -     * @param function the user function to execute
    -     * @param resultType the result type token
    -     * @param branchSubType the sub-type of the branch operation
    -     * @param parentContext the parent durable context
    -     * @param <R> the result type of the child operation
    -     * @return a new ChildContextOperation
    -     */
    -    protected <R> ChildContextOperation<R> createItem(
    -            String operationId,
    -            String name,
    -            Function<DurableContext, R> function,
    -            TypeToken<R> resultType,
    -            SerDes serDes,
    -            OperationSubType branchSubType,
    -            DurableContextImpl parentContext) {
    -        return new ChildContextOperation<>(
    -                OperationIdentifier.of(operationId, name, OperationType.CONTEXT, branchSubType),
    -                function,
    -                resultType,
    -                RunInChildContextConfig.builder().serDes(serDes).build(),
    -                parentContext,
    -                this);
    -    }
    -
    -    /** Called when the concurrency operation completes. Subclasses define checkpointing behavior. */
    -    protected abstract void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus);
    -
    -    // ========== Concurrency control ==========
    -
    -    /**
    -     * Creates and enqueues an item without starting execution. Use {@link #executeItems()} to begin execution after all
    -     * items have been enqueued. This prevents early termination from blocking item creation when all items are known
    -     * upfront (e.g., map operations).
    -     */
    -    protected <R> ChildContextOperation<R> enqueueItem(
    -            String name,
    -            Function<DurableContext, R> function,
    -            TypeToken<R> resultType,
    -            SerDes serDes,
    -            OperationSubType branchSubType) {
    -        var operationId = this.operationIdGenerator.nextOperationId();
    -        var childOp = createItem(operationId, name, function, resultType, serDes, branchSubType, this.rootContext);
    -        branches.add(childOp);
    -        pendingQueue.add(childOp);
    -        logger.debug("Item enqueued {}", name);
    -        // notify the consumer thread a new item is available
    -        notifyConsumerThread();
    -        return childOp;
    -    }
    -
    -    private void notifyConsumerThread() {
    -        synchronized (completionFuture) {
    -            consumerThreadListener.get().complete(null);
    -        }
    -    }
    -
    -    /** Starts execution of all enqueued items. */
    -    protected void executeItems() {
    -        // variables accessed only by the consumer thread. Put them here to avoid accidentally used by other threads
    -        Set<BaseDurableOperation> runningChildren = new HashSet<>();
    -        AtomicInteger succeededCount = new AtomicInteger(0);
    -        AtomicInteger failedCount = new AtomicInteger(0);
    -
    -        Runnable consumer = () -> {
    -            try {
    -                while (true) {
    -                    // Set a new future if it's completed so that it will be able to receive a notification of
    -                    // new items when the thread is checking completion condition and processing
    -                    // the queued items below.
    -                    synchronized (completionFuture) {
    -                        if (consumerThreadListener.get() != null
    -                                && consumerThreadListener.get().isDone()) {
    -                            consumerThreadListener.set(new CompletableFuture<>());
    -                        }
    -                    }
    -
    -                    // Process completion condition. Quit the loop if the condition is met.
    -                    if (isOperationCompleted()) {
    -                        return;
    -                    }
    -                    var completionStatus = canComplete(succeededCount, failedCount, runningChildren);
    -                    if (completionStatus != null) {
    -                        handleCompletion(completionStatus);
    -                        return;
    -                    }
    -
    -                    // process new items in the queue
    -                    while (runningChildren.size() < maxConcurrency && !pendingQueue.isEmpty()) {
    -                        var next = pendingQueue.poll();
    -                        runningChildren.add(next);
    -                        logger.debug("Executing operation {}", next.getName());
    -                        next.execute();
    -                    }
    -
    -                    // If consumerThreadListener has been completed when processing above, waitForChildCompletion will
    -                    // immediately return null and repeat the above again
    -                    var child = waitForChildCompletion(succeededCount, failedCount, runningChildren);
    -
    -                    // child may be null if the consumer thread is woken up due to new items added or completion
    -                    // condition
    -                    // changed
    -                    if (child != null) {
    -                        if (runningChildren.contains(child)) {
    -                            runningChildren.remove(child);
    -                            onItemComplete(succeededCount, failedCount, (ChildContextOperation<?>) child);
    -                        } else {
    -                            throw new IllegalStateException("Unexpected completion: " + child);
    -                        }
    -                    }
    -                }
    -            } catch (Throwable ex) {
    -                handleException(ex);
    -            }
    -        };
    -        // run consumer in the user thread pool, although it's not a real user thread
    -        runUserHandler(consumer, ThreadType.CONTEXT);
    -    }
    -
    -    private void handleException(Throwable ex) {
    -        Throwable throwable = ExceptionHelper.unwrapCompletableFuture(ex);
    -        if (throwable instanceof SuspendExecutionException suspendExecutionException) {
    -            // Rethrow Error immediately β€” do not checkpoint
    -            throw suspendExecutionException;
    -        }
    -        if (throwable instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
    -            throw terminateExecution(unrecoverableDurableExecutionException);
    -        }
    -
    -        throw terminateExecutionWithIllegalDurableOperationException(
    -                String.format("Unexpected exception in concurrency operation: %s", throwable));
    -    }
    -
    -    private BaseDurableOperation waitForChildCompletion(
    -            AtomicInteger succeededCount, AtomicInteger failedCount, Set<BaseDurableOperation> runningChildren) {
    -        var threadContext = getCurrentThreadContext();
    -        CompletableFuture<Object> future;
    -
    -        synchronized (completionFuture) {
    -            // check again in synchronized block to prevent race conditions
    -            if (isOperationCompleted()) {
    -                return null;
    -            }
    -            var completionStatus = canComplete(succeededCount, failedCount, runningChildren);
    -            if (completionStatus != null) {
    -                return null;
    -            }
    -            ArrayList<CompletableFuture<BaseDurableOperation>> futures;
    -            futures = new ArrayList<>(runningChildren.stream()
    -                    .map(BaseDurableOperation::getCompletionFuture)
    -                    .toList());
    -            if (futures.size() < maxConcurrency) {
    -                // add a future to listen to the new items if there is a vacancy
    -                consumerThreadListener.compareAndSet(null, new CompletableFuture<>());
    -                futures.add(consumerThreadListener.get());
    -            }
    -
    -            // future will be completed immediately if any future of the list is already completed
    -            future = CompletableFuture.anyOf(futures.toArray(CompletableFuture[]::new));
    -            // skip deregistering the current thread if there is more completed future to process
    -            if (!future.isDone()) {
    -                future.thenRun(() -> registerActiveThread(threadContext.threadId()));
    -                // Deregister the current thread to allow suspension
    -                executionManager.deregisterActiveThread(threadContext.threadId());
    -            }
    -        }
    -        try {
    -            return future.thenApply(o -> (BaseDurableOperation) o).join();
    -        } catch (Throwable throwable) {
    -            ExceptionHelper.sneakyThrow(ExceptionHelper.unwrapCompletableFuture(throwable));
    -            throw throwable;
    -        }
    -    }
    -
    -    /**
    -     * Called by a ChildContextOperation BEFORE it closes its child context. Updates counters, checks completion
    -     * criteria, and either triggers the next queued item or completes the operation.
    -     *
    -     * @param child the child operation that completed
    -     */
    -    private void onItemComplete(
    -            AtomicInteger succeededCount, AtomicInteger failedCount, ChildContextOperation<?> child) {
    -        // Evaluate child result outside the lock β€” child.get() may block waiting for a checkpoint response.
    -        logger.debug("OnItemComplete called by {}, Id: {}", child.getName(), child.getOperationId());
    -        try {
    -            child.get();
    -            logger.debug("Result succeeded - {}", child.getName());
    -            succeededCount.incrementAndGet();
    -        } catch (Throwable e) {
    -            logger.debug("Child operation {} failed: {}", child.getOperationId(), e.getMessage());
    -            failedCount.incrementAndGet();
    -        }
    -    }
    -
    -    // ========== Completion logic ==========
    -    /**
    -     * Checks whether the concurrency operation can be considered complete.
    -     *
    -     * @return the completion status if the operation is complete, or null if it should continue
    -     */
    -    private ConcurrencyCompletionStatus canComplete(
    -            AtomicInteger succeededCount, AtomicInteger failedCount, Set<BaseDurableOperation> runningChildren) {
    -        int succeeded = succeededCount.get();
    -        int failed = failedCount.get();
    -
    -        // If we've met the minimum successful count, we're done
    -        if (minSuccessful != null && succeeded >= minSuccessful) {
    -            return ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED;
    -        }
    -
    -        // If we've exceeded the failure tolerance, we're done
    -        if (toleratedFailureCount != null && failed > toleratedFailureCount) {
    -            return ConcurrencyCompletionStatus.FAILURE_TOLERANCE_EXCEEDED;
    -        }
    -
    -        // All items finished β€” complete
    -        // This condition relies on isJoined, so the consumer will wake up and check this again when
    -        // isJoined is set to true.
    -        if (isJoined.get() && pendingQueue.isEmpty() && runningChildren.isEmpty()) {
    -            return ConcurrencyCompletionStatus.ALL_COMPLETED;
    -        }
    -
    -        return null;
    -    }
    -
    -    /**
    -     * Blocks the calling thread until the concurrency operation reaches a terminal state. Validates item count, handles
    -     * zero-branch case, then delegates to {@code waitForOperationCompletion()} from BaseDurableOperation.
    -     */
    -    protected void join() {
    -        if (minSuccessful != null && minSuccessful > branches.size()) {
    -            throw new IllegalStateException("minSuccessful (" + minSuccessful
    -                    + ") exceeds the number of registered items (" + branches.size() + ")");
    -        }
    -        isJoined.set(true);
    -
    -        // Notify the consumer thread this concurrency operation is joined. Consumer thread need to check the
    -        // completion condition again.
    -        notifyConsumerThread();
    -        waitForOperationCompletion();
    -    }
    -
    -    protected List<ChildContextOperation<?>> getBranches() {
    -        return branches;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/InvokeOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/InvokeOperation.java
    deleted file mode 100644
    index 9e2c54ace..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/InvokeOperation.java
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import software.amazon.awssdk.services.lambda.model.ChainedInvokeOptions;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.InvokeException;
    -import software.amazon.lambda.durable.exception.InvokeFailedException;
    -import software.amazon.lambda.durable.exception.InvokeStoppedException;
    -import software.amazon.lambda.durable.exception.InvokeTimedOutException;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Durable operation that invokes another Lambda function and waits for its result.
    - *
    - * @param <T> the result type from the invoked function
    - * @param <I> the payload type sent to the invoked function
    - */
    -public class InvokeOperation<T, I> extends SerializableDurableOperation<T> {
    -    private final String functionName;
    -    private final I payload;
    -    private final InvokeConfig invokeConfig;
    -    private final SerDes payloadSerDes;
    -
    -    public InvokeOperation(
    -            OperationIdentifier operationIdentifier,
    -            String functionName,
    -            I payload,
    -            TypeToken<T> resultTypeToken,
    -            InvokeConfig config,
    -            DurableContextImpl durableContext) {
    -        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
    -
    -        this.functionName = functionName;
    -        this.payload = payload;
    -        this.invokeConfig = config;
    -        this.payloadSerDes = config.payloadSerDes() != null ? config.payloadSerDes() : config.serDes();
    -    }
    -
    -    /** Starts the operation. */
    -    @Override
    -    protected void start() {
    -        startInvocation();
    -        pollForOperationUpdates();
    -    }
    -
    -    /** Replays the operation. */
    -    @Override
    -    protected void replay(Operation existing) {
    -        switch (existing.status()) {
    -            // The result isn't ready. Need to wait more
    -            case STARTED -> pollForOperationUpdates();
    -            case SUCCEEDED, FAILED, TIMED_OUT, STOPPED -> markAlreadyCompleted();
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected invoke status: " + existing.statusAsString());
    -        }
    -    }
    -
    -    private void startInvocation() {
    -        var update = OperationUpdate.builder()
    -                .action(OperationAction.START)
    -                .chainedInvokeOptions(ChainedInvokeOptions.builder()
    -                        .functionName(functionName)
    -                        .tenantId(invokeConfig.tenantId())
    -                        .build())
    -                .payload(payloadSerDes.serialize(this.payload));
    -
    -        sendOperationUpdate(update);
    -    }
    -
    -    /**
    -     * Blocks until the operation completes and returns the result.
    -     *
    -     * @return the operation result
    -     */
    -    @Override
    -    public T get() {
    -        var op = waitForOperationCompletion();
    -        var invokeDetails = op.chainedInvokeDetails();
    -        var result = invokeDetails != null ? invokeDetails.result() : null;
    -        return switch (op.status()) {
    -            case SUCCEEDED -> deserializeResult(result);
    -            case FAILED -> throw new InvokeFailedException(op);
    -            case TIMED_OUT -> throw new InvokeTimedOutException(op);
    -            case STOPPED -> throw new InvokeStoppedException(op);
    -            // Unexpected status which should not happen. This is added for forward-compatibility.
    -            default -> throw new InvokeException(op);
    -        };
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/MapOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/MapOperation.java
    deleted file mode 100644
    index 9f47463c3..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/MapOperation.java
    +++ /dev/null
    @@ -1,218 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.model.ContextOptions;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.MapConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.MapResult;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Executes a map operation: applies a function to each item in a collection concurrently, with each item running in its
    - * own child context.
    - *
    - * <p>Extends {@link ConcurrencyOperation} following the same pattern as {@link ParallelOperation}. All branches are
    - * created upfront in {@code start()}/{@code replay()}, and results are aggregated into a {@link MapResult} in
    - * {@code get()}.
    - *
    - * @param <I> the input item type
    - * @param <O> the output result type per item
    - */
    -public class MapOperation<I, O> extends ConcurrencyOperation<MapResult<O>> {
    -
    -    private static final int LARGE_RESULT_THRESHOLD = 256 * 1024;
    -
    -    private final List<I> items;
    -    private final DurableContext.MapFunction<I, O> function;
    -    private final TypeToken<O> itemResultType;
    -    private final SerDes serDes;
    -    private boolean replayFromPayload;
    -    private volatile MapResult<O> cachedResult;
    -
    -    public MapOperation(
    -            OperationIdentifier operationIdentifier,
    -            List<I> items,
    -            DurableContext.MapFunction<I, O> function,
    -            TypeToken<O> itemResultType,
    -            MapConfig config,
    -            DurableContextImpl durableContext) {
    -        super(
    -                operationIdentifier,
    -                new TypeToken<>() {},
    -                config.serDes(),
    -                durableContext,
    -                config.maxConcurrency(),
    -                config.completionConfig().minSuccessful(),
    -                getToleratedFailureCount(config.completionConfig(), items.size()));
    -        if (config.completionConfig().minSuccessful() != null
    -                && config.completionConfig().minSuccessful() > items.size()) {
    -            throw new IllegalArgumentException("minSuccessful cannot be greater than total items: "
    -                    + config.completionConfig().minSuccessful() + " > " + items.size());
    -        }
    -        this.items = List.copyOf(items);
    -        this.function = function;
    -        this.itemResultType = itemResultType;
    -        this.serDes = config.serDes();
    -
    -        addAllItems();
    -    }
    -
    -    private void addAllItems() {
    -        // Enqueue all items first, then start execution. This prevents early termination
    -        // criteria (e.g., minSuccessful) from completing the operation mid-loop on replay,
    -        // which would cause subsequent enqueue calls to fail with "completed operation".
    -        var branchPrefix = getName() == null ? "map-iteration-" : getName() + "-iteration-";
    -        for (int i = 0; i < items.size(); i++) {
    -            var index = i;
    -            var item = items.get(i);
    -            enqueueItem(
    -                    branchPrefix + i,
    -                    childCtx -> function.apply(item, index, childCtx),
    -                    itemResultType,
    -                    serDes,
    -                    OperationSubType.MAP_ITERATION);
    -        }
    -    }
    -
    -    private static Integer getToleratedFailureCount(CompletionConfig completionConfig, int totalItems) {
    -        if (completionConfig == null
    -                || (completionConfig.toleratedFailureCount() == null
    -                        && completionConfig.toleratedFailurePercentage() == null)) {
    -            // neither toleratedFailureCount nor toleratedFailurePercentage is specified.
    -            return null;
    -        }
    -        int toleratedFailureCount = completionConfig.toleratedFailureCount() != null
    -                ? completionConfig.toleratedFailureCount()
    -                : Integer.MAX_VALUE;
    -
    -        // convert percentage to count
    -        int toleratedFailureCountFromPercentage = completionConfig.toleratedFailurePercentage() != null
    -                ? (int) Math.floor(totalItems * completionConfig.toleratedFailurePercentage())
    -                : Integer.MAX_VALUE;
    -        // minimum of two if both count and percentage is specified
    -        return Math.min(toleratedFailureCount, toleratedFailureCountFromPercentage);
    -    }
    -
    -    @Override
    -    protected void start() {
    -        if (items.isEmpty()) {
    -            markAlreadyCompleted();
    -            return;
    -        }
    -        sendOperationUpdateAsync(OperationUpdate.builder()
    -                .action(OperationAction.START)
    -                .subType(getSubType().getValue()));
    -
    -        executeItems();
    -    }
    -
    -    @Override
    -    protected void replay(Operation existing) {
    -        if (items.isEmpty()) {
    -            markAlreadyCompleted();
    -            return;
    -        }
    -        switch (existing.status()) {
    -            case SUCCEEDED -> {
    -                if (existing.contextDetails() != null
    -                        && Boolean.TRUE.equals(existing.contextDetails().replayChildren())) {
    -                    // Large result: re-execute children to reconstruct MapResult
    -                    executeItems();
    -                } else {
    -                    // Small result: MapResult is in the payload, skip child replay
    -                    replayFromPayload = true;
    -                    markAlreadyCompleted();
    -                }
    -            }
    -            case STARTED -> {
    -                // Map was in progress when interrupted β€” re-create children without sending
    -                // another START (the backend rejects duplicate START for existing operations)
    -                executeItems();
    -            }
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected map operation status: " + existing.status());
    -        }
    -    }
    -
    -    @SuppressWarnings("unchecked")
    -    @Override
    -    protected void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus) {
    -        var children = getBranches();
    -        var resultItems = new ArrayList<MapResult.MapResultItem<O>>(Collections.nCopies(items.size(), null));
    -
    -        for (int i = 0; i < children.size(); i++) {
    -            var branch = (ChildContextOperation<O>) children.get(i);
    -            if (!branch.isOperationCompleted()) {
    -                resultItems.set(i, MapResult.MapResultItem.skipped());
    -            } else {
    -                try {
    -                    resultItems.set(i, MapResult.MapResultItem.succeeded(branch.get()));
    -                } catch (Throwable exception) {
    -                    Throwable throwable = ExceptionHelper.unwrapCompletableFuture(exception);
    -                    if (throwable instanceof SuspendExecutionException suspendExecutionException) {
    -                        // Rethrow Error immediately β€” do not checkpoint
    -                        throw suspendExecutionException;
    -                    }
    -                    if (throwable
    -                            instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
    -                        // terminate the execution and throw the exception if it's not recoverable
    -                        throw terminateExecution(unrecoverableDurableExecutionException);
    -                    }
    -                    resultItems.set(i, MapResult.MapResultItem.failed(MapResult.MapError.of(throwable)));
    -                }
    -            }
    -        }
    -
    -        this.cachedResult = new MapResult<>(resultItems, concurrencyCompletionStatus);
    -        var serialized = serializeResult(cachedResult);
    -        var serializedBytes = serialized.getBytes(java.nio.charset.StandardCharsets.UTF_8);
    -
    -        if (serializedBytes.length < LARGE_RESULT_THRESHOLD) {
    -            sendOperationUpdate(OperationUpdate.builder()
    -                    .action(OperationAction.SUCCEED)
    -                    .subType(getSubType().getValue())
    -                    .payload(serialized));
    -        } else {
    -            // Large result: checkpoint with empty payload + replayChildren flag
    -            sendOperationUpdate(OperationUpdate.builder()
    -                    .action(OperationAction.SUCCEED)
    -                    .subType(getSubType().getValue())
    -                    .payload("")
    -                    .contextOptions(
    -                            ContextOptions.builder().replayChildren(true).build()));
    -        }
    -    }
    -
    -    @Override
    -    public MapResult<O> get() {
    -        if (items.isEmpty()) {
    -            return MapResult.empty();
    -        }
    -        if (replayFromPayload) {
    -            // Small result replay: deserialize MapResult directly from checkpoint payload
    -            var op = waitForOperationCompletion();
    -            var result = (op.contextDetails() != null) ? op.contextDetails().result() : null;
    -            return deserializeResult(result);
    -        }
    -        // First execution or large result replay: wait for children, then aggregate
    -        join();
    -        return cachedResult;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/ParallelOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/ParallelOperation.java
    deleted file mode 100644
    index 8142f1085..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/ParallelOperation.java
    +++ /dev/null
    @@ -1,130 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.util.function.Function;
    -import software.amazon.awssdk.services.lambda.model.ContextOptions;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.ParallelDurableFuture;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.ParallelBranchConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.model.ParallelResult;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/**
    - * Manages parallel execution of multiple branches as child context operations.
    - *
    - * <p>Extends {@link ConcurrencyOperation} to provide parallel-specific behavior:
    - *
    - * <ul>
    - *   <li>Creates branches as {@link ChildContextOperation} with {@link OperationSubType#PARALLEL_BRANCH}
    - *   <li>Checkpoints SUCCESS on the parallel context when completion criteria are met
    - *   <li>Returns a {@link ParallelResult} summarising branch outcomes
    - * </ul>
    - *
    - * <p>Context hierarchy:
    - *
    - * <pre>
    - * DurableContext (root)
    - *   └── ParallelOperation context (ChildContextOperation with PARALLEL subtype)
    - *         β”œβ”€β”€ Branch 1 context (ChildContextOperation with PARALLEL_BRANCH)
    - *         β”œβ”€β”€ Branch 2 context (ChildContextOperation with PARALLEL_BRANCH)
    - *         └── Branch N context (ChildContextOperation with PARALLEL_BRANCH)
    - * </pre>
    - */
    -public class ParallelOperation extends ConcurrencyOperation<ParallelResult> implements ParallelDurableFuture {
    -
    -    // this field could be written and read in different threads
    -    private volatile boolean skipCheckpoint = false;
    -    private volatile ParallelResult cachedResult;
    -
    -    public ParallelOperation(
    -            OperationIdentifier operationIdentifier,
    -            SerDes resultSerDes,
    -            DurableContextImpl durableContext,
    -            ParallelConfig config) {
    -        super(
    -                operationIdentifier,
    -                TypeToken.get(ParallelResult.class),
    -                resultSerDes,
    -                durableContext,
    -                config.maxConcurrency(),
    -                config.completionConfig().minSuccessful(),
    -                config.completionConfig().toleratedFailureCount());
    -    }
    -
    -    @Override
    -    protected void handleCompletion(ConcurrencyCompletionStatus concurrencyCompletionStatus) {
    -        var items = getBranches();
    -        int succeededCount = Math.toIntExact(items.stream()
    -                .filter(item ->
    -                        item.getOperation() != null && item.getOperation().status() == OperationStatus.SUCCEEDED)
    -                .count());
    -        int failedCount = Math.toIntExact(items.stream()
    -                .filter(item ->
    -                        item.getOperation() != null && item.getOperation().status() != OperationStatus.SUCCEEDED)
    -                .count());
    -        this.cachedResult = new ParallelResult(items.size(), succeededCount, failedCount, concurrencyCompletionStatus);
    -        if (skipCheckpoint) {
    -            // Do not send checkpoint during replay
    -            markAlreadyCompleted();
    -            return;
    -        }
    -        sendOperationUpdate(OperationUpdate.builder()
    -                .action(OperationAction.SUCCEED)
    -                .subType(getSubType().getValue())
    -                .contextOptions(ContextOptions.builder().replayChildren(true).build()));
    -    }
    -
    -    @Override
    -    protected void start() {
    -        sendOperationUpdateAsync(OperationUpdate.builder()
    -                .action(OperationAction.START)
    -                .subType(getSubType().getValue()));
    -
    -        executeItems();
    -    }
    -
    -    @Override
    -    protected void replay(Operation existing) {
    -        // No-op: child branches handle their own replay via ChildContextOperation.replay().
    -        // Set replaying=true so handleSuccess() skips re-checkpointing the already-completed parallel context.
    -        skipCheckpoint = ExecutionManager.isTerminalStatus(existing.status());
    -        executeItems();
    -    }
    -
    -    @Override
    -    public ParallelResult get() {
    -        join();
    -        return cachedResult;
    -    }
    -
    -    /** Calls {@link #get()} if not already called. Guarantees that the context is closed. */
    -    @Override
    -    public void close() {
    -        if (isJoined.get()) {
    -            return;
    -        }
    -        join();
    -    }
    -
    -    public <T> DurableFuture<T> branch(
    -            String name, TypeToken<T> resultType, Function<DurableContext, T> func, ParallelBranchConfig config) {
    -        if (isJoined.get()) {
    -            throw new IllegalStateException("Cannot add branches after join() has been called");
    -        }
    -        var serDes = config.serDes() == null ? getContext().getDurableConfig().getSerDes() : config.serDes();
    -        return enqueueItem(name, func, resultType, serDes, OperationSubType.PARALLEL_BRANCH);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/SerializableDurableOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/SerializableDurableOperation.java
    deleted file mode 100644
    index 74cb01063..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/SerializableDurableOperation.java
    +++ /dev/null
    @@ -1,162 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.SerDes;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Base class for all durable operations (STEP, WAIT, etc.).
    - *
    - * <p>Key methods:
    - *
    - * <ul>
    - *   <li>{@code execute()} starts the operation (returns immediately)
    - *   <li>{@code get()} blocks until complete and returns the result
    - * </ul>
    - *
    - * <p>The separation allows:
    - *
    - * <ul>
    - *   <li>Starting multiple async operations quickly
    - *   <li>Blocking on results later when needed
    - *   <li>Proper thread coordination via future
    - * </ul>
    - */
    -public abstract class SerializableDurableOperation<T> extends BaseDurableOperation implements DurableFuture<T> {
    -    private static final Logger logger = LoggerFactory.getLogger(SerializableDurableOperation.class);
    -
    -    private final TypeToken<T> resultTypeToken;
    -    private final SerDes resultSerDes;
    -
    -    /**
    -     * Constructs a new durable operation.
    -     *
    -     * @param operationIdentifier the unique identifier for this operation
    -     * @param resultTypeToken the type token for deserializing the result
    -     * @param resultSerDes the serializer/deserializer for the result
    -     * @param durableContext the parent context this operation belongs to
    -     */
    -    protected SerializableDurableOperation(
    -            OperationIdentifier operationIdentifier,
    -            TypeToken<T> resultTypeToken,
    -            SerDes resultSerDes,
    -            DurableContextImpl durableContext) {
    -        this(operationIdentifier, resultTypeToken, resultSerDes, durableContext, null);
    -    }
    -
    -    protected SerializableDurableOperation(
    -            OperationIdentifier operationIdentifier,
    -            TypeToken<T> resultTypeToken,
    -            SerDes resultSerDes,
    -            DurableContextImpl durableContext,
    -            BaseDurableOperation parentOperation) {
    -        super(operationIdentifier, durableContext, parentOperation);
    -        this.resultTypeToken = resultTypeToken;
    -        this.resultSerDes = resultSerDes;
    -    }
    -
    -    /**
    -     * Checks if it's called from a Step.
    -     *
    -     * @throws IllegalDurableOperationException if it's in a step
    -     */
    -    private void validateCurrentThreadType() {
    -        ThreadType current = getCurrentThreadContext().threadType();
    -        if (current == ThreadType.STEP) {
    -            var message = String.format(
    -                    "Nested %s operation is not supported on %s from within a %s execution.",
    -                    getType(), getName(), current);
    -            // terminate execution and throw the exception
    -            throw terminateExecutionWithIllegalDurableOperationException(message);
    -        }
    -    }
    -
    -    /**
    -     * Deserializes a result string into the operation's result type.
    -     *
    -     * @param result the serialized result string
    -     * @return the deserialized result
    -     * @throws SerDesException if deserialization fails
    -     */
    -    protected T deserializeResult(String result) {
    -        try {
    -            return resultSerDes.deserialize(result, resultTypeToken);
    -        } catch (SerDesException e) {
    -            logger.warn(
    -                    "Failed to deserialize {} result for operation name '{}'. Ensure the result is properly encoded.",
    -                    getType(),
    -                    getName());
    -            throw e;
    -        }
    -    }
    -
    -    /**
    -     * Serializes the result to a string.
    -     *
    -     * @param result the result to serialize
    -     * @return the serialized string
    -     */
    -    protected String serializeResult(T result) {
    -        return resultSerDes.serialize(result);
    -    }
    -
    -    /**
    -     * Serializes a throwable into an {@link ErrorObject} for checkpointing.
    -     *
    -     * @param throwable the exception to serialize
    -     * @return the serialized error object
    -     */
    -    protected ErrorObject serializeException(Throwable throwable) {
    -        return ExceptionHelper.buildErrorObject(throwable, resultSerDes);
    -    }
    -
    -    /**
    -     * Deserializes an {@link ErrorObject} back into a throwable, reconstructing the original exception type and stack
    -     * trace when possible. Falls back to null if the exception class is not found or deserialization fails.
    -     *
    -     * @param errorObject the serialized error object
    -     * @return the reconstructed throwable, or null if reconstruction is not possible
    -     */
    -    protected Throwable deserializeException(ErrorObject errorObject) {
    -        Throwable original = null;
    -        if (errorObject == null) {
    -            return original;
    -        }
    -        var errorType = errorObject.errorType();
    -        var errorData = errorObject.errorData();
    -
    -        if (errorType == null) {
    -            return original;
    -        }
    -        try {
    -
    -            Class<?> exceptionClass = Class.forName(errorType);
    -            if (Throwable.class.isAssignableFrom(exceptionClass)) {
    -                original =
    -                        resultSerDes.deserialize(errorData, TypeToken.get(exceptionClass.asSubclass(Throwable.class)));
    -
    -                if (original != null) {
    -                    original.setStackTrace(ExceptionHelper.deserializeStackTrace(errorObject.stackTrace()));
    -                }
    -            }
    -        } catch (ClassNotFoundException e) {
    -            logger.warn("Cannot re-construct original exception type. Falling back to generic StepFailedException.");
    -        } catch (SerDesException e) {
    -            logger.warn("Cannot deserialize original exception data. Falling back to generic StepFailedException.", e);
    -        }
    -        return original;
    -    }
    -
    -    public abstract T get();
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/StepOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/StepOperation.java
    deleted file mode 100644
    index 2ee7aa1a6..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/StepOperation.java
    +++ /dev/null
    @@ -1,220 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.time.Instant;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.function.Function;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.awssdk.services.lambda.model.StepOptions;
    -import software.amazon.lambda.durable.StepContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.config.StepSemantics;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.DurableOperationException;
    -import software.amazon.lambda.durable.exception.StepFailedException;
    -import software.amazon.lambda.durable.exception.StepInterruptedException;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Durable operation that executes a user-provided function with retry support.
    - *
    - * <p>Steps are the primary unit of work in a durable execution. Each step is checkpointed before and after execution,
    - * enabling automatic retry on failure and replay on re-invocation.
    - *
    - * @param <T> the result type of the step function
    - */
    -public class StepOperation<T> extends SerializableDurableOperation<T> {
    -    private static final Integer FIRST_ATTEMPT = 1;
    -
    -    private final Function<StepContext, T> function;
    -    private final StepConfig config;
    -
    -    public StepOperation(
    -            OperationIdentifier operationIdentifier,
    -            Function<StepContext, T> function,
    -            TypeToken<T> resultTypeToken,
    -            StepConfig config,
    -            DurableContextImpl durableContext) {
    -        super(operationIdentifier, resultTypeToken, config.serDes(), durableContext);
    -
    -        this.function = function;
    -        this.config = config;
    -    }
    -
    -    /** Starts the operation. */
    -    @Override
    -    protected void start() {
    -        executeStepLogic(FIRST_ATTEMPT);
    -    }
    -
    -    /** Replays the operation. */
    -    @Override
    -    protected void replay(Operation existing) {
    -        var attempt = existing.stepDetails() != null && existing.stepDetails().attempt() != null
    -                ? existing.stepDetails().attempt() + 1
    -                : FIRST_ATTEMPT;
    -        switch (existing.status()) {
    -            case SUCCEEDED, FAILED -> markAlreadyCompleted();
    -            case STARTED -> {
    -                if (config.semantics() == StepSemantics.AT_MOST_ONCE_PER_RETRY) {
    -                    // AT_MOST_ONCE: treat as interrupted, go through retry logic
    -                    handleStepFailure(new StepInterruptedException(existing), attempt);
    -                } else {
    -                    // AT_LEAST_ONCE: re-execute the step
    -                    executeStepLogic(attempt);
    -                }
    -            }
    -            // Step is pending retry - Start polling for PENDING -> READY transition
    -            case PENDING -> {
    -                if (existing.stepDetails() != null && existing.stepDetails().nextAttemptTimestamp() != null) {
    -                    pollReadyAndExecuteStepLogic(existing.stepDetails().nextAttemptTimestamp(), attempt);
    -                } else {
    -                    throw terminateExecutionWithIllegalDurableOperationException(
    -                            "Unexpected PENDING step without nextAttemptTimestamp: " + getOperationId());
    -                }
    -            }
    -            // Execute with current attempt
    -            case READY -> executeStepLogic(attempt);
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected step status: " + existing.status());
    -        }
    -    }
    -
    -    private void pollReadyAndExecuteStepLogic(Instant nextAttemptInstant, int attempt) {
    -        pollForOperationUpdates(nextAttemptInstant)
    -                .thenCompose(op -> op.status() == OperationStatus.READY
    -                        ? CompletableFuture.completedFuture(op)
    -                        : pollForOperationUpdates(nextAttemptInstant))
    -                .thenRun(() -> executeStepLogic(attempt));
    -    }
    -
    -    private void executeStepLogic(int attempt) {
    -        Runnable userHandler = () -> {
    -            // use a try-with-resources to
    -            // - add thread id/type to thread local when the step starts
    -            // - clear logger properties when the step finishes
    -            try (StepContext stepContext = getContext().createStepContext(getOperationId(), getName(), attempt)) {
    -                try {
    -                    checkpointStarted();
    -
    -                    // Execute the function
    -                    T result = function.apply(stepContext);
    -
    -                    handleStepSucceeded(result);
    -                } catch (Throwable e) {
    -                    handleStepFailure(e, attempt);
    -                }
    -            }
    -        };
    -
    -        // Execute user provided step code in user-configured executor
    -        runUserHandler(userHandler, ThreadType.STEP);
    -    }
    -
    -    private void checkpointStarted() {
    -        // Check if we need to send START
    -        var existing = getOperation();
    -        if (existing == null || existing.status() != OperationStatus.STARTED) {
    -            var startUpdate = OperationUpdate.builder().action(OperationAction.START);
    -
    -            if (config.semantics() == StepSemantics.AT_MOST_ONCE_PER_RETRY) {
    -                // AT_MOST_ONCE: await START checkpoint before executing user code
    -                sendOperationUpdate(startUpdate);
    -            } else {
    -                // AT_LEAST_ONCE: fire-and-forget START checkpoint
    -                sendOperationUpdateAsync(startUpdate);
    -            }
    -        }
    -    }
    -
    -    private void handleStepSucceeded(T result) {
    -        // Send SUCCEED
    -        var successUpdate =
    -                OperationUpdate.builder().action(OperationAction.SUCCEED).payload(serializeResult(result));
    -
    -        // sendOperationUpdate must be synchronous here. When waiting for the return of this call,
    -        // the context threads waiting for the result of this step operation will be wakened up and registered.
    -        sendOperationUpdate(successUpdate);
    -    }
    -
    -    private void handleStepFailure(Throwable exception, int attempt) {
    -        exception = ExceptionHelper.unwrapCompletableFuture(exception);
    -        if (exception instanceof SuspendExecutionException suspendExecutionException) {
    -            throw suspendExecutionException;
    -        }
    -        if (exception instanceof UnrecoverableDurableExecutionException unrecoverableDurableExecutionException) {
    -            // terminate the execution and throw the exception if it's not recoverable
    -            throw terminateExecution(unrecoverableDurableExecutionException);
    -        }
    -
    -        final ErrorObject errorObject;
    -        if (exception instanceof DurableOperationException durableOperationException) {
    -            errorObject = durableOperationException.getErrorObject();
    -        } else {
    -            errorObject = serializeException(exception);
    -        }
    -
    -        var isRetryable = !(exception instanceof StepInterruptedException);
    -        var retryDecision = config.retryStrategy().makeRetryDecision(exception, attempt);
    -
    -        if (isRetryable && retryDecision.shouldRetry()) {
    -            // Send RETRY
    -            var retryDelayInSeconds = Math.toIntExact(retryDecision.delay().toSeconds());
    -            var retryUpdate = OperationUpdate.builder()
    -                    .action(OperationAction.RETRY)
    -                    .error(errorObject)
    -                    .stepOptions(StepOptions.builder()
    -                            // RetryDecisions always produce integer number of seconds greater or equals to
    -                            // 1 (no sub-second numbers)
    -                            .nextAttemptDelaySeconds(retryDelayInSeconds)
    -                            .build());
    -            sendOperationUpdate(retryUpdate);
    -
    -            // Poll for READY status and then execute the step again
    -            pollReadyAndExecuteStepLogic(Instant.now().plusSeconds(retryDelayInSeconds), attempt + 1);
    -        } else {
    -            // Send FAIL - retries exhausted
    -            var failUpdate =
    -                    OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject);
    -            sendOperationUpdate(failUpdate);
    -        }
    -    }
    -
    -    @Override
    -    public T get() {
    -        var op = waitForOperationCompletion();
    -
    -        if (op.status() == OperationStatus.SUCCEEDED) {
    -            var stepDetails = op.stepDetails();
    -            var result = (stepDetails != null) ? stepDetails.result() : null;
    -
    -            return deserializeResult(result);
    -        } else {
    -            var errorObject = op.stepDetails().error();
    -
    -            // Throw StepInterruptedException directly for AT_MOST_ONCE interrupted steps
    -            if (StepInterruptedException.isStepInterruptedException(errorObject)) {
    -                throw new StepInterruptedException(op);
    -            }
    -
    -            // Attempt to reconstruct and throw the original exception
    -            Throwable original = deserializeException(errorObject);
    -            if (original != null) {
    -                ExceptionHelper.sneakyThrow(original);
    -            }
    -            // Fallback: wrap in StepFailedException
    -            throw new StepFailedException(op);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitForConditionOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitForConditionOperation.java
    deleted file mode 100644
    index fa8bb7ffd..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitForConditionOperation.java
    +++ /dev/null
    @@ -1,190 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.time.Duration;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.function.BiFunction;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.awssdk.services.lambda.model.StepOptions;
    -import software.amazon.lambda.durable.StepContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.DurableOperationException;
    -import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
    -import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Durable operation that periodically checks a user-supplied condition function, using a configurable wait strategy to
    - * determine polling intervals and termination.
    - *
    - * <p>Uses {@link OperationType#STEP} with {@link OperationSubType#WAIT_FOR_CONDITION} subtype. Each polling iteration
    - * is checkpointed as a RETRY on the same STEP operation.
    - *
    - * @param <T> the type of state being polled
    - */
    -public class WaitForConditionOperation<T> extends SerializableDurableOperation<T> {
    -    private static final Integer FIRST_ATTEMPT = 1;
    -
    -    private final BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc;
    -    private final WaitForConditionConfig<T> config;
    -
    -    public WaitForConditionOperation(
    -            String operationId,
    -            String name,
    -            BiFunction<T, StepContext, WaitForConditionResult<T>> checkFunc,
    -            TypeToken<T> resultTypeToken,
    -            WaitForConditionConfig<T> config,
    -            DurableContextImpl durableContext) {
    -        super(
    -                OperationIdentifier.of(operationId, name, OperationType.STEP, OperationSubType.WAIT_FOR_CONDITION),
    -                resultTypeToken,
    -                config.serDes(),
    -                durableContext);
    -
    -        this.checkFunc = checkFunc;
    -        this.config = config;
    -    }
    -
    -    @Override
    -    protected void start() {
    -        executeCheckLogic(config.initialState(), FIRST_ATTEMPT);
    -    }
    -
    -    @Override
    -    protected void replay(Operation existing) {
    -        switch (existing.status()) {
    -            case SUCCEEDED, FAILED -> markAlreadyCompleted(); // Check if already completed / failed
    -            case PENDING -> pollReadyAndResumeCheckLoop(existing); // Check if pending retry
    -            case STARTED, READY -> resumeCheckLoop(existing);
    -            default ->
    -                throw terminateExecutionWithIllegalDurableOperationException(
    -                        "Unexpected waitForCondition status: " + existing.status());
    -        }
    -    }
    -
    -    @Override
    -    public T get() {
    -        var op = waitForOperationCompletion();
    -
    -        if (op.status() == OperationStatus.SUCCEEDED) {
    -            var stepDetails = op.stepDetails();
    -            var result = (stepDetails != null) ? stepDetails.result() : null;
    -            return deserializeResult(result);
    -        } else {
    -            var errorObject = op.stepDetails().error();
    -
    -            // Attempt to reconstruct and throw the original exception
    -            Throwable original = deserializeException(errorObject);
    -            if (original != null) {
    -                ExceptionHelper.sneakyThrow(original);
    -            }
    -            // Fallback: wrap in WaitForConditionFailedException
    -            throw new WaitForConditionFailedException(op);
    -        }
    -    }
    -
    -    private void resumeCheckLoop(Operation existing) {
    -        var stepDetails = existing.stepDetails();
    -        int attempt =
    -                (stepDetails != null && stepDetails.attempt() != null) ? stepDetails.attempt() + 1 : FIRST_ATTEMPT;
    -        var checkpointData = stepDetails != null ? stepDetails.result() : null;
    -        T currentState; // Get current state
    -        if (checkpointData != null) {
    -            currentState = deserializeResult(checkpointData);
    -        } else {
    -            currentState = config.initialState();
    -        }
    -        executeCheckLogic(currentState, attempt);
    -    }
    -
    -    private CompletableFuture<Void> pollReadyAndResumeCheckLoop(Operation existing) {
    -        return pollForOperationUpdates()
    -                .thenCompose(op -> op.status() == OperationStatus.READY
    -                        ? CompletableFuture.completedFuture(op)
    -                        : pollForOperationUpdates())
    -                .thenAccept(this::resumeCheckLoop);
    -    }
    -
    -    private void executeCheckLogic(T currentState, int attempt) {
    -        Runnable userHandler = () -> {
    -            try (var stepContext = getContext().createStepContext(getOperationId(), getName(), attempt)) {
    -                try {
    -                    // Checkpoint START if not already started
    -                    var existing = getOperation();
    -                    if (existing == null || existing.status() != OperationStatus.STARTED) {
    -                        var startUpdate = OperationUpdate.builder().action(OperationAction.START);
    -                        sendOperationUpdateAsync(startUpdate);
    -                    }
    -
    -                    // Execute check function in user executor
    -                    WaitForConditionResult<T> result = checkFunc.apply(currentState, stepContext);
    -
    -                    // Serialize/deserialize round-trip on the value to ensure state is checkpoint-safe
    -                    var serializedState = serializeResult(result.value());
    -                    T deserializedValue = deserializeResult(serializedState);
    -
    -                    if (result.isDone()) {
    -                        // Condition met β€” checkpoint SUCCEED
    -                        var successUpdate = OperationUpdate.builder()
    -                                .action(OperationAction.SUCCEED)
    -                                .payload(serializedState);
    -                        sendOperationUpdate(successUpdate);
    -                    } else {
    -                        // Compute delay from strategy
    -                        Duration delay = config.waitStrategy().evaluate(deserializedValue, attempt);
    -
    -                        // Checkpoint RETRY with delay
    -                        var retryUpdate = OperationUpdate.builder()
    -                                .action(OperationAction.RETRY)
    -                                .payload(serializedState)
    -                                .stepOptions(StepOptions.builder()
    -                                        .nextAttemptDelaySeconds(Math.toIntExact(delay.toSeconds()))
    -                                        .build());
    -                        sendOperationUpdate(retryUpdate);
    -
    -                        // Poll for READY, then continue the loop
    -                        pollForOperationUpdates()
    -                                .thenCompose(op -> op.status() == OperationStatus.READY
    -                                        ? CompletableFuture.completedFuture(op)
    -                                        : pollForOperationUpdates())
    -                                .thenRun(() -> executeCheckLogic(deserializedValue, attempt + 1));
    -                    }
    -                } catch (Throwable e) {
    -                    handleCheckFailure(e);
    -                }
    -            }
    -        };
    -
    -        runUserHandler(userHandler, ThreadType.STEP);
    -    }
    -
    -    private void handleCheckFailure(Throwable exception) {
    -        exception = ExceptionHelper.unwrapCompletableFuture(exception);
    -        if (exception instanceof SuspendExecutionException suspendExecutionException) {
    -            throw suspendExecutionException;
    -        }
    -        if (exception instanceof UnrecoverableDurableExecutionException unrecoverable) {
    -            throw terminateExecution(unrecoverable);
    -        }
    -
    -        final var errorObject = (exception instanceof DurableOperationException durableOpEx)
    -                ? durableOpEx.getErrorObject()
    -                : serializeException(exception);
    -
    -        // Checkpoint FAIL
    -        var failUpdate = OperationUpdate.builder().action(OperationAction.FAIL).error(errorObject);
    -        sendOperationUpdate(failUpdate);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitOperation.java b/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitOperation.java
    deleted file mode 100644
    index 3e53ff736..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/operation/WaitOperation.java
    +++ /dev/null
    @@ -1,79 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.awssdk.services.lambda.model.WaitOptions;
    -import software.amazon.lambda.durable.DurableFuture;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -
    -/**
    - * Durable operation that suspends execution for a specified duration without consuming compute.
    - *
    - * <p>The wait is checkpointed and the Lambda is suspended. On re-invocation after the wait period, execution resumes
    - * from where it left off.
    - */
    -public class WaitOperation extends BaseDurableOperation implements DurableFuture<Void> {
    -
    -    private static final Logger logger = LoggerFactory.getLogger(WaitOperation.class);
    -
    -    private final Duration duration;
    -
    -    public WaitOperation(
    -            OperationIdentifier operationIdentifier, Duration duration, DurableContextImpl durableContext) {
    -        super(operationIdentifier, durableContext, null);
    -        this.duration = duration;
    -    }
    -
    -    /** Starts the operation. */
    -    @Override
    -    protected void start() {
    -        // First execution - checkpoint with full duration
    -        var update = OperationUpdate.builder()
    -                .action(OperationAction.START)
    -                .waitOptions(WaitOptions.builder()
    -                        .waitSeconds((int) duration.toSeconds())
    -                        .build());
    -
    -        sendOperationUpdate(update);
    -        pollForWaitExpiration();
    -    }
    -
    -    /** Replays the operation. */
    -    @Override
    -    protected void replay(Operation existing) {
    -        if (existing.status() == OperationStatus.SUCCEEDED) {
    -            // Wait already completed
    -            markAlreadyCompleted();
    -            return;
    -        }
    -
    -        pollForWaitExpiration();
    -    }
    -
    -    private void pollForWaitExpiration() {
    -        var scheduledEndTimestamp = Instant.now().plusMillis(duration.toMillis());
    -        var existing = getOperation();
    -        if (existing != null
    -                && existing.waitDetails() != null
    -                && existing.waitDetails().scheduledEndTimestamp() != null) {
    -            scheduledEndTimestamp = existing.waitDetails().scheduledEndTimestamp();
    -        }
    -        pollForOperationUpdates(scheduledEndTimestamp);
    -    }
    -
    -    @Override
    -    public Void get() {
    -        waitForOperationCompletion();
    -
    -        return null;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/JitterStrategy.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/JitterStrategy.java
    deleted file mode 100644
    index d3fb3e91b..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/JitterStrategy.java
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -/**
    - * Jitter strategy for retry delays to prevent thundering herd problems.
    - *
    - * <p>Jitter reduces simultaneous retry attempts by spreading retries out over a randomized delay interval, which helps
    - * prevent overwhelming services when many clients retry at the same time.
    - */
    -public enum JitterStrategy {
    -
    -    /**
    -     * No jitter - use exact calculated delay. This provides predictable timing but may cause thundering herd issues.
    -     */
    -    NONE {
    -        @Override
    -        public double apply(double baseDelay) {
    -            return baseDelay;
    -        }
    -    },
    -    /**
    -     * Full jitter - random delay between 0 and calculated delay. This provides maximum spread but may result in very
    -     * short delays.
    -     */
    -    FULL {
    -        @Override
    -        public double apply(double baseDelay) {
    -            return Math.random() * baseDelay;
    -        }
    -    },
    -    /**
    -     * Half jitter - random delay between 50% and 100% of calculated delay. This provides good spread while maintaining
    -     * reasonable minimum delays.
    -     */
    -    HALF {
    -        @Override
    -        public double apply(double baseDelay) {
    -            return baseDelay / 2 + Math.random() * (baseDelay / 2);
    -        }
    -    };
    -
    -    /**
    -     * Applies jitter to the given base delay.
    -     *
    -     * @param baseDelay the calculated delay before jitter
    -     * @return the delay after applying jitter
    -     */
    -    public abstract double apply(double baseDelay);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategies.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategies.java
    deleted file mode 100644
    index cdb3988e5..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategies.java
    +++ /dev/null
    @@ -1,90 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.Objects;
    -
    -/** Factory class for creating common polling strategies. */
    -public class PollingStrategies {
    -
    -    /** Preset polling strategies for common use cases. */
    -    public static class Presets {
    -
    -        /**
    -         * Default polling strategy: - Base interval: 1 second - Backoff rate: 2x - Jitter: FULL - Max interval 10
    -         * second
    -         */
    -        public static final PollingStrategy DEFAULT =
    -                exponentialBackoff(Duration.ofMillis(1000), 2.0, JitterStrategy.FULL, Duration.ofSeconds(10));
    -    }
    -
    -    /**
    -     * Creates an exponential backoff polling strategy.
    -     *
    -     * <p>The delay calculation follows the formula: delay = jitter(baseInterval Γ— backoffRate^(attempt-1))
    -     *
    -     * @param baseInterval Base delay before first poll
    -     * @param backoffRate Multiplier for exponential backoff (must be positive)
    -     * @param jitter Jitter strategy to apply to delays
    -     * @param maxInterval Maximum delay between polls
    -     * @return PollingStrategy implementing exponential backoff with jitter
    -     */
    -    public static PollingStrategy exponentialBackoff(
    -            Duration baseInterval, double backoffRate, JitterStrategy jitter, Duration maxInterval) {
    -        Objects.requireNonNull(jitter, "jitter must not be null");
    -        Objects.requireNonNull(baseInterval, "base interval must not be null");
    -        Objects.requireNonNull(maxInterval, "max interval must not be null");
    -        if (backoffRate <= 0) {
    -            throw new IllegalArgumentException("backoffRate must be positive");
    -        }
    -
    -        if (baseInterval.isNegative() || baseInterval.isZero()) {
    -            throw new IllegalArgumentException("baseInterval must be positive");
    -        }
    -
    -        if (maxInterval.isNegative() || maxInterval.isZero()) {
    -            throw new IllegalArgumentException("maxInterval must be positive");
    -        }
    -
    -        return (attempt) -> {
    -            // attempt is 1-based
    -            double delayMs = baseInterval.toMillis() * Math.pow(backoffRate, attempt - 1);
    -            delayMs = Math.min(jitter.apply(delayMs), maxInterval.toMillis());
    -            return Duration.ofMillis(Math.round(delayMs));
    -        };
    -    }
    -
    -    /**
    -     * Creates a fixed-delay polling strategy that uses the same interval for every attempt.
    -     *
    -     * @param interval Fixed delay between polls
    -     * @return PollingStrategy with fixed delay
    -     */
    -    public static PollingStrategy fixedDelay(Duration interval) {
    -        Objects.requireNonNull(interval, "interval must not be null");
    -        if (interval.isNegative() || interval.isZero()) {
    -            throw new IllegalArgumentException("interval must be positive");
    -        }
    -        return (attempt) -> interval;
    -    }
    -
    -    /**
    -     * Creates a polling strategy that polls at a specific instant in time.
    -     *
    -     * @param instant The instant to poll at
    -     * @return PollingStrategy that calculates delay until the specified instant
    -     */
    -    public static PollingStrategy at(Instant instant) {
    -        Objects.requireNonNull(instant, "instant must not be null");
    -        return (attempt) -> {
    -            var duration = Duration.between(Instant.now(), instant);
    -            if (duration.isNegative()) {
    -                // as soon as possible
    -                return Duration.ZERO;
    -            }
    -            return duration;
    -        };
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategy.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategy.java
    deleted file mode 100644
    index e9beacfe4..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/PollingStrategy.java
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -
    -/** Functional interface for computing polling delays between attempts. */
    -@FunctionalInterface
    -public interface PollingStrategy {
    -
    -    /**
    -     * Computes the delay before the next polling attempt.
    -     *
    -     * @param attempt The current attempt number (1-based)
    -     * @return Duration to wait before the next poll
    -     */
    -    Duration computeDelay(int attempt);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryDecision.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryDecision.java
    deleted file mode 100644
    index 27c525de9..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryDecision.java
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -
    -/** Represents a decision about whether to retry a failed operation and how long to wait. */
    -public class RetryDecision {
    -    private final boolean shouldRetry;
    -    private final Duration delay;
    -
    -    private RetryDecision(boolean shouldRetry, Duration delay) {
    -        this.shouldRetry = shouldRetry;
    -        this.delay = delay != null ? delay : Duration.ZERO;
    -    }
    -
    -    /**
    -     * Creates a retry decision indicating the operation should be retried after the specified delay.
    -     *
    -     * @param delay the duration to wait before retrying
    -     * @return a RetryDecision indicating retry with the specified delay
    -     */
    -    public static RetryDecision retry(Duration delay) {
    -        return new RetryDecision(true, delay);
    -    }
    -
    -    /**
    -     * Creates a retry decision indicating the operation should not be retried.
    -     *
    -     * @return a RetryDecision indicating no retry should be attempted
    -     */
    -    public static RetryDecision fail() {
    -        return new RetryDecision(false, Duration.ZERO);
    -    }
    -
    -    /** @return true if the operation should be retried, false otherwise */
    -    public boolean shouldRetry() {
    -        return shouldRetry;
    -    }
    -
    -    /** @return the duration to wait before retrying, or Duration.ZERO if no retry */
    -    public Duration delay() {
    -        return delay;
    -    }
    -
    -    @Override
    -    public String toString() {
    -        return shouldRetry ? String.format("RetryDecision{retry after %s}", delay) : "RetryDecision{fail}";
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategies.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategies.java
    deleted file mode 100644
    index c1b0b069e..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategies.java
    +++ /dev/null
    @@ -1,102 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.util.ParameterValidator;
    -
    -/**
    - * Factory class for creating common retry strategies.
    - *
    - * <p>This class provides preset retry strategies for common use cases, as well as factory methods for creating custom
    - * retry strategies with exponential backoff and jitter.
    - */
    -public class RetryStrategies {
    -
    -    /** Preset retry strategies for common use cases. */
    -    public static class Presets {
    -
    -        /**
    -         * Default retry strategy: - 6 total attempts (1 initial + 5 retries) - Initial delay: 5 seconds - Max delay: 60
    -         * seconds - Backoff rate: 2x - Jitter: FULL
    -         */
    -        public static final RetryStrategy DEFAULT = exponentialBackoff(
    -                6, // maxAttempts
    -                Duration.ofSeconds(5), // initialDelay
    -                Duration.ofSeconds(60), // maxDelay
    -                2.0, // backoffRate
    -                JitterStrategy.FULL // jitter
    -                );
    -
    -        /** No retry strategy - fails immediately on first error. Use this for operations that should not be retried. */
    -        public static final RetryStrategy NO_RETRY = (error, attempt) -> RetryDecision.fail();
    -    }
    -
    -    /**
    -     * Creates an exponential backoff retry strategy.
    -     *
    -     * <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)
    -     *
    -     * @param maxAttempts Maximum number of attempts (including initial attempt)
    -     * @param initialDelay Initial delay before first retry
    -     * @param maxDelay Maximum delay between retries
    -     * @param backoffRate Multiplier for exponential backoff
    -     * @param jitter Jitter strategy to apply to delays
    -     * @return RetryStrategy implementing exponential backoff with jitter
    -     */
    -    public static RetryStrategy exponentialBackoff(
    -            int maxAttempts, Duration initialDelay, Duration maxDelay, double backoffRate, JitterStrategy jitter) {
    -
    -        if (maxAttempts <= 0) {
    -            throw new IllegalArgumentException("maxAttempts must be positive");
    -        }
    -        ParameterValidator.validateDuration(initialDelay, "initialDelay");
    -        ParameterValidator.validateDuration(maxDelay, "maxDelay");
    -        if (backoffRate <= 0) {
    -            throw new IllegalArgumentException("backoffRate must be positive");
    -        }
    -
    -        return (error, attempt) -> {
    -            // Check if we've exceeded max attempts (attemptNumber is 1-based)
    -            if (attempt >= maxAttempts) {
    -                return RetryDecision.fail();
    -            }
    -
    -            // Calculate delay with exponential backoff
    -            double initialDelaySeconds = initialDelay.toSeconds();
    -            double maxDelaySeconds = maxDelay.toSeconds();
    -
    -            double baseDelay = Math.min(initialDelaySeconds * Math.pow(backoffRate, attempt - 1), maxDelaySeconds);
    -
    -            // Apply jitter
    -            double delayWithJitter = jitter.apply(baseDelay);
    -
    -            // Round to nearest second, minimum 1
    -            // Same rounding logic as TS SDK: https://tinyurl.com/4ntxsefu
    -            long finalDelaySeconds = Math.max(1, Math.round(delayWithJitter));
    -
    -            return RetryDecision.retry(Duration.ofSeconds(finalDelaySeconds));
    -        };
    -    }
    -
    -    /**
    -     * Creates a simple retry strategy that retries a fixed number of times with a fixed delay.
    -     *
    -     * @param maxAttempts Maximum number of attempts (including initial attempt)
    -     * @param fixedDelay Fixed delay between retries
    -     * @return RetryStrategy with fixed delay
    -     */
    -    public static RetryStrategy fixedDelay(int maxAttempts, Duration fixedDelay) {
    -        if (maxAttempts <= 0) {
    -            throw new IllegalArgumentException("maxAttempts must be positive");
    -        }
    -        ParameterValidator.validateDuration(fixedDelay, "fixedDelay");
    -
    -        return (error, attempt) -> {
    -            if (attempt >= maxAttempts) {
    -                return RetryDecision.fail();
    -            }
    -            return RetryDecision.retry(fixedDelay);
    -        };
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategy.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategy.java
    deleted file mode 100644
    index 1730c9318..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/RetryStrategy.java
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -/**
    - * Functional interface for determining retry behavior when operations fail.
    - *
    - * <p>A RetryStrategy evaluates failed operations and decides whether they should be retried and how long to wait before
    - * the next attempt.
    - */
    -@FunctionalInterface
    -public interface RetryStrategy {
    -
    -    /**
    -     * Determines whether to retry a failed operation and calculates the retry delay.
    -     *
    -     * @param error The error that occurred during the operation
    -     * @param attempt The current attempt number (1-based, so first attempt is 1)
    -     * @return RetryDecision indicating whether to retry and the delay before next attempt
    -     */
    -    RetryDecision makeRetryDecision(Throwable error, int attempt);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.java
    deleted file mode 100644
    index 43663f27c..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitForConditionWaitStrategy.java
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -
    -/**
    - * Strategy that computes the delay before the next polling attempt in a {@code waitForCondition} operation.
    - *
    - * <p>Implementations evaluate the current state and attempt number to compute a {@link Duration} delay. The
    - * continue/stop decision is handled separately by {@link WaitForConditionResult}. When the maximum number of attempts
    - * is exceeded, the strategy should throw a {@link WaitForConditionFailedException}.
    - *
    - * @param <T> the type of state being polled
    - * @see WaitStrategies
    - */
    -@FunctionalInterface
    -public interface WaitForConditionWaitStrategy<T> {
    -
    -    /**
    -     * Computes the delay before the next polling attempt based on the current state and attempt number.
    -     *
    -     * @param state the current state returned by the check function
    -     * @param attempt the attempt number (1-based)
    -     * @return a {@link Duration} representing the delay before the next polling attempt
    -     * @throws WaitForConditionFailedException if the maximum number of attempts has been exceeded
    -     */
    -    Duration evaluate(T state, int attempt);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitStrategies.java b/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitStrategies.java
    deleted file mode 100644
    index ebd11fd44..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/retry/WaitStrategies.java
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import java.time.Duration;
    -import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
    -import software.amazon.lambda.durable.util.ParameterValidator;
    -
    -/**
    - * Factory class for creating common {@link WaitForConditionWaitStrategy} implementations.
    - *
    - * <p>This class provides preset wait strategies (for use with waitForCondition) for common use cases, as well as
    - * factory methods for creating custom retry strategies with exponential backoff and jitter.
    - */
    -public final class WaitStrategies {
    -
    -    /** Preset wait strategies for common use cases. */
    -    public static class Presets {
    -
    -        /**
    -         * Default wait strategy: exponential backoff with 60 max attempts, 5s initial delay, 300s max delay, 1.5x
    -         * backoff rate, and FULL jitter.
    -         */
    -        @SuppressWarnings("rawtypes")
    -        public static final WaitForConditionWaitStrategy DEFAULT =
    -                exponentialBackoff(60, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, JitterStrategy.FULL);
    -    }
    -
    -    /**
    -     * Returns the default wait strategy.
    -     *
    -     * @param <T> the type of state being polled
    -     * @return the default wait strategy
    -     */
    -    @SuppressWarnings("unchecked")
    -    public static <T> WaitForConditionWaitStrategy<T> defaultStrategy() {
    -        return Presets.DEFAULT;
    -    }
    -
    -    /**
    -     * Creates an exponential backoff wait strategy.
    -     *
    -     * <p>The delay calculation follows the formula: baseDelay = min(initialDelay Γ— backoffRate^(attempt-1), maxDelay)
    -     *
    -     * @param maxAttempts maximum number of attempts before throwing {@link WaitForConditionFailedException}
    -     * @param initialDelay initial delay before first retry
    -     * @param maxDelay maximum delay between retries
    -     * @param backoffRate multiplier for exponential backoff (must be >= 1.0)
    -     * @param jitter jitter strategy to apply to delays
    -     * @param <T> the type of state being polled
    -     * @return a {@link WaitForConditionWaitStrategy} implementing exponential backoff with jitter
    -     */
    -    public static <T> WaitForConditionWaitStrategy<T> exponentialBackoff(
    -            int maxAttempts, Duration initialDelay, Duration maxDelay, double backoffRate, JitterStrategy jitter) {
    -        if (maxAttempts <= 0) {
    -            throw new IllegalArgumentException("maxAttempts must be positive, got: " + maxAttempts);
    -        }
    -        ParameterValidator.validateDuration(initialDelay, "initialDelay");
    -        ParameterValidator.validateDuration(maxDelay, "maxDelay");
    -        if (backoffRate < 1.0) {
    -            throw new IllegalArgumentException("backoffRate must be >= 1.0, got: " + backoffRate);
    -        }
    -        if (jitter == null) {
    -            throw new IllegalArgumentException("jitter cannot be null");
    -        }
    -
    -        return (state, attempt) -> {
    -            // attempt is 1-based
    -            if (attempt >= maxAttempts) {
    -                throw new WaitForConditionFailedException(
    -                        "waitForCondition exceeded maximum attempts (" + maxAttempts + ")");
    -            }
    -
    -            double initialDelaySeconds = initialDelay.toSeconds();
    -            double maxDelaySeconds = maxDelay.toSeconds();
    -            double baseDelay = Math.min(initialDelaySeconds * Math.pow(backoffRate, attempt - 1), maxDelaySeconds);
    -            double delayWithJitter = jitter.apply(baseDelay);
    -            long finalDelaySeconds = Math.max(1, Math.round(delayWithJitter));
    -
    -            return Duration.ofSeconds(finalDelaySeconds);
    -        };
    -    }
    -
    -    /**
    -     * Creates a fixed delay wait strategy that returns a constant delay regardless of attempt number or state.
    -     *
    -     * @param maxAttempts maximum number of attempts before throwing {@link WaitForConditionFailedException}
    -     * @param fixedDelay the constant delay between polling attempts
    -     * @param <T> the type of state being polled
    -     * @return a {@link WaitForConditionWaitStrategy} with fixed delay
    -     */
    -    public static <T> WaitForConditionWaitStrategy<T> fixedDelay(int maxAttempts, Duration fixedDelay) {
    -        if (maxAttempts <= 0) {
    -            throw new IllegalArgumentException("maxAttempts must be positive, got: " + maxAttempts);
    -        }
    -        ParameterValidator.validateDuration(fixedDelay, "fixedDelay");
    -
    -        return (state, attempt) -> {
    -            if (attempt >= maxAttempts) {
    -                throw new WaitForConditionFailedException(
    -                        "waitForCondition exceeded maximum attempts (" + maxAttempts + ")");
    -            }
    -            return fixedDelay;
    -        };
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/serde/AwsSdkV2Module.java b/sdk/src/main/java/software/amazon/lambda/durable/serde/AwsSdkV2Module.java
    deleted file mode 100644
    index f9fb55997..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/serde/AwsSdkV2Module.java
    +++ /dev/null
    @@ -1,99 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import com.fasterxml.jackson.core.JsonGenerator;
    -import com.fasterxml.jackson.core.JsonParser;
    -import com.fasterxml.jackson.databind.DeserializationContext;
    -import com.fasterxml.jackson.databind.JsonDeserializer;
    -import com.fasterxml.jackson.databind.JsonSerializer;
    -import com.fasterxml.jackson.databind.SerializerProvider;
    -import com.fasterxml.jackson.databind.module.SimpleModule;
    -import java.io.IOException;
    -import java.lang.reflect.InvocationTargetException;
    -import java.lang.reflect.Method;
    -import java.util.List;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -/**
    - * Jackson module that registers custom serializers and deserializers for AWS SDK v2 model classes.
    - *
    - * <p>AWS SDK v2 model classes use an immutable builder pattern that Jackson cannot handle natively. This module bridges
    - * the gap by serializing via {@code toBuilder()} and deserializing via {@code serializableBuilderClass()}.
    - */
    -public class AwsSdkV2Module extends SimpleModule {
    -
    -    /**
    -     * List of AWS SDK v2 classes that require custom serialization/deserialization. Add new SDK classes here to
    -     * automatically register serializers and deserializers.
    -     *
    -     * <p>See <a
    -     * href="https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-serialization-changes.html">serialization
    -     * differences</a>
    -     */
    -    private static final List<Class<?>> SDK_CLASSES =
    -            List.of(Operation.class, ErrorObject.class, CheckpointUpdatedExecutionState.class);
    -
    -    public AwsSdkV2Module() {
    -        super("AwsSdkV2Module");
    -
    -        // Register serializers and deserializers for all SDK classes
    -        for (Class<?> sdkClass : SDK_CLASSES) {
    -            registerSdkClass(sdkClass);
    -        }
    -    }
    -
    -    private <T> void registerSdkClass(Class<T> sdkClass) {
    -        addDeserializer(sdkClass, new SdkDeserializer<>(sdkClass));
    -        addSerializer(sdkClass, new SdkSerializer<>());
    -    }
    -
    -    private static class SdkDeserializer<T> extends JsonDeserializer<T> {
    -        private final Class<T> sdkClass;
    -
    -        SdkDeserializer(Class<T> sdkClass) {
    -            this.sdkClass = sdkClass;
    -        }
    -
    -        @Override
    -        @SuppressWarnings("unchecked")
    -        public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    -            try {
    -                // Call serializableBuilderClass() method on the SDK class
    -                Method serializableBuilderClassMethod = sdkClass.getMethod("serializableBuilderClass");
    -                serializableBuilderClassMethod.setAccessible(true);
    -                Class<?> builderClass = (Class<?>) serializableBuilderClassMethod.invoke(null);
    -
    -                // Deserialize to builder using treeToValue (avoids double parsing via toString())
    -                Object builder = p.readValueAs(builderClass);
    -                Method buildMethod = builderClass.getMethod("build");
    -                buildMethod.setAccessible(true);
    -                return (T) buildMethod.invoke(builder);
    -            } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
    -                throw new IOException(
    -                        "Failed to deserialize " + sdkClass.getSimpleName() + " using AWS SDK v2 builder pattern", e);
    -            }
    -        }
    -    }
    -
    -    private static class SdkSerializer<T> extends JsonSerializer<T> {
    -        @Override
    -        public void serialize(T value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
    -            try {
    -                // Call toBuilder() method on the SDK object
    -                Method toBuilderMethod = value.getClass().getMethod("toBuilder");
    -                toBuilderMethod.setAccessible(true);
    -                Object builder = toBuilderMethod.invoke(value);
    -
    -                // Serialize the builder
    -                serializers.defaultSerializeValue(builder, gen);
    -            } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
    -                throw new IOException(
    -                        "Failed to serialize " + value.getClass().getSimpleName() + " using AWS SDK v2 builder pattern",
    -                        e);
    -            }
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.java b/sdk/src/main/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.java
    deleted file mode 100644
    index db89d6935..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDes.java
    +++ /dev/null
    @@ -1,145 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import com.fasterxml.jackson.core.JsonGenerator;
    -import com.fasterxml.jackson.core.JsonParser;
    -import com.fasterxml.jackson.core.JsonToken;
    -import com.fasterxml.jackson.databind.DeserializationContext;
    -import com.fasterxml.jackson.databind.DeserializationFeature;
    -import com.fasterxml.jackson.databind.JavaType;
    -import com.fasterxml.jackson.databind.JsonDeserializer;
    -import com.fasterxml.jackson.databind.JsonSerializer;
    -import com.fasterxml.jackson.databind.MapperFeature;
    -import com.fasterxml.jackson.databind.ObjectMapper;
    -import com.fasterxml.jackson.databind.PropertyNamingStrategies;
    -import com.fasterxml.jackson.databind.SerializationFeature;
    -import com.fasterxml.jackson.databind.SerializerProvider;
    -import com.fasterxml.jackson.databind.json.JsonMapper;
    -import com.fasterxml.jackson.databind.module.SimpleModule;
    -import com.fasterxml.jackson.databind.type.TypeFactory;
    -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    -import java.io.IOException;
    -import java.lang.reflect.Type;
    -import java.time.Instant;
    -import java.time.format.DateTimeFormatter;
    -import java.time.format.DateTimeFormatterBuilder;
    -import java.util.Date;
    -import java.util.Map;
    -import java.util.concurrent.ConcurrentHashMap;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -/**
    - * Serializer/Deserializer for Durable Execution Input and Output objects. This is for INTERNAL use only - handles
    - * Lambda Durable Functions backend protocol.
    - *
    - * <p>Customer-facing serialization uses SerDes from DurableConfig.
    - */
    -public class DurableInputOutputSerDes implements SerDes {
    -    private final ObjectMapper objectMapper = createObjectMapper(); // Internal ObjectMapper
    -    private final TypeFactory typeFactory = objectMapper.getTypeFactory();
    -    private final Map<Type, JavaType> typeCache = new ConcurrentHashMap<>();
    -
    -    /**
    -     * Creates ObjectMapper for DAR backend communication (internal use only). This is for INTERNAL use only - handles
    -     * Lambda Durable Functions backend protocol.
    -     *
    -     * <p>Customer-facing serialization uses SerDes from DurableConfig.
    -     *
    -     * @return Configured ObjectMapper for durable backend communication
    -     */
    -    static ObjectMapper createObjectMapper() {
    -        var dateModule = new SimpleModule();
    -        dateModule.addDeserializer(Date.class, new JsonDeserializer<>() {
    -            @Override
    -            public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
    -                    throws IOException {
    -                // Timestamp is a double value represent seconds since epoch.
    -                var timestamp = jsonParser.getDoubleValue();
    -                // Date expects milliseconds since epoch, so multiply by 1000.
    -                return new Date((long) (timestamp * 1000));
    -            }
    -        });
    -        dateModule.addSerializer(Date.class, new JsonSerializer<>() {
    -            @Override
    -            public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
    -                    throws IOException {
    -                // Timestamp should be a double value representing seconds since epoch, so
    -                // convert from milliseconds.
    -                double timestamp = date.getTime() / 1000.0;
    -                jsonGenerator.writeNumber(timestamp);
    -            }
    -        });
    -
    -        // Needed for deserialization of timestamps for some SDK v2 objects
    -        dateModule.addDeserializer(Instant.class, new JsonDeserializer<>() {
    -            private static final DateTimeFormatter TIMESTAMP_FORMATTER = new DateTimeFormatterBuilder()
    -                    .appendPattern("yyyy-MM-dd HH:mm:ss.SSSSSSXXX")
    -                    .toFormatter();
    -
    -            @Override
    -            public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
    -                    throws IOException {
    -                if (jsonParser.hasToken(JsonToken.VALUE_NUMBER_INT)) {
    -                    return Instant.ofEpochMilli(jsonParser.getLongValue());
    -                }
    -                var timestampStr = jsonParser.getValueAsString();
    -                return Instant.from(TIMESTAMP_FORMATTER.parse(timestampStr));
    -            }
    -        });
    -
    -        return JsonMapper.builder()
    -                .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
    -                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
    -                // Looks pretty, and probably needed for tests to be deterministic.
    -                .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY)
    -                .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS)
    -                // Data passed over the wire from the backend is UpperCamelCase
    -                .propertyNamingStrategy(PropertyNamingStrategies.UPPER_CAMEL_CASE)
    -                .addModule(new JavaTimeModule())
    -                .addModule(dateModule)
    -                .addModule(new AwsSdkV2Module())
    -                .build();
    -    }
    -
    -    /**
    -     * Serializes an object to a JSON string.
    -     *
    -     * @param value the object to serialize
    -     * @return the JSON string representation, or null if value is null
    -     */
    -    @Override
    -    public String serialize(Object value) {
    -        if (value == null) {
    -            return null;
    -        }
    -        try {
    -            return objectMapper.writeValueAsString(value);
    -        } catch (IOException e) {
    -            ExceptionHelper.sneakyThrow(e);
    -            return null;
    -        }
    -    }
    -
    -    /**
    -     * Deserializes a JSON string to DurableExecutionInput object
    -     *
    -     * @param data the JSON string to deserialize
    -     * @param typeToken the type token of DurableExecutionInput
    -     * @return the deserialized object, or null if data is null
    -     */
    -    @Override
    -    public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -        if (data == null) {
    -            return null;
    -        }
    -        try {
    -            JavaType javaType = typeCache.computeIfAbsent(typeToken.getType(), typeFactory::constructType);
    -            return objectMapper.readValue(data, javaType);
    -        } catch (IOException e) {
    -            ExceptionHelper.sneakyThrow(e);
    -            return null;
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/serde/JacksonSerDes.java b/sdk/src/main/java/software/amazon/lambda/durable/serde/JacksonSerDes.java
    deleted file mode 100644
    index d69ea805c..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/serde/JacksonSerDes.java
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import com.fasterxml.jackson.databind.DeserializationFeature;
    -import com.fasterxml.jackson.databind.JavaType;
    -import com.fasterxml.jackson.databind.ObjectMapper;
    -import com.fasterxml.jackson.databind.SerializationFeature;
    -import com.fasterxml.jackson.databind.type.TypeFactory;
    -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    -import java.lang.reflect.Type;
    -import java.util.Map;
    -import java.util.concurrent.ConcurrentHashMap;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -
    -/**
    - * Jackson-based implementation of {@link SerDes}.
    - *
    - * <p>This implementation uses Jackson's ObjectMapper for JSON serialization and deserialization.
    - *
    - * <p>Features:
    - *
    - * <ul>
    - *   <li>Java 8 time types support (Duration, Instant, LocalDateTime, etc.)
    - *   <li>Dates serialized as ISO-8601 strings (not timestamps)
    - *   <li>Unknown properties ignored during deserialization
    - *   <li>Type cache for improved performance with generic types
    - * </ul>
    - */
    -public class JacksonSerDes implements SerDes {
    -    private final ObjectMapper mapper;
    -    private final TypeFactory typeFactory;
    -    private final Map<Type, JavaType> typeCache;
    -
    -    /** Creates a new JacksonSerDes with default ObjectMapper configuration. */
    -    public JacksonSerDes() {
    -        this(new ObjectMapper()
    -                .registerModule(new JavaTimeModule())
    -                .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
    -                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES));
    -    }
    -
    -    /** Creates a new JacksonSerDes with a custom ObjectMapper configuration. */
    -    public JacksonSerDes(ObjectMapper objectMapper) {
    -        this.mapper = objectMapper;
    -        this.typeFactory = mapper.getTypeFactory();
    -        this.typeCache = new ConcurrentHashMap<>();
    -    }
    -
    -    @Override
    -    public String serialize(Object value) {
    -        if (value == null) return null;
    -        try {
    -            return mapper.writeValueAsString(value);
    -        } catch (Exception e) {
    -            throw new SerDesException(
    -                    "Serialization failed for type: " + value.getClass().getName(), e);
    -        }
    -    }
    -
    -    @Override
    -    public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -        if (data == null) return null;
    -
    -        try {
    -            // Convert TypeToken to Jackson's JavaType using TypeFactory
    -            // Cache to avoid repeated reflection overhead
    -            JavaType javaType = typeCache.computeIfAbsent(typeToken.getType(), typeFactory::constructType);
    -            return mapper.readValue(data, javaType);
    -        } catch (Exception e) {
    -            throw new SerDesException(
    -                    "Deserialization failed for type: " + typeToken.getType().getTypeName(), e);
    -        }
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/serde/SerDes.java b/sdk/src/main/java/software/amazon/lambda/durable/serde/SerDes.java
    deleted file mode 100644
    index b8f39e1c1..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/serde/SerDes.java
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import software.amazon.lambda.durable.TypeToken;
    -
    -/**
    - * Interface for serialization and deserialization of objects.
    - *
    - * <p>Implementations must support both simple types via {@link Class} and complex generic types via {@link TypeToken}.
    - */
    -public interface SerDes {
    -    /**
    -     * Serializes an object to a JSON string.
    -     *
    -     * @param value the object to serialize
    -     * @return the JSON string representation, or null if value is null
    -     */
    -    String serialize(Object value);
    -
    -    /**
    -     * Deserializes a JSON string to an object of the specified generic type.
    -     *
    -     * <p>This method supports complex generic types like {@code List<MyObject>} or {@code Map<String, MyObject>} that
    -     * cannot be represented by a simple {@link Class} object.
    -     *
    -     * <p>Usage example:
    -     *
    -     * <pre>{@code
    -     * List<String> items = serDes.deserialize(json, new TypeToken<List<String>>() {});
    -     * }</pre>
    -     *
    -     * @param data the JSON string to deserialize
    -     * @param typeToken the type token capturing the generic type information
    -     * @param <T> the target type
    -     * @return the deserialized object, or null if data is null
    -     */
    -    <T> T deserialize(String data, TypeToken<T> typeToken);
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/util/CompletedDurableFuture.java b/sdk/src/main/java/software/amazon/lambda/durable/util/CompletedDurableFuture.java
    deleted file mode 100644
    index b75f664dc..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/util/CompletedDurableFuture.java
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.util;
    -
    -import software.amazon.lambda.durable.DurableFuture;
    -
    -/**
    - * A {@link DurableFuture} that is already completed with a value.
    - *
    - * <p>Used for short-circuit cases (e.g., empty collection in map) where no checkpoint or async execution is needed.
    - *
    - * @param <T> the result type
    - */
    -public class CompletedDurableFuture<T> implements DurableFuture<T> {
    -    private final T value;
    -
    -    public CompletedDurableFuture(T value) {
    -        this.value = value;
    -    }
    -
    -    @Override
    -    public T get() {
    -        return value;
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/util/ExceptionHelper.java b/sdk/src/main/java/software/amazon/lambda/durable/util/ExceptionHelper.java
    deleted file mode 100644
    index 912f7d547..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/util/ExceptionHelper.java
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.util;
    -
    -import java.util.Arrays;
    -import java.util.List;
    -import java.util.concurrent.CompletionException;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -/** Utility class for handling exceptions */
    -public class ExceptionHelper {
    -
    -    /**
    -     * Throws any exception as if it were unchecked using type erasure. This preserves the original exception type and
    -     * stack trace.
    -     *
    -     * @param exception the exception to throw
    -     * @param <T> the exception type (erased at runtime)
    -     * @throws T the exception as an unchecked exception
    -     */
    -    @SuppressWarnings("unchecked")
    -    public static <T extends Throwable> void sneakyThrow(Throwable exception) throws T {
    -        throw (T) exception;
    -    }
    -
    -    /**
    -     * unwrap the exception that is wrapped by CompletionException
    -     *
    -     * @param throwable the throwable to unwrap
    -     * @return the original Throwable that is not a CompletionException
    -     */
    -    public static Throwable unwrapCompletableFuture(Throwable throwable) {
    -        while (throwable instanceof CompletionException) {
    -            throwable = throwable.getCause();
    -        }
    -        return throwable;
    -    }
    -
    -    /**
    -     * build an ErrorObject from a Throwable
    -     *
    -     * @param throwable the Throwable from which to build the errorObject
    -     * @return the ErrorObject
    -     */
    -    public static ErrorObject buildErrorObject(Throwable throwable, SerDes serDes) {
    -        return ErrorObject.builder()
    -                .errorType(throwable.getClass().getName())
    -                .errorMessage(throwable.getMessage())
    -                .errorData(serDes.serialize(throwable))
    -                .stackTrace(serializeStackTrace(throwable.getStackTrace()))
    -                .build();
    -    }
    -
    -    /**
    -     * Serializes a stack trace to a list of pipe-delimited strings in the format
    -     * {@code className|methodName|fileName|lineNumber}.
    -     *
    -     * @param stackTrace the stack trace elements to serialize
    -     * @return list of serialized stack trace strings
    -     */
    -    public static List<String> serializeStackTrace(StackTraceElement[] stackTrace) {
    -        return Arrays.stream(stackTrace)
    -                .map((element) -> String.format(
    -                        "%s|%s|%s|%d",
    -                        element.getClassName(),
    -                        element.getMethodName(),
    -                        element.getFileName(),
    -                        element.getLineNumber()))
    -                .toList();
    -    }
    -
    -    /**
    -     * Deserializes a list of pipe-delimited strings back into stack trace elements.
    -     *
    -     * @param stackTrace the serialized stack trace strings
    -     * @return array of reconstructed StackTraceElements
    -     */
    -    public static StackTraceElement[] deserializeStackTrace(List<String> stackTrace) {
    -        return stackTrace.stream()
    -                .map((s) -> {
    -                    String[] tokens = s.split("\\|");
    -                    return new StackTraceElement(tokens[0], tokens[1], tokens[2], Integer.parseInt(tokens[3]));
    -                })
    -                .toArray(StackTraceElement[]::new);
    -    }
    -}
    diff --git a/sdk/src/main/java/software/amazon/lambda/durable/util/ParameterValidator.java b/sdk/src/main/java/software/amazon/lambda/durable/util/ParameterValidator.java
    deleted file mode 100644
    index 8f948ee2f..000000000
    --- a/sdk/src/main/java/software/amazon/lambda/durable/util/ParameterValidator.java
    +++ /dev/null
    @@ -1,146 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.util;
    -
    -import java.time.Duration;
    -import java.util.Collection;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.IdentityHashMap;
    -import java.util.LinkedHashSet;
    -import java.util.Set;
    -import java.util.WeakHashMap;
    -import java.util.concurrent.ConcurrentHashMap;
    -
    -/**
    - * Utility class for validating input parameters in the Durable Execution SDK.
    - *
    - * <p>Provides common validation methods to ensure consistent error messages and validation logic across the SDK.
    - */
    -public final class ParameterValidator {
    -
    -    private static final long MIN_DURATION_SECONDS = 1;
    -    public static final int MAX_OPERATION_NAME_LENGTH = 256;
    -
    -    private ParameterValidator() {
    -        // Utility class - prevent instantiation
    -    }
    -
    -    /**
    -     * Validates that a duration is at least 1 second.
    -     *
    -     * @param duration the duration to validate
    -     * @param parameterName the name of the parameter (for error messages)
    -     * @throws IllegalArgumentException if duration is null or less than 1 second
    -     */
    -    public static void validateDuration(Duration duration, String parameterName) {
    -        if (duration == null) {
    -            throw new IllegalArgumentException(parameterName + " cannot be null");
    -        }
    -        if (duration.toSeconds() < MIN_DURATION_SECONDS) {
    -            throw new IllegalArgumentException(
    -                    parameterName + " must be at least " + MIN_DURATION_SECONDS + " second, got: " + duration);
    -        }
    -    }
    -
    -    /**
    -     * Validates that an optional duration (if provided) is at least 1 second.
    -     *
    -     * @param duration the duration to validate (can be null)
    -     * @param parameterName the name of the parameter (for error messages)
    -     * @throws IllegalArgumentException if duration is non-null and less than 1 second
    -     */
    -    public static void validateOptionalDuration(Duration duration, String parameterName) {
    -        if (duration != null && duration.toSeconds() < MIN_DURATION_SECONDS) {
    -            throw new IllegalArgumentException(
    -                    parameterName + " must be at least " + MIN_DURATION_SECONDS + " second, got: " + duration);
    -        }
    -    }
    -
    -    /**
    -     * Validates that an integer value is positive (greater than 0).
    -     *
    -     * @param value the value to validate
    -     * @param parameterName the name of the parameter (for error messages)
    -     * @throws IllegalArgumentException if value is null or not positive
    -     */
    -    public static void validatePositiveInteger(Integer value, String parameterName) {
    -        if (value == null) {
    -            throw new IllegalArgumentException(parameterName + " cannot be null");
    -        }
    -        if (value <= 0) {
    -            throw new IllegalArgumentException(parameterName + " must be positive, got: " + value);
    -        }
    -    }
    -
    -    /**
    -     * Validates that an optional integer value (if provided) is positive (greater than 0).
    -     *
    -     * @param value the value to validate (can be null)
    -     * @param parameterName the name of the parameter (for error messages)
    -     * @throws IllegalArgumentException if value is non-null and not positive
    -     */
    -    public static void validateOptionalPositiveInteger(Integer value, String parameterName) {
    -        if (value != null && value <= 0) {
    -            throw new IllegalArgumentException(parameterName + " must be positive, got: " + value);
    -        }
    -    }
    -
    -    public static void validateOperationName(String name) {
    -        validateOperationName(name, MAX_OPERATION_NAME_LENGTH);
    -    }
    -
    -    public static void validateOperationName(String name, int maxLength) {
    -        if (name == null) {
    -            // operation name is optional
    -            return;
    -        }
    -        if (name.isEmpty()) {
    -            throw new IllegalArgumentException("Operation name cannot be empty");
    -        }
    -        if (name.length() > maxLength) {
    -            throw new IllegalArgumentException(
    -                    "Operation name must be less than " + maxLength + " characters, got: " + name);
    -        }
    -
    -        // validate each character is printable ASCII
    -        for (char c : name.toCharArray()) {
    -            if (c < 0x20 || c > 0x7e) {
    -                throw new IllegalArgumentException(
    -                        "Operation name must contain only printable ASCII characters, got: " + name);
    -            }
    -        }
    -    }
    -
    -    /** Known unordered map types whose views (keySet, values, entrySet) do not guarantee iteration order. */
    -    private static final Set<Class<?>> UNORDERED_MAP_TYPES =
    -            Set.of(HashMap.class, IdentityHashMap.class, WeakHashMap.class, ConcurrentHashMap.class);
    -
    -    /**
    -     * Validates that a collection has deterministic iteration order.
    -     *
    -     * <p>Rejects known unordered collection types: {@link HashSet} (but not {@link LinkedHashSet}, which has stable
    -     * insertion-order iteration), and views returned by {@link HashMap}, {@link IdentityHashMap}, {@link WeakHashMap},
    -     * and {@link ConcurrentHashMap}.
    -     *
    -     * @param items the collection to validate
    -     * @throws IllegalArgumentException if items is null or has non-deterministic iteration order
    -     */
    -    public static void validateOrderedCollection(Collection<?> items) {
    -        if (items == null) {
    -            throw new IllegalArgumentException("items cannot be null");
    -        }
    -        // LinkedHashSet extends HashSet but has stable insertion-order iteration β€” allow it
    -        if (items instanceof LinkedHashSet) {
    -            return;
    -        }
    -        if (items instanceof HashSet || isUnorderedMapView(items)) {
    -            throw new IllegalArgumentException("items must have deterministic iteration order");
    -        }
    -    }
    -
    -    private static boolean isUnorderedMapView(Collection<?> collection) {
    -        var enclosing = collection.getClass().getEnclosingClass();
    -        return enclosing != null && UNORDERED_MAP_TYPES.contains(enclosing);
    -    }
    -}
    diff --git a/sdk/src/main/resources/version.prop b/sdk/src/main/resources/version.prop
    deleted file mode 100644
    index defbd4820..000000000
    --- a/sdk/src/main/resources/version.prop
    +++ /dev/null
    @@ -1 +0,0 @@
    -version=${project.version}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/DurableConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/DurableConfigTest.java
    deleted file mode 100644
    index f2766ccba..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/DurableConfigTest.java
    +++ /dev/null
    @@ -1,464 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertInstanceOf;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNotSame;
    -import static org.junit.jupiter.api.Assertions.assertSame;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -import static org.mockito.Mockito.mock;
    -
    -import java.time.Duration;
    -import java.util.concurrent.ExecutorService;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
    -import software.amazon.awssdk.services.lambda.LambdaClient;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.client.LambdaDurableFunctionsClient;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.PollingStrategies;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class DurableConfigTest {
    -
    -    private DurableExecutionClient mockClient;
    -    private SerDes mockSerDes;
    -    private ExecutorService mockExecutor;
    -
    -    @BeforeEach
    -    void setUp() {
    -        mockClient = mock(DurableExecutionClient.class);
    -        mockSerDes = mock(SerDes.class);
    -        mockExecutor = mock(ExecutorService.class);
    -    }
    -
    -    @Test
    -    void testDefaultConfig_CreatesWithDefaults() {
    -        var config = DurableConfig.defaultConfig();
    -
    -        assertNotNull(config);
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertInstanceOf(LambdaDurableFunctionsClient.class, config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -        assertInstanceOf(JacksonSerDes.class, config.getSerDes());
    -        assertNotNull(config.getExecutorService());
    -        assertInstanceOf(ExecutorService.class, config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_WithCustomDurableExecutionClient() {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        assertNotNull(config);
    -        assertEquals(mockClient, config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -        assertInstanceOf(JacksonSerDes.class, config.getSerDes());
    -        assertNotNull(config.getExecutorService());
    -        assertInstanceOf(ExecutorService.class, config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_WithCustomSerDes() {
    -        var config = DurableConfig.builder().withSerDes(mockSerDes).build();
    -
    -        assertNotNull(config);
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertEquals(mockSerDes, config.getSerDes());
    -        assertNotNull(config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_WithCustomExecutorService() {
    -        var config = DurableConfig.builder().withExecutorService(mockExecutor).build();
    -
    -        assertNotNull(config);
    -        assertEquals(mockExecutor, config.getExecutorService());
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -    }
    -
    -    @Test
    -    void testBuilder_WithAllCustomComponents() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withSerDes(mockSerDes)
    -                .withExecutorService(mockExecutor)
    -                .build();
    -
    -        assertNotNull(config);
    -        assertEquals(mockClient, config.getDurableExecutionClient());
    -        assertEquals(mockSerDes, config.getSerDes());
    -        assertEquals(mockExecutor, config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_NullDurableExecutionClient_ThrowsException() {
    -        var builder = DurableConfig.builder();
    -
    -        var exception = assertThrows(NullPointerException.class, () -> {
    -            builder.withDurableExecutionClient(null);
    -        });
    -
    -        assertEquals("DurableExecutionClient cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testBuilder_NullSerDes_ThrowsException() {
    -        var builder = DurableConfig.builder();
    -
    -        var exception = assertThrows(NullPointerException.class, () -> {
    -            builder.withSerDes(null);
    -        });
    -
    -        assertEquals("SerDes cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testBuilder_FluentAPI() {
    -        var builder = DurableConfig.builder();
    -
    -        // Verify fluent API returns builder
    -        assertSame(builder, builder.withDurableExecutionClient(mockClient));
    -        assertSame(builder, builder.withSerDes(mockSerDes));
    -        assertSame(builder, builder.withExecutorService(mockExecutor));
    -    }
    -
    -    @Test
    -    void testBuilder_Immutability() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withSerDes(mockSerDes)
    -                .build();
    -
    -        // Verify config is immutable (no setters available)
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -
    -        // Build another config from same builder should create new instance
    -        var config2 = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withSerDes(mockSerDes)
    -                .build();
    -
    -        assertNotSame(config, config2);
    -    }
    -
    -    @Test
    -    void testDefaultDurableExecutionClient_UsesDefaultRegion() {
    -        // Test that default client creation works with default region fallback
    -        var config = DurableConfig.defaultConfig();
    -        var client = config.getDurableExecutionClient();
    -
    -        assertNotNull(client);
    -        assertInstanceOf(LambdaDurableFunctionsClient.class, client);
    -    }
    -
    -    @Test
    -    void testDefaultSerDes_IsJacksonSerDes() {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        var serDes = config.getSerDes();
    -        assertInstanceOf(JacksonSerDes.class, serDes);
    -    }
    -
    -    @Test
    -    void testDefaultExecutorService_IsNotNull() {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        var executor = config.getExecutorService();
    -        assertNotNull(executor);
    -        assertFalse(executor.isShutdown());
    -    }
    -
    -    @Test
    -    void testBuilder_MultipleBuilds_CreateIndependentInstances() {
    -        var builder = DurableConfig.builder().withDurableExecutionClient(mockClient);
    -
    -        var config1 = builder.build();
    -        var config2 = builder.build();
    -
    -        assertNotSame(config1, config2);
    -        assertEquals(config1.getDurableExecutionClient(), config2.getDurableExecutionClient());
    -
    -        // ExecutorService should be different instances (each gets its own)
    -        assertSame(config1.getExecutorService(), config2.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_NullExecutorService_AllowedAndUsesDefault() {
    -        // ExecutorService can be null - DurableConfig will create default
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withExecutorService(null)
    -                .build();
    -
    -        assertNotNull(config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testDefaultConfig_CreatesNewInstancesEachTime() {
    -        var config1 = DurableConfig.defaultConfig();
    -        var config2 = DurableConfig.defaultConfig();
    -
    -        assertNotSame(config1, config2);
    -        assertSame(config1.getExecutorService(), config2.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_EmptyBuild_UsesAllDefaults() {
    -        var config = DurableConfig.builder().build();
    -
    -        assertNotNull(config);
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertInstanceOf(LambdaDurableFunctionsClient.class, config.getDurableExecutionClient());
    -        assertNotNull(config.getSerDes());
    -        assertInstanceOf(JacksonSerDes.class, config.getSerDes());
    -        assertNotNull(config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_PartialConfiguration_FillsDefaults() {
    -        var config = DurableConfig.builder().withSerDes(mockSerDes).build();
    -
    -        assertNotNull(config);
    -        // Custom SerDes
    -        assertEquals(mockSerDes, config.getSerDes());
    -        // Default client and executor
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertInstanceOf(LambdaDurableFunctionsClient.class, config.getDurableExecutionClient());
    -        assertNotNull(config.getExecutorService());
    -    }
    -
    -    @Test
    -    void testBuilder_WithLambdaClientBuilder_CreatesLambdaDurableFunctionsClient() {
    -        var lambdaClientBuilder = LambdaClient.builder()
    -                .region(software.amazon.awssdk.regions.Region.US_WEST_2)
    -                .credentialsProvider(software.amazon.awssdk.auth.credentials.StaticCredentialsProvider.create(
    -                        software.amazon.awssdk.auth.credentials.AwsBasicCredentials.create("test", "test")));
    -
    -        var config = DurableConfig.builder()
    -                .withLambdaClientBuilder(lambdaClientBuilder)
    -                .build();
    -
    -        assertNotNull(config.getDurableExecutionClient());
    -        assertInstanceOf(LambdaDurableFunctionsClient.class, config.getDurableExecutionClient());
    -    }
    -
    -    @Test
    -    void testBuilder_WithLambdaClientBuilder_NullThrowsException() {
    -        var builder = DurableConfig.builder();
    -
    -        var exception = assertThrows(NullPointerException.class, () -> builder.withLambdaClientBuilder(null));
    -
    -        assertEquals("LambdaClient cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testAddUserAgentSuffix_SetsUserAgentOnBuilder() {
    -        var lambdaClientBuilder = LambdaClient.builder();
    -
    -        var result = DurableConfig.addUserAgentSuffix(lambdaClientBuilder);
    -
    -        var overrideConfig = result.overrideConfiguration();
    -        var userAgentSuffix = overrideConfig.advancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX);
    -        assertTrue(userAgentSuffix.isPresent(), "USER_AGENT_SUFFIX should be set");
    -        assertTrue(
    -                userAgentSuffix.get().contains("@aws/durable-execution-sdk-java/"),
    -                "User agent suffix should contain SDK identifier, got: " + userAgentSuffix.get());
    -    }
    -
    -    @Test
    -    void testAddUserAgentSuffix_PreservesExistingConfiguration() {
    -        var lambdaClientBuilder =
    -                LambdaClient.builder().overrideConfiguration(c -> c.putHeader("X-Custom-Header", "test-value"));
    -
    -        var result = DurableConfig.addUserAgentSuffix(lambdaClientBuilder);
    -
    -        var overrideConfig = result.overrideConfiguration();
    -        var userAgentSuffix = overrideConfig.advancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX);
    -        assertTrue(userAgentSuffix.isPresent());
    -        assertTrue(userAgentSuffix.get().contains("@aws/durable-execution-sdk-java/"));
    -    }
    -
    -    @Test
    -    void testAddUserAgentSuffix_ReturnsSameBuilderInstance() {
    -        var lambdaClientBuilder = LambdaClient.builder();
    -
    -        var result = DurableConfig.addUserAgentSuffix(lambdaClientBuilder);
    -
    -        assertSame(lambdaClientBuilder, result);
    -    }
    -
    -    // --- Polling strategy tests ---
    -
    -    @Test
    -    void testDefaultConfig_PollingStrategyDefaults() {
    -        var config = DurableConfig.defaultConfig();
    -
    -        assertNotNull(config.getPollingStrategy());
    -        assertSame(PollingStrategies.Presets.DEFAULT, config.getPollingStrategy());
    -        assertEquals(Duration.ofSeconds(0), config.getCheckpointDelay());
    -    }
    -
    -    @Test
    -    void testBuilder_WithCustomPollingStrategy() {
    -        var customStrategy = PollingStrategies.exponentialBackoff(
    -                Duration.ofMillis(500), 3.0, JitterStrategy.NONE, Duration.ofSeconds(10));
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withPollingStrategy(customStrategy)
    -                .build();
    -
    -        assertSame(customStrategy, config.getPollingStrategy());
    -    }
    -
    -    @Test
    -    void testBuilder_WithFixedDelayPollingStrategy() {
    -        var fixedStrategy = PollingStrategies.fixedDelay(Duration.ofMillis(200));
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withPollingStrategy(fixedStrategy)
    -                .build();
    -
    -        assertSame(fixedStrategy, config.getPollingStrategy());
    -    }
    -
    -    @Test
    -    void testBuilder_WithPollingStrategyNull_UsesDefault() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withPollingStrategy(null)
    -                .build();
    -
    -        assertSame(PollingStrategies.Presets.DEFAULT, config.getPollingStrategy());
    -    }
    -
    -    @Test
    -    void testBuilder_WithCustomCheckpointDelay() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withCheckpointDelay(Duration.ofSeconds(5))
    -                .build();
    -
    -        assertEquals(Duration.ofSeconds(5), config.getCheckpointDelay());
    -    }
    -
    -    @Test
    -    void testBuilder_WithPollingStrategyAndCheckpointDelay() {
    -        var customStrategy = PollingStrategies.exponentialBackoff(
    -                Duration.ofMillis(200), 1.5, JitterStrategy.HALF, Duration.ofSeconds(10));
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withPollingStrategy(customStrategy)
    -                .withCheckpointDelay(Duration.ofSeconds(2))
    -                .build();
    -
    -        assertSame(customStrategy, config.getPollingStrategy());
    -        assertEquals(Duration.ofSeconds(2), config.getCheckpointDelay());
    -    }
    -
    -    @Test
    -    void testBuilder_FluentAPI_PollingMethods() {
    -        var builder = DurableConfig.builder();
    -        var strategy = PollingStrategies.Presets.DEFAULT;
    -
    -        assertSame(builder, builder.withPollingStrategy(strategy));
    -        assertSame(builder, builder.withCheckpointDelay(Duration.ofSeconds(1)));
    -    }
    -
    -    @Test
    -    void testBuilder_CheckpointDelayNull_UsesDefault() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withCheckpointDelay(null)
    -                .build();
    -
    -        assertEquals(Duration.ofSeconds(0), config.getCheckpointDelay());
    -    }
    -
    -    // --- validateConfiguration tests ---
    -
    -    @Test
    -    void validateConfiguration_PassesForValidConfig() {
    -        var config = DurableConfig.builder()
    -                .withDurableExecutionClient(mockClient)
    -                .withSerDes(mockSerDes)
    -                .withExecutorService(mockExecutor)
    -                .build();
    -
    -        // Should not throw β€” all fields are set
    -        config.validateConfiguration();
    -    }
    -
    -    @Test
    -    void validateConfiguration_ThrowsWhenDurableExecutionClientIsNull() throws Exception {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        setField(config, "durableExecutionClient", null);
    -
    -        var ex = assertThrows(IllegalStateException.class, config::validateConfiguration);
    -        assertEquals("DurableExecutionClient configuration failed", ex.getMessage());
    -    }
    -
    -    @Test
    -    void validateConfiguration_ThrowsWhenSerDesIsNull() throws Exception {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        setField(config, "serDes", null);
    -
    -        var ex = assertThrows(IllegalStateException.class, config::validateConfiguration);
    -        assertEquals("SerDes configuration failed", ex.getMessage());
    -    }
    -
    -    @Test
    -    void validateConfiguration_ThrowsWhenExecutorServiceIsNull() throws Exception {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        setField(config, "executorService", null);
    -
    -        var ex = assertThrows(IllegalStateException.class, config::validateConfiguration);
    -        assertEquals("ExecutorService configuration failed", ex.getMessage());
    -    }
    -
    -    @Test
    -    void validateConfiguration_ChecksClientBeforeSerDes() throws Exception {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        setField(config, "durableExecutionClient", null);
    -        setField(config, "serDes", null);
    -
    -        var ex = assertThrows(IllegalStateException.class, config::validateConfiguration);
    -        assertEquals("DurableExecutionClient configuration failed", ex.getMessage());
    -    }
    -
    -    @Test
    -    void validateConfiguration_ChecksSerDesBeforeExecutorService() throws Exception {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient).build();
    -
    -        setField(config, "serDes", null);
    -        setField(config, "executorService", null);
    -
    -        var ex = assertThrows(IllegalStateException.class, config::validateConfiguration);
    -        assertEquals("SerDes configuration failed", ex.getMessage());
    -    }
    -
    -    private static void setField(Object target, String fieldName, Object value) throws Exception {
    -        var field = target.getClass().getDeclaredField(fieldName);
    -        field.setAccessible(true);
    -        field.set(target, value);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/DurableContextTest.java b/sdk/src/test/java/software/amazon/lambda/durable/DurableContextTest.java
    deleted file mode 100644
    index 1d50cc1c8..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/DurableContextTest.java
    +++ /dev/null
    @@ -1,410 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.*;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.SuspendExecutionException;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -
    -class DurableContextTest {
    -    private static final String EXECUTION_NAME = "349beff4-a89d-4bc8-a56f-af7a8af67a5f";
    -    private static final String EXECUTION_OP_ID = "20dae574-53da-37a1-bfd5-b0e2e6ec715d";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    private static final Operation EXECUTION_OP = Operation.builder()
    -            .id(EXECUTION_OP_ID)
    -            .type(OperationType.EXECUTION)
    -            .status(OperationStatus.STARTED)
    -            .build();
    -    private static final String OPERATION_ID1 = TestUtils.hashOperationId("1");
    -    private static final String OPERATION_ID2 = TestUtils.hashOperationId("2");
    -    private static final String OPERATION_ID3 = TestUtils.hashOperationId("3");
    -
    -    private DurableContext createTestContext() {
    -        return createTestContext(List.of());
    -    }
    -
    -    private DurableContext createTestContext(List<Operation> initialOperations) {
    -        var client = TestUtils.createMockClient();
    -        var operations = new ArrayList<>(List.of(EXECUTION_OP));
    -        operations.addAll(initialOperations);
    -        var initialExecutionState =
    -                CheckpointUpdatedExecutionState.builder().operations(operations).build();
    -        var executionManager = new ExecutionManager(
    -                new DurableExecutionInput(EXECUTION_ARN, "test-token", initialExecutionState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -        var root = DurableContextImpl.createRootContext(
    -                executionManager,
    -                software.amazon.lambda.durable.DurableConfig.builder().build(),
    -                null);
    -        executionManager.registerActiveThread(null);
    -        executionManager.setCurrentThreadContext(new ThreadContext(null, ThreadType.CONTEXT));
    -        return root;
    -    }
    -
    -    @Test
    -    void testContextCreation() {
    -        var context = createTestContext();
    -
    -        assertNotNull(context);
    -        assertNull(context.getLambdaContext());
    -    }
    -
    -    @Test
    -    void testGetExecutionContext() {
    -        var context = createTestContext();
    -
    -        assertNotNull(context.getExecutionArn());
    -        assertEquals(EXECUTION_ARN, context.getExecutionArn());
    -    }
    -
    -    @Test
    -    void testStepExecution() {
    -        var context = createTestContext();
    -
    -        var result = context.step("test", String.class, stepCtx -> "Hello World");
    -
    -        assertEquals("Hello World", result);
    -    }
    -
    -    @Test
    -    void testStepReplay() {
    -        // Create context with existing operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"Cached Result\"").build())
    -                .build();
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // This should return cached result, not execute the function
    -        var result = context.step("test", String.class, stepCtx -> "New Result");
    -
    -        assertEquals("Cached Result", result);
    -    }
    -
    -    @Test
    -    void testStepAsync() throws Exception {
    -        var context = createTestContext();
    -
    -        var future = context.stepAsync("async-test", String.class, stepCtx -> "Async Result");
    -
    -        assertNotNull(future);
    -        assertEquals("Async Result", future.get());
    -    }
    -
    -    @Test
    -    void testStepAsyncReplay() throws Exception {
    -        // Create context with existing operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(
    -                        StepDetails.builder().result("\"Cached Async Result\"").build())
    -                .build();
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // This should return cached result immediately
    -        var future = context.stepAsync("async-test", String.class, stepCtx -> "New Async Result");
    -        assertEquals("Cached Async Result", future.get());
    -    }
    -
    -    @Test
    -    void testWait() {
    -        var context = createTestContext();
    -
    -        // Wait should throw SuspendExecutionException
    -        assertThrows(SuspendExecutionException.class, () -> {
    -            context.wait(null, Duration.ofMinutes(5));
    -        });
    -    }
    -
    -    @Test
    -    void testWaitReplay() {
    -        // Create context with completed wait operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // Wait should complete immediately (no exception)
    -        assertDoesNotThrow(() -> {
    -            context.wait(null, Duration.ofMinutes(5));
    -        });
    -    }
    -
    -    @Test
    -    void testCombinedSyncAsyncWait() throws Exception {
    -        var context = createTestContext();
    -
    -        // Execute sync step
    -        var syncResult = context.step("sync-step", String.class, stepCtx -> "Sync Done");
    -        assertEquals("Sync Done", syncResult);
    -
    -        // Execute async step
    -        var asyncFuture = context.stepAsync("async-step", Integer.class, stepCtx -> 42);
    -        assertEquals(42, asyncFuture.get());
    -
    -        // Receiving results from `get` calls doesn't mean the step threads have been deregistered.So we wait for 500ms
    -        // to make sure the above step threads have been deregistered. Otherwise, the wait call will be stuck forever
    -        // and SuspendExecutionException will be thrown from the step thread
    -        Thread.sleep(500);
    -
    -        // Wait should suspend (throw exception)
    -        assertThrows(SuspendExecutionException.class, () -> {
    -            context.wait(null, Duration.ofSeconds(30));
    -        });
    -    }
    -
    -    @Test
    -    void testCombinedReplay() throws Exception {
    -        // Create context with all operations completed
    -        var syncOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"Replayed Sync\"").build())
    -                .build();
    -        var asyncOp = Operation.builder()
    -                .id(OPERATION_ID2)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("100").build())
    -                .build();
    -        var waitOp = Operation.builder()
    -                .id(OPERATION_ID3)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -        var context = createTestContext(List.of(syncOp, asyncOp, waitOp));
    -
    -        // All operations should replay from cache
    -        var syncResult = context.step("sync-step", String.class, stepCtx -> "New Sync");
    -        assertEquals("Replayed Sync", syncResult);
    -
    -        var asyncFuture = context.stepAsync("async-step", Integer.class, stepCtx -> 999);
    -        assertEquals(100, asyncFuture.get());
    -
    -        // Wait should complete immediately (no exception)
    -        assertDoesNotThrow(() -> {
    -            context.wait(null, Duration.ofSeconds(30));
    -        });
    -    }
    -
    -    @Test
    -    void testNamedWait() {
    -        var ctx = createTestContext();
    -
    -        // Named wait should throw SuspendExecutionException
    -        assertThrows(SuspendExecutionException.class, () -> {
    -            ctx.wait("my-wait", Duration.ofSeconds(5));
    -        });
    -
    -        // Verify it works without error (basic functionality test)
    -        assertDoesNotThrow(() -> {
    -            var ctx2 = createTestContext();
    -            try {
    -                ctx2.wait("another-wait", Duration.ofMinutes(1));
    -            } catch (SuspendExecutionException e) {
    -                // Expected - this means the method worked
    -            }
    -        });
    -    }
    -
    -    @Test
    -    void testStepWithTypeToken() {
    -        var context = createTestContext();
    -
    -        List<String> result =
    -                context.step("test-list", new TypeToken<List<String>>() {}, stepCtx -> List.of("a", "b", "c"));
    -
    -        assertNotNull(result);
    -        assertEquals(3, result.size());
    -        assertEquals("a", result.get(0));
    -    }
    -
    -    @Test
    -    void testStepWithTypeTokenReplay() {
    -        // Create context with existing operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder()
    -                        .result("[\"cached1\",\"cached2\"]")
    -                        .build())
    -                .build();
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // This should return cached result, not execute the function
    -        List<String> result =
    -                context.step("test-list", new TypeToken<List<String>>() {}, stepCtx -> List.of("new1", "new2"));
    -
    -        assertEquals(2, result.size());
    -        assertEquals("cached1", result.get(0));
    -        assertEquals("cached2", result.get(1));
    -    }
    -
    -    @Test
    -    void testStepWithTypeTokenAndConfig() {
    -        var context = createTestContext();
    -
    -        List<Integer> result = context.step(
    -                "test-numbers",
    -                new TypeToken<List<Integer>>() {},
    -                stepCtx -> List.of(1, 2, 3),
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -
    -        assertNotNull(result);
    -        assertEquals(3, result.size());
    -        assertEquals(1, result.get(0));
    -    }
    -
    -    @Test
    -    void testStepAsyncWithTypeToken() throws Exception {
    -        var context = createTestContext();
    -
    -        DurableFuture<List<String>> future =
    -                context.stepAsync("async-list", new TypeToken<List<String>>() {}, stepCtx -> List.of("x", "y", "z"));
    -
    -        assertNotNull(future);
    -        List<String> result = future.get();
    -        assertEquals(3, result.size());
    -        assertEquals("x", result.get(0));
    -    }
    -
    -    @Test
    -    void testStepAsyncWithTypeTokenReplay() throws Exception {
    -        // Create context with existing operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder()
    -                        .result("[\"async-cached1\",\"async-cached2\"]")
    -                        .build())
    -                .build();
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // This should return cached result immediately
    -        DurableFuture<List<String>> future = context.stepAsync(
    -                "async-list", new TypeToken<List<String>>() {}, stepCtx -> List.of("async-new1", "async-new2"));
    -
    -        List<String> result = future.get();
    -        assertEquals(2, result.size());
    -        assertEquals("async-cached1", result.get(0));
    -        assertEquals("async-cached2", result.get(1));
    -    }
    -
    -    @Test
    -    void testStepAsyncWithTypeTokenAndConfig() throws Exception {
    -        var context = createTestContext();
    -
    -        DurableFuture<List<Integer>> future = context.stepAsync(
    -                "async-numbers",
    -                new TypeToken<List<Integer>>() {},
    -                stepCtx -> List.of(10, 20, 30),
    -                StepConfig.builder()
    -                        .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                        .build());
    -
    -        assertNotNull(future);
    -        List<Integer> result = future.get();
    -        assertEquals(3, result.size());
    -        assertEquals(10, result.get(0));
    -    }
    -
    -    @Test
    -    void testWaitForCallback_allCompleted() {
    -        var contextOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .contextDetails(ContextDetails.builder().replayChildren(true).build())
    -                .build();
    -        var callbackOp = Operation.builder()
    -                .id(TestUtils.hashOperationId(OPERATION_ID1 + "-1"))
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .result("\"result\"")
    -                        .callbackId("callback-id")
    -                        .build())
    -                .build();
    -        var stepOp = Operation.builder()
    -                .id(TestUtils.hashOperationId(OPERATION_ID1 + "-2"))
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().build())
    -                .build();
    -        var context = createTestContext(List.of(contextOp, callbackOp, stepOp));
    -
    -        // waitForCallback should throw SuspendExecutionException on first execution
    -        var result = context.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {
    -            // step already completed so this should not be called
    -            fail();
    -        });
    -        assertEquals("result", result);
    -    }
    -
    -    @Test
    -    void testWaitForCallback_contextCompleted() {
    -        var contextOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .status(OperationStatus.SUCCEEDED)
    -                .contextDetails(ContextDetails.builder()
    -                        .result("\"result\"")
    -                        .replayChildren(false)
    -                        .build())
    -                .build();
    -        var context = createTestContext(List.of(contextOp));
    -
    -        // waitForCallback should throw SuspendExecutionException on first execution
    -        var result = context.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {
    -            // step already completed so this should not be called
    -            fail();
    -        });
    -        assertEquals("result", result);
    -    }
    -
    -    @Test
    -    void testWaitForCallback_callbackAndStepCompleted() {
    -        var contextOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("approval")
    -                .status(OperationStatus.STARTED)
    -                .type(OperationType.CONTEXT)
    -                .subType(OperationSubType.WAIT_FOR_CALLBACK.getValue())
    -                .build();
    -        var callbackOp = Operation.builder()
    -                .id(TestUtils.hashOperationId(OPERATION_ID1 + "-1"))
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .result("\"result\"")
    -                        .callbackId("callback-id")
    -                        .build())
    -                .build();
    -        var stepOp = Operation.builder()
    -                .id(TestUtils.hashOperationId(OPERATION_ID1 + "-2"))
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().build())
    -                .build();
    -        var context = createTestContext(List.of(contextOp, callbackOp, stepOp));
    -
    -        // waitForCallback should throw SuspendExecutionException on first execution
    -        var result = context.waitForCallback("approval", String.class, (callbackId, stepCtx) -> {
    -            // step already completed so this should not be called
    -            fail();
    -        });
    -        assertEquals("result", result);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/DurableFutureTest.java b/sdk/src/test/java/software/amazon/lambda/durable/DurableFutureTest.java
    deleted file mode 100644
    index 91338f9b1..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/DurableFutureTest.java
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.operation.SerializableDurableOperation;
    -
    -class DurableFutureTest {
    -
    -    @Test
    -    void allOfVarargsReturnsResultsInOrder() {
    -        var op1 = mockOperation("first");
    -        var op2 = mockOperation("second");
    -        var op3 = mockOperation("third");
    -
    -        var results = DurableFuture.allOf(op1, op2, op3);
    -
    -        assertEquals(List.of("first", "second", "third"), results);
    -        verify(op1).get();
    -        verify(op2).get();
    -        verify(op3).get();
    -    }
    -
    -    @Test
    -    void allOfListReturnsResultsInOrder() {
    -        var op1 = mockOperation(1);
    -        var op2 = mockOperation(2);
    -        var op3 = mockOperation(3);
    -
    -        var results = DurableFuture.allOf(List.of(op1, op2, op3));
    -
    -        assertEquals(List.of(1, 2, 3), results);
    -    }
    -
    -    @Test
    -    void allOfVarargsEmptyReturnsEmptyList() {
    -        var results = DurableFuture.<String>allOf();
    -
    -        assertTrue(results.isEmpty());
    -    }
    -
    -    @Test
    -    void allOfListEmptyReturnsEmptyList() {
    -        var results = DurableFuture.allOf(List.<DurableFuture<String>>of());
    -
    -        assertTrue(results.isEmpty());
    -    }
    -
    -    @Test
    -    void allOfSingleFutureReturnsSingleResult() {
    -        var op = mockOperation("only");
    -
    -        var results = DurableFuture.allOf(op);
    -
    -        assertEquals(List.of("only"), results);
    -    }
    -
    -    @Test
    -    void allOfPropagatesException() {
    -        var op1 = mockOperation("first");
    -        @SuppressWarnings("unchecked")
    -        SerializableDurableOperation<String> op2 = mock(SerializableDurableOperation.class);
    -        when(op2.get()).thenThrow(new RuntimeException("Step failed"));
    -
    -        assertThrows(RuntimeException.class, () -> DurableFuture.allOf(op1, op2));
    -    }
    -
    -    @SuppressWarnings("unchecked")
    -    private <T> SerializableDurableOperation<T> mockOperation(T result) {
    -        SerializableDurableOperation<T> op = mock(SerializableDurableOperation.class);
    -        when(op.get()).thenReturn(result);
    -        return op;
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/DurableHandlerTest.java b/sdk/src/test/java/software/amazon/lambda/durable/DurableHandlerTest.java
    deleted file mode 100644
    index 922c048d7..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/DurableHandlerTest.java
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class DurableHandlerTest {
    -
    -    @Test
    -    void testHandlerExtractsInputTypeFromGenerics() {
    -        // This test verifies that the handler successfully extracts the input type
    -        // (String)
    -        // from the generic superclass. If type extraction fails, the constructor throws
    -        // IllegalArgumentException with message "Cannot determine input type parameter"
    -        var handler = new TestDurableHandler();
    -
    -        // Verify handler was created successfully
    -        assertNotNull(handler);
    -
    -        // Verify the handler can process input (which requires correct type extraction)
    -        var result = handler.handleRequest("test-input", null);
    -        assertEquals("processed: test-input", result);
    -    }
    -
    -    @Test
    -    void testHandlerWithoutGenericsThrowsException() {
    -        // Verify that a handler without proper generic type information throws an
    -        // exception
    -        try {
    -            @SuppressWarnings("rawtypes")
    -            class InvalidHandler extends DurableHandler {
    -                @Override
    -                public Object handleRequest(Object input, DurableContext context) {
    -                    return null;
    -                }
    -            }
    -            new InvalidHandler();
    -            // Should not reach here
    -            throw new AssertionError("Expected IllegalArgumentException to be thrown");
    -        } catch (IllegalArgumentException e) {
    -            assertEquals(
    -                    "Cannot determine type from base class: class software.amazon.lambda.durable.DurableHandlerTest$1InvalidHandler",
    -                    e.getMessage());
    -        }
    -    }
    -
    -    // Test handler implementation
    -    private static class TestDurableHandler extends DurableHandler<String, String> {
    -        @Override
    -        public String handleRequest(String input, DurableContext context) {
    -            return "processed: " + input;
    -        }
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/DurationValidationIntegrationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/DurationValidationIntegrationTest.java
    deleted file mode 100644
    index 2deda7107..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/DurationValidationIntegrationTest.java
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -
    -class DurationValidationIntegrationTest {
    -
    -    @Test
    -    void callbackConfig_withInvalidTimeout_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> CallbackConfig.builder().timeout(Duration.ofMillis(500)).build());
    -
    -        assertTrue(exception.getMessage().contains("Callback timeout"));
    -        assertTrue(exception.getMessage().contains("at least 1 second"));
    -    }
    -
    -    @Test
    -    void callbackConfig_withInvalidHeartbeatTimeout_shouldThrow() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> CallbackConfig.builder()
    -                .heartbeatTimeout(Duration.ofMillis(999))
    -                .build());
    -
    -        assertTrue(exception.getMessage().contains("Heartbeat timeout"));
    -        assertTrue(exception.getMessage().contains("at least 1 second"));
    -    }
    -
    -    @Test
    -    void callbackConfig_withValidTimeouts_shouldPass() {
    -        assertDoesNotThrow(() -> CallbackConfig.builder()
    -                .timeout(Duration.ofSeconds(30))
    -                .heartbeatTimeout(Duration.ofSeconds(10))
    -                .build());
    -    }
    -
    -    @Test
    -    void callbackConfig_withNullTimeouts_shouldPass() {
    -        assertDoesNotThrow(() ->
    -                CallbackConfig.builder().timeout(null).heartbeatTimeout(null).build());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/MapFunctionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/MapFunctionTest.java
    deleted file mode 100644
    index 4cf6c01bc..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/MapFunctionTest.java
    +++ /dev/null
    @@ -1,42 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class MapFunctionTest {
    -
    -    @Test
    -    void isFunctionalInterface() {
    -        assertTrue(DurableContext.MapFunction.class.isAnnotationPresent(FunctionalInterface.class));
    -    }
    -
    -    @Test
    -    void canBeUsedAsLambda() {
    -        DurableContext.MapFunction<String, String> fn = (item, index, ctx) -> item.toUpperCase();
    -
    -        var result = fn.apply("hello", 0, null);
    -
    -        assertEquals("HELLO", result);
    -    }
    -
    -    @Test
    -    void receivesCorrectIndex() {
    -        DurableContext.MapFunction<String, Integer> fn = (item, index, ctx) -> index;
    -
    -        assertEquals(0, fn.apply("a", 0, null));
    -        assertEquals(5, fn.apply("b", 5, null));
    -    }
    -
    -    @Test
    -    void canThrowRuntimeException() {
    -        DurableContext.MapFunction<String, String> fn = (item, index, ctx) -> {
    -            throw new IllegalArgumentException("bad input");
    -        };
    -
    -        var ex = assertThrows(IllegalArgumentException.class, () -> fn.apply("x", 0, null));
    -        assertEquals("bad input", ex.getMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/ReplayValidationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/ReplayValidationTest.java
    deleted file mode 100644
    index e8e75b1df..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/ReplayValidationTest.java
    +++ /dev/null
    @@ -1,240 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.time.Duration;
    -import java.util.List;
    -import java.util.stream.Stream;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -
    -class ReplayValidationTest {
    -    private static final String EXECUTION_NAME = "exec-name";
    -    private static final String EXECUTION_OP_ID = "invocation-id";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -    private static final String OPERATION_ID1 = TestUtils.hashOperationId("1");
    -
    -    private DurableContext createTestContext(List<Operation> initialOperations) {
    -        var client = TestUtils.createMockClient();
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .name(EXECUTION_NAME)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .build();
    -        var operations = Stream.concat(Stream.of(executionOp), initialOperations.stream())
    -                .toList();
    -        var initialExecutionState =
    -                CheckpointUpdatedExecutionState.builder().operations(operations).build();
    -        var executionManager = new ExecutionManager(
    -                new DurableExecutionInput(EXECUTION_ARN, "test-token", initialExecutionState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -        var context = DurableContextImpl.createRootContext(
    -                executionManager, DurableConfig.builder().build(), null);
    -        executionManager.setCurrentThreadContext(new ThreadContext(EXECUTION_OP_ID + "-execution", ThreadType.CONTEXT));
    -
    -        return context;
    -    }
    -
    -    @Test
    -    void shouldPassValidationWhenNoCheckpointExists() {
    -        // Given: No existing operation
    -        var context = createTestContext(List.of());
    -
    -        // When & Then: Should not throw
    -        assertDoesNotThrow(() -> context.step("test", String.class, stepCtx -> "result"));
    -    }
    -
    -    @Test
    -    void shouldPassValidationWhenStepTypeAndNameMatch() {
    -        // Given: Existing STEP operation with matching name
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("test")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should not throw
    -        assertDoesNotThrow(() -> context.step("test", String.class, stepCtx -> "result"));
    -    }
    -
    -    @Test
    -    void shouldPassValidationWhenWaitTypeMatches() {
    -        // Given: Existing WAIT operation
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .type(OperationType.WAIT)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should not throw
    -        assertDoesNotThrow(() -> context.wait(null, Duration.ofSeconds(1)));
    -    }
    -
    -    @Test
    -    void shouldThrowWhenOperationTypeMismatches() {
    -        // Given: Existing WAIT operation but current is STEP
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("test")
    -                .type(OperationType.WAIT)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should throw NonDeterministicExecutionException
    -        var exception = assertThrows(
    -                NonDeterministicExecutionException.class,
    -                () -> context.step("test", String.class, stepCtx -> "result"));
    -
    -        assertTrue(exception.getMessage().contains("Operation type mismatch"));
    -        assertTrue(exception.getMessage().contains("Expected WAIT"));
    -        assertTrue(exception.getMessage().contains("got STEP"));
    -    }
    -
    -    @Test
    -    void shouldThrowWhenOperationNameMismatches() {
    -        // Given: Existing STEP operation with different name
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("original")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should throw NonDeterministicExecutionException
    -        var exception = assertThrows(
    -                NonDeterministicExecutionException.class,
    -                () -> context.step("changed", String.class, stepCtx -> "result"));
    -
    -        assertTrue(exception.getMessage().contains("Operation name mismatch"));
    -        assertTrue(exception.getMessage().contains("Expected \"original\""));
    -        assertTrue(exception.getMessage().contains("got \"changed\""));
    -    }
    -
    -    @Test
    -    void shouldHandleNullNamesCorrectly() {
    -        // Given: Existing STEP operation with null name
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name(null)
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should not throw when both names are null
    -        assertDoesNotThrow(() -> context.step(null, String.class, stepCtx -> "result"));
    -    }
    -
    -    @Test
    -    void shouldThrowWhenNameChangesFromNullToValue() {
    -        // Given: Existing STEP operation with null name
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name(null)
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should throw when name changes from null to value
    -        var exception = assertThrows(
    -                NonDeterministicExecutionException.class,
    -                () -> context.step("newName", String.class, stepCtx -> "result"));
    -
    -        assertTrue(exception.getMessage().contains("Operation name mismatch"));
    -        assertTrue(exception.getMessage().contains("Expected \"null\""));
    -        assertTrue(exception.getMessage().contains("got \"newName\""));
    -    }
    -
    -    @Test
    -    void shouldThrowWhenNameChangesFromValueToNull() {
    -        // Given: Existing STEP operation with a name
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("existingName")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should throw when name changes from value to null
    -        var exception = assertThrows(
    -                NonDeterministicExecutionException.class, () -> context.step(null, String.class, stepCtx -> "result"));
    -
    -        assertTrue(exception.getMessage().contains("Operation name mismatch"));
    -        assertTrue(exception.getMessage().contains("Expected \"existingName\""));
    -        assertTrue(exception.getMessage().contains("got \"null\""));
    -    }
    -
    -    @Test
    -    void shouldValidateStepAsyncOperations() {
    -        // Given: Existing WAIT operation but current is STEP (async)
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("test")
    -                .type(OperationType.WAIT)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should throw NonDeterministicExecutionException
    -        var exception = assertThrows(
    -                NonDeterministicExecutionException.class,
    -                () -> context.stepAsync("test", String.class, stepCtx -> "result"));
    -
    -        assertTrue(exception.getMessage().contains("Operation type mismatch"));
    -        assertTrue(exception.getMessage().contains("Expected WAIT"));
    -        assertTrue(exception.getMessage().contains("got STEP"));
    -    }
    -
    -    @Test
    -    void shouldSkipValidationWhenOperationTypeIsNull() {
    -        // Given: Existing operation with null type (edge case)
    -        var existingOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("test")
    -                .type((OperationType) null)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var context = createTestContext(List.of(existingOp));
    -
    -        // When & Then: Should not throw (validation skipped)
    -        assertDoesNotThrow(() -> context.step("test", String.class, stepCtx -> "result"));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/TestContext.java b/sdk/src/test/java/software/amazon/lambda/durable/TestContext.java
    deleted file mode 100644
    index f1a9f216c..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/TestContext.java
    +++ /dev/null
    @@ -1,85 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import com.amazonaws.services.lambda.runtime.ClientContext;
    -import com.amazonaws.services.lambda.runtime.CognitoIdentity;
    -import com.amazonaws.services.lambda.runtime.Context;
    -import com.amazonaws.services.lambda.runtime.LambdaLogger;
    -import java.nio.charset.StandardCharsets;
    -
    -// A concrete implementation of Context. We aren't actually going to use most of this so it doesn't matter that it's
    -// mostly hardcoded.
    -public class TestContext implements Context {
    -    private final String requestId;
    -
    -    public TestContext(String requestId) {
    -        this.requestId = requestId;
    -    }
    -
    -    @Override
    -    public String getAwsRequestId() {
    -        return requestId;
    -    }
    -
    -    @Override
    -    public String getLogGroupName() {
    -        return "aws/lambda/HelloWorldFunction";
    -    }
    -
    -    @Override
    -    public String getLogStreamName() {
    -        return "$LATEST";
    -    }
    -
    -    @Override
    -    public String getFunctionName() {
    -        return "HelloWorldFunction";
    -    }
    -
    -    @Override
    -    public String getFunctionVersion() {
    -        return "$LATEST";
    -    }
    -
    -    @Override
    -    public String getInvokedFunctionArn() {
    -        return "arn:aws:lambda:us-east-1:012345678912:function:HelloWorldFunction";
    -    }
    -
    -    @Override
    -    public CognitoIdentity getIdentity() {
    -        return null;
    -    }
    -
    -    @Override
    -    public ClientContext getClientContext() {
    -        return null;
    -    }
    -
    -    @Override
    -    public int getRemainingTimeInMillis() {
    -        return 899999;
    -    }
    -
    -    @Override
    -    public int getMemoryLimitInMB() {
    -        return 512;
    -    }
    -
    -    @Override
    -    public LambdaLogger getLogger() {
    -        // Log to System.out
    -        return new LambdaLogger() {
    -            @Override
    -            public void log(String message) {
    -                System.out.println(message);
    -            }
    -
    -            @Override
    -            public void log(byte[] message) {
    -                log(new String(message, StandardCharsets.UTF_8));
    -            }
    -        };
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/TestUtils.java b/sdk/src/test/java/software/amazon/lambda/durable/TestUtils.java
    deleted file mode 100644
    index 1aaba5d4c..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/TestUtils.java
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.mockito.ArgumentMatchers.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.UUID;
    -import software.amazon.awssdk.services.lambda.model.*;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.execution.OperationIdGenerator;
    -
    -public class TestUtils {
    -
    -    public static DurableExecutionClient createMockClient() {
    -        var client = mock(DurableExecutionClient.class);
    -        when(client.checkpoint(any(), any(), any())).thenAnswer(invocation -> {
    -            var updates = (List<OperationUpdate>) invocation.getArgument(2);
    -            var responseOperations = new ArrayList<Operation>();
    -
    -            if (updates != null) {
    -                for (var update : updates) {
    -                    var opBuilder = Operation.builder()
    -                            .id(update.id())
    -                            .name(update.name())
    -                            .subType(update.subType())
    -                            .type(update.type());
    -                    if (update.action() == OperationAction.START) {
    -                        opBuilder.status(OperationStatus.STARTED);
    -
    -                        // Add callback details for CALLBACK operations
    -                        if (update.type() == OperationType.CALLBACK) {
    -                            opBuilder.callbackDetails(CallbackDetails.builder()
    -                                    .callbackId(UUID.randomUUID().toString())
    -                                    .build());
    -                        }
    -                    } else if (update.action() == OperationAction.SUCCEED) {
    -                        opBuilder.status(OperationStatus.SUCCEEDED);
    -                        if (update.type() == OperationType.STEP) {
    -                            var stepDetails = StepDetails.builder();
    -                            if (update.payload() != null) {
    -                                stepDetails.result(update.payload());
    -                            }
    -                            opBuilder.stepDetails(stepDetails.build());
    -                        } else if (update.type() == OperationType.CONTEXT) {
    -                            var contexDetail = ContextDetails.builder();
    -                            if (update.payload() != null) {
    -                                contexDetail.result(update.payload());
    -                            }
    -                            opBuilder.contextDetails(contexDetail.build());
    -                        }
    -                    }
    -                    responseOperations.add(opBuilder.build());
    -                }
    -            }
    -
    -            return CheckpointDurableExecutionResponse.builder()
    -                    .checkpointToken("new-token")
    -                    .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                            .operations(responseOperations)
    -                            .build())
    -                    .build();
    -        });
    -        return client;
    -    }
    -
    -    public static String hashOperationId(String rawId) {
    -        return OperationIdGenerator.hashOperationId(rawId);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/TypeTokenTest.java b/sdk/src/test/java/software/amazon/lambda/durable/TypeTokenTest.java
    deleted file mode 100644
    index c3029ee6a..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/TypeTokenTest.java
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.lang.reflect.ParameterizedType;
    -import java.lang.reflect.Type;
    -import java.util.List;
    -import java.util.Map;
    -import org.junit.jupiter.api.Test;
    -
    -class TypeTokenTest {
    -
    -    @Test
    -    void testSimpleGenericType() {
    -        var token = new TypeToken<List<String>>() {};
    -        Type type = token.getType();
    -
    -        assertInstanceOf(ParameterizedType.class, type);
    -        ParameterizedType paramType = (ParameterizedType) type;
    -        assertEquals(List.class, paramType.getRawType());
    -        assertEquals(String.class, paramType.getActualTypeArguments()[0]);
    -    }
    -
    -    @Test
    -    void testNestedGenericType() {
    -        var token = new TypeToken<Map<String, List<Integer>>>() {};
    -        Type type = token.getType();
    -
    -        assertInstanceOf(ParameterizedType.class, type);
    -        ParameterizedType paramType = (ParameterizedType) type;
    -        assertEquals(Map.class, paramType.getRawType());
    -        assertEquals(String.class, paramType.getActualTypeArguments()[0]);
    -
    -        Type valueType = paramType.getActualTypeArguments()[1];
    -        assertInstanceOf(ParameterizedType.class, valueType);
    -        ParameterizedType valueParamType = (ParameterizedType) valueType;
    -        assertEquals(List.class, valueParamType.getRawType());
    -        assertEquals(Integer.class, valueParamType.getActualTypeArguments()[0]);
    -    }
    -
    -    @Test
    -    void testEqualsAndHashCode() {
    -        var token1 = new TypeToken<List<String>>() {};
    -        var token2 = new TypeToken<List<String>>() {};
    -        var token3 = new TypeToken<List<Integer>>() {};
    -
    -        assertEquals(token1, token2);
    -        assertEquals(token1.hashCode(), token2.hashCode());
    -        assertNotEquals(token1, token3);
    -        assertNotEquals(token1.hashCode(), token3.hashCode());
    -    }
    -
    -    @Test
    -    void testToString() {
    -        var token = new TypeToken<List<String>>() {};
    -        var str = token.toString();
    -
    -        assertTrue(str.contains("TypeToken"));
    -        assertTrue(str.contains("List"));
    -        assertTrue(str.contains("String"));
    -    }
    -
    -    @SuppressWarnings("rawtypes")
    -    @Test
    -    void testMissingTypeParameter() {
    -        assertThrows(IllegalStateException.class, () -> {
    -            // This should fail because no type parameter is provided
    -            new TypeToken() {};
    -        });
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/CallbackConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/CallbackConfigTest.java
    deleted file mode 100644
    index 45798109d..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/CallbackConfigTest.java
    +++ /dev/null
    @@ -1,56 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class CallbackConfigTest {
    -
    -    @Test
    -    void testBuilderWithCustomSerDes() {
    -        SerDes customSerDes = new JacksonSerDes();
    -
    -        var config = CallbackConfig.builder().serDes(customSerDes).build();
    -
    -        assertNotNull(config.serDes());
    -        assertEquals(customSerDes, config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithoutCustomSerDes() {
    -        var config = CallbackConfig.builder().build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithNullSerDes() {
    -        var config = CallbackConfig.builder().serDes(null).build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithAllOptions() {
    -        var timeout = Duration.ofMinutes(5);
    -        var heartbeatTimeout = Duration.ofSeconds(30);
    -        SerDes customSerDes = new JacksonSerDes();
    -
    -        var config = CallbackConfig.builder()
    -                .timeout(timeout)
    -                .heartbeatTimeout(heartbeatTimeout)
    -                .serDes(customSerDes)
    -                .build();
    -
    -        assertEquals(timeout, config.timeout());
    -        assertEquals(heartbeatTimeout, config.heartbeatTimeout());
    -        assertEquals(customSerDes, config.serDes());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/CompletionConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/CompletionConfigTest.java
    deleted file mode 100644
    index b9dbe7ecc..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/CompletionConfigTest.java
    +++ /dev/null
    @@ -1,108 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class CompletionConfigTest {
    -
    -    @Test
    -    void allSuccessful_zeroFailuresTolerated() {
    -        var config = CompletionConfig.allSuccessful();
    -
    -        assertNull(config.minSuccessful());
    -        assertEquals(0, config.toleratedFailureCount());
    -        assertNull(config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void allCompleted_allFieldsNull() {
    -        var config = CompletionConfig.allCompleted();
    -
    -        assertNull(config.minSuccessful());
    -        assertNull(config.toleratedFailureCount());
    -        assertNull(config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void firstSuccessful_minSuccessfulIsOne() {
    -        var config = CompletionConfig.firstSuccessful();
    -
    -        assertEquals(1, config.minSuccessful());
    -        assertNull(config.toleratedFailureCount());
    -        assertNull(config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void minSuccessful_setsCount() {
    -        var config = CompletionConfig.minSuccessful(5);
    -
    -        assertEquals(5, config.minSuccessful());
    -        assertNull(config.toleratedFailureCount());
    -        assertNull(config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void toleratedFailureCount_setsCount() {
    -        var config = CompletionConfig.toleratedFailureCount(3);
    -
    -        assertNull(config.minSuccessful());
    -        assertEquals(3, config.toleratedFailureCount());
    -        assertNull(config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void toleratedFailurePercentage_setsPercentage() {
    -        var config = CompletionConfig.toleratedFailurePercentage(0.25);
    -
    -        assertNull(config.minSuccessful());
    -        assertNull(config.toleratedFailureCount());
    -        assertEquals(0.25, config.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void minSuccessful_withZero_shouldThrow() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> CompletionConfig.minSuccessful(0));
    -        assertEquals("minSuccessful must be at least 1, got: 0", exception.getMessage());
    -    }
    -
    -    @Test
    -    void minSuccessful_withNegative_shouldThrow() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> CompletionConfig.minSuccessful(-1));
    -        assertEquals("minSuccessful must be at least 1, got: -1", exception.getMessage());
    -    }
    -
    -    @Test
    -    void toleratedFailureCount_withNegative_shouldThrow() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> CompletionConfig.toleratedFailureCount(-1));
    -        assertEquals("toleratedFailureCount must be non-negative, got: -1", exception.getMessage());
    -    }
    -
    -    @Test
    -    void toleratedFailurePercentage_withNegative_shouldThrow() {
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> CompletionConfig.toleratedFailurePercentage(-0.1));
    -        assertEquals("toleratedFailurePercentage must be between 0.0 and 1.0, got: -0.1", exception.getMessage());
    -    }
    -
    -    @Test
    -    void toleratedFailurePercentage_aboveOne_shouldThrow() {
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> CompletionConfig.toleratedFailurePercentage(1.5));
    -        assertEquals("toleratedFailurePercentage must be between 0.0 and 1.0, got: 1.5", exception.getMessage());
    -    }
    -
    -    @Test
    -    void toleratedFailurePercentage_atBoundaries_shouldPass() {
    -        assertDoesNotThrow(() -> CompletionConfig.toleratedFailurePercentage(0.0));
    -        assertDoesNotThrow(() -> CompletionConfig.toleratedFailurePercentage(1.0));
    -    }
    -
    -    @Test
    -    void toleratedFailureCount_withZero_shouldPass() {
    -        var config = CompletionConfig.toleratedFailureCount(0);
    -        assertEquals(0, config.toleratedFailureCount());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/MapConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/MapConfigTest.java
    deleted file mode 100644
    index fc8962de3..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/MapConfigTest.java
    +++ /dev/null
    @@ -1,126 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class MapConfigTest {
    -
    -    @Test
    -    void defaultBuilder_hasNullMaxConcurrency() {
    -        var config = MapConfig.builder().build();
    -
    -        assertEquals(Integer.MAX_VALUE, config.maxConcurrency());
    -    }
    -
    -    @Test
    -    void defaultBuilder_completionConfigDefaultsToAllCompleted() {
    -        var config = MapConfig.builder().build();
    -
    -        var completion = config.completionConfig();
    -        assertNotNull(completion);
    -        assertNull(completion.minSuccessful());
    -        assertNull(completion.toleratedFailureCount());
    -        assertNull(completion.toleratedFailurePercentage());
    -    }
    -
    -    @Test
    -    void defaultBuilder_hasNullSerDes() {
    -        var config = MapConfig.builder().build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void builderWithMaxConcurrency() {
    -        var config = MapConfig.builder().maxConcurrency(5).build();
    -
    -        assertEquals(5, config.maxConcurrency());
    -    }
    -
    -    @Test
    -    void builderWithCompletionConfig() {
    -        var completion = CompletionConfig.allSuccessful();
    -
    -        var config = MapConfig.builder().completionConfig(completion).build();
    -
    -        assertSame(completion, config.completionConfig());
    -    }
    -
    -    @Test
    -    void builderWithSerDes() {
    -        var serDes = new JacksonSerDes();
    -
    -        var config = MapConfig.builder().serDes(serDes).build();
    -
    -        assertSame(serDes, config.serDes());
    -    }
    -
    -    @Test
    -    void builderChaining() {
    -        var completion = CompletionConfig.firstSuccessful();
    -        var serDes = new JacksonSerDes();
    -
    -        var config = MapConfig.builder()
    -                .maxConcurrency(3)
    -                .completionConfig(completion)
    -                .serDes(serDes)
    -                .build();
    -
    -        assertEquals(3, config.maxConcurrency());
    -        assertSame(completion, config.completionConfig());
    -        assertSame(serDes, config.serDes());
    -    }
    -
    -    @Test
    -    void toBuilder_preservesValues() {
    -        var completion = CompletionConfig.minSuccessful(2);
    -        var serDes = new JacksonSerDes();
    -        var original = MapConfig.builder()
    -                .maxConcurrency(4)
    -                .completionConfig(completion)
    -                .serDes(serDes)
    -                .build();
    -
    -        var copy = original.toBuilder().build();
    -
    -        assertEquals(4, copy.maxConcurrency());
    -        assertSame(completion, copy.completionConfig());
    -        assertSame(serDes, copy.serDes());
    -    }
    -
    -    @Test
    -    void toBuilder_canOverrideValues() {
    -        var original = MapConfig.builder().maxConcurrency(4).build();
    -
    -        var modified = original.toBuilder().maxConcurrency(10).build();
    -
    -        assertEquals(10, modified.maxConcurrency());
    -        assertEquals(4, original.maxConcurrency());
    -    }
    -
    -    @Test
    -    void builderWithZeroMaxConcurrency_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> MapConfig.builder().maxConcurrency(0).build());
    -        assertEquals("maxConcurrency must be at least 1, got: 0", exception.getMessage());
    -    }
    -
    -    @Test
    -    void builderWithNegativeMaxConcurrency_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> MapConfig.builder().maxConcurrency(-1).build());
    -        assertEquals("maxConcurrency must be at least 1, got: -1", exception.getMessage());
    -    }
    -
    -    @Test
    -    void builderWithNullMaxConcurrency_shouldPass() {
    -        var config = MapConfig.builder().maxConcurrency(null).build();
    -        assertEquals(Integer.MAX_VALUE, config.maxConcurrency());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/ParallelConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/ParallelConfigTest.java
    deleted file mode 100644
    index 923a9d221..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/ParallelConfigTest.java
    +++ /dev/null
    @@ -1,48 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class ParallelConfigTest {
    -
    -    @Test
    -    void defaultValues() {
    -        var config = ParallelConfig.builder().build();
    -
    -        assertEquals(Integer.MAX_VALUE, config.maxConcurrency());
    -        assertEquals(CompletionConfig.allCompleted(), config.completionConfig());
    -    }
    -
    -    @Test
    -    void builderRoundTrip() {
    -        CompletionConfig completionConfig = CompletionConfig.allSuccessful();
    -        var config = ParallelConfig.builder()
    -                .maxConcurrency(4)
    -                .completionConfig(completionConfig)
    -                .build();
    -
    -        assertEquals(4, config.maxConcurrency());
    -        assertEquals(completionConfig, config.completionConfig());
    -    }
    -
    -    @Test
    -    void maxConcurrencyOfOne() {
    -        var config = ParallelConfig.builder().maxConcurrency(1).build();
    -
    -        assertEquals(1, config.maxConcurrency());
    -    }
    -
    -    @Test
    -    void invalidConcurrency() {
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParallelConfig.builder().maxConcurrency(-1).build());
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParallelConfig.builder().maxConcurrency(0).build());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/StepConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/StepConfigTest.java
    deleted file mode 100644
    index 033e0b4d5..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/StepConfigTest.java
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class StepConfigTest {
    -
    -    @Test
    -    void testBuilderWithRetryStrategy() {
    -        var strategy = RetryStrategies.Presets.NO_RETRY;
    -
    -        var config = StepConfig.builder().retryStrategy(strategy).build();
    -
    -        assertEquals(strategy, config.retryStrategy());
    -    }
    -
    -    @Test
    -    void testBuilderWithoutRetryStrategy() {
    -        var config = StepConfig.builder().build();
    -
    -        assertEquals(RetryStrategies.Presets.DEFAULT, config.retryStrategy());
    -    }
    -
    -    @Test
    -    void testBuilderChaining() {
    -        var strategy = RetryStrategies.Presets.DEFAULT;
    -        var customSerDes = new JacksonSerDes();
    -
    -        var config = StepConfig.builder()
    -                .retryStrategy(strategy)
    -                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                .serDes(customSerDes)
    -                .build();
    -
    -        assertEquals(strategy, config.retryStrategy());
    -        assertEquals(StepSemantics.AT_MOST_ONCE_PER_RETRY, config.semantics());
    -        assertEquals(customSerDes, config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithNullRetryStrategy() {
    -        var config = StepConfig.builder().retryStrategy(null).build();
    -
    -        assertEquals(RetryStrategies.Presets.DEFAULT, config.retryStrategy());
    -    }
    -
    -    @Test
    -    void testSemanticsDefaultsToAtLeastOnce() {
    -        var config = StepConfig.builder().build();
    -
    -        assertEquals(StepSemantics.AT_LEAST_ONCE_PER_RETRY, config.semantics());
    -    }
    -
    -    @Test
    -    void testBuilderWithCustomSerDes() {
    -        var customSerDes = new JacksonSerDes();
    -
    -        var config = StepConfig.builder().serDes(customSerDes).build();
    -
    -        assertNotNull(config.serDes());
    -        assertEquals(customSerDes, config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithoutCustomSerDes() {
    -        var config = StepConfig.builder().build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithNullSerDes() {
    -        var config = StepConfig.builder().serDes(null).build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void testBuilderWithAllOptions() {
    -        var strategy = RetryStrategies.Presets.DEFAULT;
    -        var customSerDes = new JacksonSerDes();
    -
    -        var config = StepConfig.builder()
    -                .retryStrategy(strategy)
    -                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                .serDes(customSerDes)
    -                .build();
    -
    -        assertEquals(strategy, config.retryStrategy());
    -        assertEquals(StepSemantics.AT_MOST_ONCE_PER_RETRY, config.semantics());
    -        assertEquals(customSerDes, config.serDes());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForCallbackConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForCallbackConfigTest.java
    deleted file mode 100644
    index 6f12f5cd8..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForCallbackConfigTest.java
    +++ /dev/null
    @@ -1,190 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.retry.RetryStrategies;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class WaitForCallbackConfigTest {
    -
    -    @Test
    -    void testBuilderWithDefaultValues() {
    -        var config = WaitForCallbackConfig.builder().build();
    -
    -        assertNotNull(config.stepConfig());
    -        assertNotNull(config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithCustomStepConfig() {
    -        var stepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                .build();
    -
    -        var config = WaitForCallbackConfig.builder().stepConfig(stepConfig).build();
    -
    -        assertEquals(stepConfig, config.stepConfig());
    -        assertNotNull(config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithCustomCallbackConfig() {
    -        var callbackConfig =
    -                CallbackConfig.builder().timeout(Duration.ofMinutes(10)).build();
    -
    -        var config =
    -                WaitForCallbackConfig.builder().callbackConfig(callbackConfig).build();
    -
    -        assertNotNull(config.stepConfig());
    -        assertEquals(callbackConfig, config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithBothConfigs() {
    -        var stepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                .build();
    -        var callbackConfig = CallbackConfig.builder()
    -                .timeout(Duration.ofMinutes(5))
    -                .heartbeatTimeout(Duration.ofSeconds(30))
    -                .build();
    -
    -        var config = WaitForCallbackConfig.builder()
    -                .stepConfig(stepConfig)
    -                .callbackConfig(callbackConfig)
    -                .build();
    -
    -        assertEquals(stepConfig, config.stepConfig());
    -        assertEquals(callbackConfig, config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithNullStepConfig() {
    -        var config = WaitForCallbackConfig.builder().stepConfig(null).build();
    -
    -        assertNotNull(config.stepConfig());
    -        assertNotNull(config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithNullCallbackConfig() {
    -        var config = WaitForCallbackConfig.builder().callbackConfig(null).build();
    -
    -        assertNotNull(config.stepConfig());
    -        assertNotNull(config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderChaining() {
    -        var stepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                .build();
    -        var callbackConfig =
    -                CallbackConfig.builder().timeout(Duration.ofMinutes(15)).build();
    -
    -        var config = WaitForCallbackConfig.builder()
    -                .stepConfig(stepConfig)
    -                .callbackConfig(callbackConfig)
    -                .build();
    -
    -        assertEquals(stepConfig, config.stepConfig());
    -        assertEquals(callbackConfig, config.callbackConfig());
    -    }
    -
    -    @Test
    -    void testToBuilder() {
    -        var stepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                .build();
    -        var callbackConfig =
    -                CallbackConfig.builder().timeout(Duration.ofMinutes(20)).build();
    -
    -        var originalConfig = WaitForCallbackConfig.builder()
    -                .stepConfig(stepConfig)
    -                .callbackConfig(callbackConfig)
    -                .build();
    -
    -        var newConfig = originalConfig.toBuilder().build();
    -
    -        assertEquals(originalConfig.stepConfig(), newConfig.stepConfig());
    -        assertEquals(originalConfig.callbackConfig(), newConfig.callbackConfig());
    -    }
    -
    -    @Test
    -    void testToBuilderWithModifications() {
    -        var originalStepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                .build();
    -        var originalCallbackConfig =
    -                CallbackConfig.builder().timeout(Duration.ofMinutes(5)).build();
    -
    -        var originalConfig = WaitForCallbackConfig.builder()
    -                .stepConfig(originalStepConfig)
    -                .callbackConfig(originalCallbackConfig)
    -                .build();
    -
    -        var newStepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                .build();
    -
    -        var modifiedConfig =
    -                originalConfig.toBuilder().stepConfig(newStepConfig).build();
    -
    -        assertEquals(newStepConfig, modifiedConfig.stepConfig());
    -        assertEquals(originalCallbackConfig, modifiedConfig.callbackConfig());
    -    }
    -
    -    @Test
    -    void testBuilderWithAllOptions() {
    -        var customSerDes = new JacksonSerDes();
    -        var stepConfig = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                .semantics(StepSemantics.AT_MOST_ONCE_PER_RETRY)
    -                .serDes(customSerDes)
    -                .build();
    -        var callbackConfig = CallbackConfig.builder()
    -                .timeout(Duration.ofMinutes(10))
    -                .heartbeatTimeout(Duration.ofMinutes(2))
    -                .serDes(customSerDes)
    -                .build();
    -
    -        var config = WaitForCallbackConfig.builder()
    -                .stepConfig(stepConfig)
    -                .callbackConfig(callbackConfig)
    -                .build();
    -
    -        assertEquals(stepConfig, config.stepConfig());
    -        assertEquals(callbackConfig, config.callbackConfig());
    -        assertEquals(RetryStrategies.Presets.DEFAULT, config.stepConfig().retryStrategy());
    -        assertEquals(StepSemantics.AT_MOST_ONCE_PER_RETRY, config.stepConfig().semantics());
    -        assertEquals(Duration.ofMinutes(10), config.callbackConfig().timeout());
    -        assertEquals(Duration.ofMinutes(2), config.callbackConfig().heartbeatTimeout());
    -    }
    -
    -    @Test
    -    void testStepConfigDefaultsWhenNull() {
    -        var config = WaitForCallbackConfig.builder().stepConfig(null).build();
    -
    -        assertNotNull(config.stepConfig());
    -        assertEquals(RetryStrategies.Presets.DEFAULT, config.stepConfig().retryStrategy());
    -        assertEquals(StepSemantics.AT_LEAST_ONCE_PER_RETRY, config.stepConfig().semantics());
    -        assertNull(config.stepConfig().serDes());
    -    }
    -
    -    @Test
    -    void testCallbackConfigDefaultsWhenNull() {
    -        var config = WaitForCallbackConfig.builder().callbackConfig(null).build();
    -
    -        assertNotNull(config.callbackConfig());
    -        assertNull(config.callbackConfig().timeout());
    -        assertNull(config.callbackConfig().heartbeatTimeout());
    -        assertNull(config.callbackConfig().serDes());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForConditionConfigTest.java b/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForConditionConfigTest.java
    deleted file mode 100644
    index eacb1f704..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/config/WaitForConditionConfigTest.java
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.config;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy;
    -import software.amazon.lambda.durable.retry.WaitStrategies;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class WaitForConditionConfigTest {
    -
    -    @Test
    -    void builder_withDefaults_buildsConfigWithDefaultStrategy() {
    -        var config = WaitForConditionConfig.<String>builder().build();
    -
    -        assertNotNull(config);
    -        assertNotNull(config.waitStrategy());
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void builder_withCustomWaitStrategy_overridesDefault() {
    -        WaitForConditionWaitStrategy<String> customStrategy = WaitStrategies.fixedDelay(10, Duration.ofSeconds(2));
    -        var config = WaitForConditionConfig.<String>builder()
    -                .waitStrategy(customStrategy)
    -                .build();
    -
    -        assertEquals(customStrategy, config.waitStrategy());
    -    }
    -
    -    @Test
    -    void builder_withSerDes_setsSerDes() {
    -        var mockSerDes = new JacksonSerDes();
    -        var config = WaitForConditionConfig.<String>builder().serDes(mockSerDes).build();
    -
    -        assertEquals(mockSerDes, config.serDes());
    -    }
    -
    -    @Test
    -    void builder_withNullSerDes_allowsNull() {
    -        var config = WaitForConditionConfig.<String>builder().serDes(null).build();
    -
    -        assertNull(config.serDes());
    -    }
    -
    -    @Test
    -    void builder_defaultStrategy_producesValidDelay() {
    -        var config = WaitForConditionConfig.<String>builder().build();
    -        var strategy = config.waitStrategy();
    -
    -        // The default strategy should produce a Duration for attempt 0
    -        var delay = strategy.evaluate("any-state", 0);
    -        assertNotNull(delay);
    -    }
    -
    -    @Test
    -    void toBuilder_copiesValues() {
    -        WaitForConditionWaitStrategy<String> customStrategy = WaitStrategies.exponentialBackoff(
    -                10, Duration.ofSeconds(3), Duration.ofSeconds(60), 2.0, JitterStrategy.NONE);
    -        var mockSerDes = new JacksonSerDes();
    -
    -        var original = WaitForConditionConfig.<String>builder()
    -                .waitStrategy(customStrategy)
    -                .serDes(mockSerDes)
    -                .build();
    -
    -        var copied = original.toBuilder().build();
    -
    -        assertEquals(customStrategy, copied.waitStrategy());
    -        assertEquals(mockSerDes, copied.serDes());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/context/BaseContextImplTest.java b/sdk/src/test/java/software/amazon/lambda/durable/context/BaseContextImplTest.java
    deleted file mode 100644
    index 76b59e663..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/context/BaseContextImplTest.java
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.ArrayList;
    -import java.util.List;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -
    -class BaseContextImplTest {
    -
    -    private static final String INVOCATION_ID = "20dae574-53da-37a1-bfd5-b0e2e6ec715d";
    -    private static final String EXECUTION_NAME = "349beff4-a89d-4bc8-a56f-af7a8af67a5f";
    -    private static final Operation EXECUTION_OP = Operation.builder()
    -            .id(INVOCATION_ID)
    -            .type(OperationType.EXECUTION)
    -            .status(OperationStatus.STARTED)
    -            .build();
    -
    -    @BeforeEach
    -    void clearThreadContext() {
    -        // currentThreadContext is a static ThreadLocal on ExecutionManager β€” clear it
    -        // before each test to prevent bleed-through from other tests on the same thread.
    -        createExecutionManager().setCurrentThreadContext(null);
    -    }
    -
    -    private ExecutionManager createExecutionManager() {
    -        var client = TestUtils.createMockClient();
    -        var initialState = CheckpointUpdatedExecutionState.builder()
    -                .operations(new ArrayList<>(List.of(EXECUTION_OP)))
    -                .build();
    -        return new ExecutionManager(
    -                new DurableExecutionInput(
    -                        "arn:aws:lambda:us-east-1:123456789012:function:test:$LATEST/durable-execution/"
    -                                + EXECUTION_NAME + "/" + INVOCATION_ID,
    -                        "test-token",
    -                        initialState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -    }
    -
    -    @Test
    -    void defaultConstructor_setsCurrentThreadContext() {
    -        var executionManager = createExecutionManager();
    -        // Precondition: no thread context set yet
    -        assertNull(executionManager.getCurrentThreadContext());
    -
    -        // Creating a root context with the default constructor should set the thread context
    -        DurableContextImpl.createRootContext(
    -                executionManager, DurableConfig.builder().build(), null);
    -    }
    -
    -    @Test
    -    void constructorWithSetCurrentThreadContextTrue_setsCurrentThreadContext() {
    -        var executionManager = createExecutionManager();
    -
    -        // createRootContext sets thread context to root (threadId=null)
    -        var rootContext = DurableContextImpl.createRootContext(
    -                executionManager, DurableConfig.builder().build(), null);
    -
    -        // createChildContext (setCurrentThreadContext=true) should overwrite with child's context
    -        rootContext.createChildContext("child-id", "child-name");
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/context/DurableContextImplTest.java b/sdk/src/test/java/software/amazon/lambda/durable/context/DurableContextImplTest.java
    deleted file mode 100644
    index 2d6f6c4e3..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/context/DurableContextImplTest.java
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.context;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.ArrayList;
    -import java.util.List;
    -import org.junit.jupiter.api.BeforeEach;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -
    -class DurableContextImplTest {
    -
    -    private static final String INVOCATION_ID = "20dae574-53da-37a1-bfd5-b0e2e6ec715d";
    -    private static final String EXECUTION_NAME = "349beff4-a89d-4bc8-a56f-af7a8af67a5f";
    -
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl rootContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        var executionOp = Operation.builder()
    -                .id(INVOCATION_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .build();
    -        var client = TestUtils.createMockClient();
    -        var initialState = CheckpointUpdatedExecutionState.builder()
    -                .operations(new ArrayList<>(List.of(executionOp)))
    -                .build();
    -        executionManager = new ExecutionManager(
    -                new DurableExecutionInput(
    -                        "arn:aws:lambda:us-east-1:123456789012:function:test:$LATEST/durable-execution/"
    -                                + EXECUTION_NAME + "/" + INVOCATION_ID,
    -                        "test-token",
    -                        initialState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -        // Simulate the root thread context as the executor would set it
    -        executionManager.setCurrentThreadContext(new ThreadContext(null, ThreadType.CONTEXT));
    -        rootContext = DurableContextImpl.createRootContext(
    -                executionManager, DurableConfig.builder().build(), null);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/CallbackExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/CallbackExceptionTest.java
    deleted file mode 100644
    index f7bd095a3..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/CallbackExceptionTest.java
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CallbackDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -class CallbackExceptionTest {
    -    String CALLBACK_ID = "123";
    -    ErrorObject ERROR_OBJECT = ErrorObject.builder()
    -            .errorType("MyErrorType")
    -            .errorMessage("MyErrorMessage")
    -            .build();
    -    Operation OPERATION = Operation.builder()
    -            .callbackDetails(CallbackDetails.builder()
    -                    .callbackId(CALLBACK_ID)
    -                    .error(ERROR_OBJECT)
    -                    .build())
    -            .build();
    -
    -    @Test
    -    void testCallbackTimeoutException() {
    -        var exception = new CallbackTimeoutException(OPERATION);
    -        assertEquals(CALLBACK_ID, exception.getCallbackId());
    -        assertEquals(OPERATION, exception.getOperation());
    -        assertEquals("Callback timed out: " + CALLBACK_ID, exception.getMessage());
    -    }
    -
    -    @Test
    -    void testCallbackFailedException() {
    -        var exception = new CallbackFailedException(OPERATION);
    -        assertEquals(CALLBACK_ID, exception.getCallbackId());
    -        assertEquals(OPERATION, exception.getOperation());
    -        assertEquals(ERROR_OBJECT, exception.getErrorObject());
    -        assertEquals("MyErrorType: MyErrorMessage", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testCallbackException() {
    -        var exception = new CallbackException(OPERATION, "myErrorMessage");
    -        assertEquals(CALLBACK_ID, exception.getCallbackId());
    -        assertEquals(OPERATION, exception.getOperation());
    -        assertEquals(ERROR_OBJECT, exception.getErrorObject());
    -        assertEquals("myErrorMessage", exception.getMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/DurableExecutionExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/DurableExecutionExceptionTest.java
    deleted file mode 100644
    index 78fbeea9a..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/DurableExecutionExceptionTest.java
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.assertArrayEquals;
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.util.ExceptionHelper;
    -
    -class DurableExecutionExceptionTest {
    -
    -    @Test
    -    void testConstructorWithMessage() {
    -        var exception = new DurableExecutionException("Test message");
    -
    -        assertEquals("Test message", exception.getMessage());
    -        assertNull(exception.getCause());
    -    }
    -
    -    @Test
    -    void testConstructorWithMessageAndCause() {
    -        var cause = new RuntimeException("Cause message");
    -        var exception = new DurableExecutionException("Test message", cause);
    -
    -        assertEquals("Test message", exception.getMessage());
    -        assertEquals(cause, exception.getCause());
    -    }
    -
    -    @Test
    -    void testConstructorWithMessageCauseAndStackTrace() {
    -        var cause = new RuntimeException("Cause message");
    -        var stackTrace =
    -                new StackTraceElement[] {new StackTraceElement("TestClass", "testMethod", "TestClass.java", 42)};
    -        var exception = new DurableExecutionException("Test message", cause, stackTrace);
    -
    -        assertEquals("Test message", exception.getMessage());
    -        assertEquals(cause, exception.getCause());
    -        assertArrayEquals(stackTrace, exception.getStackTrace());
    -    }
    -
    -    @Test
    -    void testSerializeStackTrace() {
    -        var stackTrace = new StackTraceElement[] {
    -            new StackTraceElement("com.example.MyClass", "myMethod", "MyClass.java", 123),
    -            new StackTraceElement("com.example.OtherClass", "otherMethod", "OtherClass.java", 456)
    -        };
    -
    -        var serialized = ExceptionHelper.serializeStackTrace(stackTrace);
    -
    -        assertEquals(2, serialized.size());
    -        assertEquals("com.example.MyClass|myMethod|MyClass.java|123", serialized.get(0));
    -        assertEquals("com.example.OtherClass|otherMethod|OtherClass.java|456", serialized.get(1));
    -    }
    -
    -    @Test
    -    void testDeserializeStackTrace() {
    -        var serialized = List.of(
    -                "com.example.MyClass|myMethod|MyClass.java|123",
    -                "com.example.OtherClass|otherMethod|OtherClass.java|456");
    -
    -        var stackTrace = ExceptionHelper.deserializeStackTrace(serialized);
    -
    -        assertEquals(2, stackTrace.length);
    -        assertEquals("com.example.MyClass", stackTrace[0].getClassName());
    -        assertEquals("myMethod", stackTrace[0].getMethodName());
    -        assertEquals("MyClass.java", stackTrace[0].getFileName());
    -        assertEquals(123, stackTrace[0].getLineNumber());
    -        assertEquals("com.example.OtherClass", stackTrace[1].getClassName());
    -        assertEquals("otherMethod", stackTrace[1].getMethodName());
    -        assertEquals("OtherClass.java", stackTrace[1].getFileName());
    -        assertEquals(456, stackTrace[1].getLineNumber());
    -    }
    -
    -    @Test
    -    void testSerializeDeserializeRoundTrip() {
    -        var original =
    -                new StackTraceElement[] {new StackTraceElement("TestClass", "testMethod", "TestClass.java", 100)};
    -
    -        var serialized = ExceptionHelper.serializeStackTrace(original);
    -        var deserialized = ExceptionHelper.deserializeStackTrace(serialized);
    -
    -        assertArrayEquals(original, deserialized);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/InvokeExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/InvokeExceptionTest.java
    deleted file mode 100644
    index 837721878..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/InvokeExceptionTest.java
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -
    -class InvokeExceptionTest {
    -
    -    @Test
    -    void testNullError() {
    -        var op = Operation.builder()
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder().build())
    -                .type(OperationType.CHAINED_INVOKE)
    -                .id("10")
    -                .build();
    -        var exception = new InvokeFailedException(op);
    -
    -        assertNull(exception.getErrorObject());
    -        assertNull(exception.getMessage());
    -    }
    -
    -    @Test
    -    void testConstructorWithDefaultErrorObject() {
    -        var errorObject = ErrorObject.builder().build();
    -        var op = Operation.builder()
    -                .chainedInvokeDetails(
    -                        ChainedInvokeDetails.builder().error(errorObject).build())
    -                .type(OperationType.CHAINED_INVOKE)
    -                .id("10")
    -                .build();
    -        var exception = new InvokeTimedOutException(op);
    -
    -        assertEquals(errorObject, exception.getErrorObject());
    -        assertNull(exception.getMessage());
    -    }
    -
    -    @Test
    -    void testConstructorWithErrorObject() {
    -        var errorObject = ErrorObject.builder()
    -                .errorMessage("error message")
    -                .errorType("error type")
    -                .errorData("error data")
    -                .stackTrace(List.of("class1|method1|file1|10", "class2|method2|file2|20"))
    -                .build();
    -        var op = Operation.builder()
    -                .chainedInvokeDetails(
    -                        ChainedInvokeDetails.builder().error(errorObject).build())
    -                .type(OperationType.CHAINED_INVOKE)
    -                .id("10")
    -                .status(OperationStatus.FAILED)
    -                .build();
    -        var exception = new InvokeFailedException(op);
    -
    -        assertEquals("error type", exception.getErrorObject().errorType());
    -        assertEquals("error data", exception.getErrorObject().errorData());
    -        assertEquals("error message", exception.getMessage());
    -        assertEquals(OperationStatus.FAILED, exception.getOperationStatus());
    -        assertEquals("10", exception.getOperationId());
    -        assertEquals(2, exception.getStackTrace().length);
    -        assertEquals(
    -                new StackTraceElement("class1", "method1", "file1", 10),
    -                exception.getStackTrace()[0]);
    -        assertEquals(
    -                new StackTraceElement("class2", "method2", "file2", 20),
    -                exception.getStackTrace()[1]);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/SerDesExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/SerDesExceptionTest.java
    deleted file mode 100644
    index 1951e5092..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/SerDesExceptionTest.java
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class SerDesExceptionTest {
    -
    -    @Test
    -    void testConstructorWithMessageAndCause() {
    -        var cause = new RuntimeException("Original error");
    -        var exception = new SerDesException("Serialization failed", cause);
    -
    -        assertEquals("Serialization failed", exception.getMessage());
    -        assertEquals(cause, exception.getCause());
    -    }
    -
    -    @Test
    -    void testConstructorWithMessage() {
    -        var exception = new SerDesException("Deserialization failed");
    -
    -        assertEquals("Deserialization failed", exception.getMessage());
    -        assertNull(exception.getCause());
    -    }
    -
    -    @Test
    -    void testExtendsRuntimeException() {
    -        var exception = new SerDesException("Test message");
    -
    -        assertInstanceOf(RuntimeException.class, exception);
    -        assertInstanceOf(DurableExecutionException.class, exception);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/StepFailedExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/StepFailedExceptionTest.java
    deleted file mode 100644
    index a2413e135..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/StepFailedExceptionTest.java
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -
    -class StepFailedExceptionTest {
    -    ErrorObject ERROR_OBJECT = ErrorObject.builder()
    -            .errorType("MyErrorType")
    -            .errorMessage("MyErrorMessage")
    -            .build();
    -
    -    @Test
    -    void testConstructorWithNullErrorObject() {
    -        var op = Operation.builder().stepDetails(StepDetails.builder().build()).build();
    -        var exception = new StepFailedException(op);
    -        assertEquals(op, exception.getOperation());
    -        assertNull(exception.getErrorObject());
    -        assertEquals("Step failed without an error", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testConstructorWithErrorObject() {
    -        var op = Operation.builder()
    -                .stepDetails(StepDetails.builder().error(ERROR_OBJECT).build())
    -                .build();
    -        var exception = new StepFailedException(op);
    -
    -        assertEquals(op, exception.getOperation());
    -        assertEquals(ERROR_OBJECT, exception.getErrorObject());
    -        assertEquals("Step failed with error of type MyErrorType. Message: MyErrorMessage", exception.getMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/StepInterruptedExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/StepInterruptedExceptionTest.java
    deleted file mode 100644
    index 8ac3d0abd..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/StepInterruptedExceptionTest.java
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -
    -class StepInterruptedExceptionTest {
    -    private static final String ERROR_TYPE = "software.amazon.lambda.durable.exception.StepInterruptedException";
    -    private static final Operation OPERATION =
    -            Operation.builder().id("op-123").name("my-step").build();
    -
    -    @Test
    -    void testConstructorWithOperationIdAndStepName() {
    -        var exception = new StepInterruptedException(OPERATION);
    -
    -        assertEquals(ERROR_TYPE, exception.getErrorObject().errorType());
    -        assertInstanceOf(RuntimeException.class, exception);
    -        assertInstanceOf(DurableExecutionException.class, exception);
    -        assertEquals("op-123", exception.getOperation().id());
    -        assertEquals("my-step", exception.getOperation().name());
    -        assertTrue(exception.getMessage().contains("Operation ID: op-123"));
    -        assertTrue(exception.getMessage().contains("Step Name: my-step"));
    -        assertTrue(exception.getMessage().contains("initiated but failed to reach completion due to an interruption"));
    -    }
    -
    -    @Test
    -    void testIsStepInterruptedException() {
    -        var errorObject = ErrorObject.builder().errorType(ERROR_TYPE).build();
    -        assertTrue(StepInterruptedException.isStepInterruptedException(errorObject));
    -
    -        assertFalse(StepInterruptedException.isStepInterruptedException(null));
    -        assertFalse(StepInterruptedException.isStepInterruptedException(
    -                ErrorObject.builder().build()));
    -        assertFalse(StepInterruptedException.isStepInterruptedException(
    -                ErrorObject.builder().errorType("StepInterruptedException").build()));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionExceptionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionExceptionTest.java
    deleted file mode 100644
    index 67c2f0fa1..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/exception/UnrecoverableDurableExecutionExceptionTest.java
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.exception;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class UnrecoverableDurableExecutionExceptionTest {
    -
    -    @Test
    -    void testNonDeterministicExecutionException() {
    -        var exception = new NonDeterministicExecutionException("Non-deterministic behavior detected");
    -
    -        assertEquals("Non-deterministic behavior detected", exception.getMessage());
    -        assertEquals(
    -                "Non-deterministic behavior detected",
    -                exception.getErrorObject().errorMessage());
    -        assertEquals(
    -                "software.amazon.lambda.durable.exception.NonDeterministicExecutionException",
    -                exception.getErrorObject().errorType());
    -        assertNull(exception.getCause());
    -        assertInstanceOf(RuntimeException.class, exception);
    -        assertInstanceOf(DurableExecutionException.class, exception);
    -    }
    -
    -    @Test
    -    void testIllegalDurableOperationException() {
    -        var exception = new IllegalDurableOperationException("Illegal operation detected");
    -        assertEquals("Illegal operation detected", exception.getMessage());
    -        assertEquals("Illegal operation detected", exception.getErrorObject().errorMessage());
    -        assertEquals(
    -                "software.amazon.lambda.durable.exception.IllegalDurableOperationException",
    -                exception.getErrorObject().errorType());
    -        assertNull(exception.getCause());
    -        assertInstanceOf(RuntimeException.class, exception);
    -        assertInstanceOf(DurableExecutionException.class, exception);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcherTest.java b/sdk/src/test/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcherTest.java
    deleted file mode 100644
    index 6aec8f7c1..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/execution/ApiRequestDelayedBatcherTest.java
    +++ /dev/null
    @@ -1,229 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -import static org.mockito.ArgumentMatchers.any;
    -import static org.mockito.ArgumentMatchers.argThat;
    -import static org.mockito.Mockito.doThrow;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.never;
    -import static org.mockito.Mockito.times;
    -import static org.mockito.Mockito.verify;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.TimeUnit;
    -import java.util.concurrent.TimeoutException;
    -import java.util.function.Consumer;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -
    -class ApiRequestDelayedBatcherTest {
    -    private static final Duration SHORT_DELAY = Duration.ofMillis(5);
    -    private static final Duration LONG_DELAY = Duration.ofMillis(100);
    -    private static final int MAX_BATCH_SIZE = 3;
    -    private static final int MAX_BATCH_BINARY_SIZE_IN_BYTES = 200;
    -
    -    private static class Input {}
    -
    -    private Input input;
    -    private ApiRequestDelayedBatcher<Input> cut;
    -    private Consumer<List<Input>> doBatchAction;
    -
    -    @BeforeEach
    -    void setUp() {
    -        input = mock(Input.class);
    -        doBatchAction = mock();
    -        cut = new ApiRequestDelayedBatcher<>(MAX_BATCH_SIZE, MAX_BATCH_BINARY_SIZE_IN_BYTES, item -> 0, doBatchAction);
    -    }
    -
    -    @Test
    -    void whenSingleActionSubmitted_futureRemainsIncompleteUntilTimerFires() {
    -        var resultFuture = cut.submit(input, LONG_DELAY);
    -        assertThrows(TimeoutException.class, () -> resultFuture.get(50, TimeUnit.MILLISECONDS));
    -
    -        verify(doBatchAction, never()).accept(any());
    -        assertFalse(resultFuture.isDone());
    -    }
    -
    -    @Test
    -    void whenMultipleActionsSubmittedBelowMaxBatchSize_futuresRemainIncompleteUntilTimerFires() {
    -        var resultFutures = new ArrayList<CompletableFuture<Void>>();
    -        for (int i = 0; i < MAX_BATCH_SIZE - 1; i++) {
    -            resultFutures.add(cut.submit(input, LONG_DELAY));
    -        }
    -
    -        assertThrows(TimeoutException.class, () -> resultFutures.get(0).get(50, TimeUnit.MILLISECONDS));
    -        verify(doBatchAction, never()).accept(any());
    -    }
    -
    -    @Test
    -    void whenTimerFires_allPendingItemsAreFlushedInSingleBatch() {
    -        var resultFutures = new ArrayList<CompletableFuture<Void>>();
    -        for (int i = 0; i < MAX_BATCH_SIZE - 1; i++) {
    -            resultFutures.add(cut.submit(input, SHORT_DELAY));
    -        }
    -
    -        CompletableFuture.allOf(resultFutures.toArray(CompletableFuture[]::new)).join();
    -        verify(doBatchAction).accept(any());
    -    }
    -
    -    @Test
    -    void whenTimerFires_batchIsProcessedPromptly() {
    -        var startTime = System.nanoTime();
    -
    -        var resultFuture = cut.submit(input, SHORT_DELAY);
    -        resultFuture.join();
    -
    -        assertTrue(System.nanoTime() - startTime < Duration.ofMillis(50).toNanos());
    -        verify(doBatchAction).accept(any());
    -    }
    -
    -    @Test
    -    void whenItemsExceedMaxBatchSize_flushingQueueSplitsIntoBatches() {
    -        var resultFutures = new ArrayList<CompletableFuture<Void>>();
    -        for (int i = 0; i < MAX_BATCH_SIZE * 2; i++) {
    -            resultFutures.add(cut.submit(input, SHORT_DELAY));
    -        }
    -
    -        CompletableFuture.allOf(resultFutures.toArray(CompletableFuture[]::new)).join();
    -        verify(doBatchAction, times(2)).accept(any());
    -    }
    -
    -    @Test
    -    void whenItemsExceedMaxBatchSize_eachBatchRespectsMaxItemCount() {
    -        var resultFutures = new ArrayList<CompletableFuture<Void>>();
    -        for (int i = 0; i < MAX_BATCH_SIZE * 2; i++) {
    -            resultFutures.add(cut.submit(input, SHORT_DELAY));
    -        }
    -
    -        CompletableFuture.allOf(resultFutures.toArray(CompletableFuture[]::new)).join();
    -        verify(doBatchAction, times(2)).accept(argThat(list -> list.size() == MAX_BATCH_SIZE));
    -    }
    -
    -    @Test
    -    void whenItemsExceedBinarySize_flushingQueueSplitsIntoBatches() {
    -        var largeCut = new ApiRequestDelayedBatcher<>(
    -                MAX_BATCH_SIZE, MAX_BATCH_BINARY_SIZE_IN_BYTES, item -> MAX_BATCH_BINARY_SIZE_IN_BYTES, doBatchAction);
    -
    -        var future1 = largeCut.submit(input, SHORT_DELAY);
    -        var future2 = largeCut.submit(input, SHORT_DELAY);
    -
    -        CompletableFuture.allOf(future1, future2).join();
    -        // Each item fills the entire byte budget, so each gets its own batch
    -        verify(doBatchAction, times(2)).accept(argThat(list -> list.size() == 1));
    -    }
    -
    -    @Test
    -    void whenOversizedItemSubmitted_itStillGetsProcessedAlone() {
    -        // Item larger than maxBatchBytes β€” should still be processed as a single-item batch
    -        var oversizedCut = new ApiRequestDelayedBatcher<>(
    -                MAX_BATCH_SIZE,
    -                MAX_BATCH_BINARY_SIZE_IN_BYTES,
    -                item -> MAX_BATCH_BINARY_SIZE_IN_BYTES + 1,
    -                doBatchAction);
    -
    -        var future = oversizedCut.submit(input, SHORT_DELAY);
    -        future.join();
    -
    -        verify(doBatchAction).accept(argThat(list -> list.size() == 1));
    -    }
    -
    -    @Test
    -    void whenBatchActionThrows_allFuturesCompleteWithThatException() {
    -        var batchCause = new RuntimeException();
    -        doThrow(batchCause).when(doBatchAction).accept(any());
    -
    -        var resultFuture1 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(batchCause, ex);
    -            return null;
    -        });
    -        var resultFuture2 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(batchCause, ex);
    -            return null;
    -        });
    -        var resultFuture3 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(batchCause, ex);
    -            return null;
    -        });
    -
    -        CompletableFuture.allOf(resultFuture1, resultFuture2, resultFuture3).join();
    -    }
    -
    -    @Test
    -    void whenBatchActionSucceeds_allFuturesCompleteSuccessfully() {
    -        var input1 = mock(Input.class);
    -        var input2 = mock(Input.class);
    -        var input3 = mock(Input.class);
    -
    -        var resultFuture1 = cut.submit(input1, SHORT_DELAY);
    -        var resultFuture2 = cut.submit(input2, SHORT_DELAY);
    -        var resultFuture3 = cut.submit(input3, SHORT_DELAY);
    -
    -        CompletableFuture.allOf(resultFuture1, resultFuture2, resultFuture3).join();
    -    }
    -
    -    @Test
    -    void whenBatchActionThrowsRuntimeException_futuresReceiveOriginalCause() {
    -        var rootCause = new RuntimeException("Root cause");
    -        doThrow(rootCause).when(doBatchAction).accept(any());
    -
    -        var resultFuture1 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(rootCause, ex);
    -            return null;
    -        });
    -        var resultFuture2 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(rootCause, ex);
    -            return null;
    -        });
    -        var resultFuture3 = cut.submit(input, SHORT_DELAY).handle((v, ex) -> {
    -            assertEquals(rootCause, ex);
    -            return null;
    -        });
    -
    -        CompletableFuture.allOf(resultFuture1, resultFuture2, resultFuture3).join();
    -    }
    -
    -    @Test
    -    void whenShutdownCalled_pendingItemsAreFlushedImmediately() {
    -        var future = cut.submit(input, LONG_DELAY);
    -        assertFalse(future.isDone());
    -
    -        cut.shutdown();
    -
    -        assertTrue(future.isDone());
    -        verify(doBatchAction).accept(any());
    -    }
    -
    -    @Test
    -    void whenEarlierDelaySubmitted_batchFlushesAtEarlierTime() {
    -        var future1 = cut.submit(input, LONG_DELAY);
    -        var future2 = cut.submit(input, SHORT_DELAY);
    -
    -        CompletableFuture.allOf(future1, future2).join();
    -        verify(doBatchAction).accept(any());
    -    }
    -
    -    @Test
    -    void whenNoItemsSubmitted_shutdownDoesNotInvokeBatchAction() {
    -        cut.shutdown();
    -        verify(doBatchAction, never()).accept(any());
    -    }
    -
    -    @Test
    -    void whenMultipleBatchesFlushedViaShutdown_allFuturesComplete() {
    -        var future1 = cut.submit(input, LONG_DELAY);
    -        cut.shutdown();
    -        assertTrue(future1.isDone());
    -
    -        var future2 = cut.submit(input, LONG_DELAY);
    -        cut.shutdown();
    -        assertTrue(future2.isDone());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/execution/CheckpointManagerTest.java b/sdk/src/test/java/software/amazon/lambda/durable/execution/CheckpointManagerTest.java
    deleted file mode 100644
    index a921f8916..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/execution/CheckpointManagerTest.java
    +++ /dev/null
    @@ -1,616 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.ArgumentMatchers.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.time.Duration;
    -import java.time.Instant;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.concurrent.TimeUnit;
    -import java.util.concurrent.TimeoutException;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.retry.JitterStrategy;
    -import software.amazon.lambda.durable.retry.PollingStrategies;
    -
    -class CheckpointManagerTest {
    -
    -    private DurableConfig config;
    -    private DurableExecutionClient client;
    -    private CheckpointManager batcher;
    -    private List<Operation> callbackOperations;
    -
    -    @BeforeEach
    -    void setUp() {
    -        client = mock(DurableExecutionClient.class);
    -        config = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(50), 2.0, JitterStrategy.FULL, Duration.ofSeconds(10)))
    -                .build();
    -
    -        callbackOperations = new ArrayList<>();
    -        batcher = new CheckpointManager(config, "arn:test", "token-1", callbackOperations::addAll);
    -    }
    -
    -    @Test
    -    void checkpoint_sendsUpdateAndReturnsCompletedFuture() throws Exception {
    -        var update = OperationUpdate.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .action(OperationAction.START)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .build());
    -
    -        var future = batcher.checkpoint(update);
    -
    -        // Wait for batch to flush
    -        future.get(200, TimeUnit.MILLISECONDS);
    -
    -        verify(client).checkpoint(eq("arn:test"), eq("token-1"), anyList());
    -        assertTrue(future.isDone());
    -    }
    -
    -    @Test
    -    void pollForUpdate_completesWhenOperationReturned() throws Exception {
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = batcher.pollForUpdate("op-1");
    -
    -        assertFalse(future.isDone());
    -
    -        // Wait for polling to trigger checkpoint
    -        var result = future.get(300, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -        assertEquals(1, callbackOperations.size());
    -    }
    -
    -    @Test
    -    void pollForUpdate_doesNotCompleteWhenDifferentOperationReturned() throws Exception {
    -        var operation = Operation.builder()
    -                .id("op-2")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = batcher.pollForUpdate("op-1");
    -
    -        // Should timeout since op-1 never returned
    -        assertThrows(TimeoutException.class, () -> future.get(200, TimeUnit.MILLISECONDS));
    -    }
    -
    -    @Test
    -    void pollForUpdate_handlesMultiplePollers() throws Exception {
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future1 = batcher.pollForUpdate("op-1");
    -        var future2 = batcher.pollForUpdate("op-1");
    -        var future3 = batcher.pollForUpdate("op-1");
    -
    -        var result1 = future1.get(300, TimeUnit.MILLISECONDS);
    -        var result2 = future2.get(300, TimeUnit.MILLISECONDS);
    -        var result3 = future3.get(300, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result1);
    -        assertEquals(operation, result2);
    -        assertEquals(operation, result3);
    -    }
    -
    -    @Test
    -    void shutdown_completesAllPendingPollersWithException() {
    -        var future1 = batcher.pollForUpdate("op-1");
    -        var future2 = batcher.pollForUpdate("op-2");
    -
    -        batcher.shutdown();
    -
    -        assertTrue(future1.isCompletedExceptionally());
    -        assertTrue(future2.isCompletedExceptionally());
    -
    -        assertThrows(Exception.class, future1::join);
    -        assertThrows(Exception.class, future2::join);
    -    }
    -
    -    @Test
    -    void shutdown_waitsForPendingCheckpoints() throws Exception {
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .build());
    -
    -        var future = batcher.checkpoint(OperationUpdate.builder()
    -                .id("op-1")
    -                .action(OperationAction.START)
    -                .type(OperationType.STEP)
    -                .build());
    -
    -        batcher.shutdown();
    -
    -        assertTrue(future.isDone());
    -        verify(client, atLeastOnce()).checkpoint(anyString(), anyString(), anyList());
    -    }
    -
    -    @Test
    -    void fetchAllPages_retrievesAllOperations() {
    -        var op1 = Operation.builder().id("op-1").build();
    -        var op2 = Operation.builder().id("op-2").build();
    -        var op3 = Operation.builder().id("op-3").build();
    -
    -        when(client.getExecutionState(eq("arn:test"), eq("token-1"), eq("marker-1")))
    -                .thenReturn(GetDurableExecutionStateResponse.builder()
    -                        .operations(List.of(op2))
    -                        .nextMarker("marker-2")
    -                        .build());
    -
    -        when(client.getExecutionState(eq("arn:test"), eq("token-1"), eq("marker-2")))
    -                .thenReturn(GetDurableExecutionStateResponse.builder()
    -                        .operations(List.of(op3))
    -                        .nextMarker(null)
    -                        .build());
    -
    -        var state = CheckpointUpdatedExecutionState.builder()
    -                .operations(List.of(op1))
    -                .nextMarker("marker-1")
    -                .build();
    -
    -        var result = batcher.fetchAllPages(state);
    -
    -        assertEquals(3, result.size());
    -        assertEquals("op-1", result.get(0).id());
    -        assertEquals("op-2", result.get(1).id());
    -        assertEquals("op-3", result.get(2).id());
    -    }
    -
    -    @Test
    -    void fetchAllPages_handlesNullState() {
    -        var result = batcher.fetchAllPages(null);
    -
    -        assertEquals(0, result.size());
    -        verify(client, never()).getExecutionState(anyString(), anyString(), anyString());
    -    }
    -
    -    @Test
    -    void fetchAllPages_handlesEmptyMarker() {
    -        var state = CheckpointUpdatedExecutionState.builder()
    -                .operations(List.of(Operation.builder().id("op-1").build()))
    -                .nextMarker("")
    -                .build();
    -
    -        var result = batcher.fetchAllPages(state);
    -
    -        assertEquals(1, result.size());
    -        verify(client, never()).getExecutionState(anyString(), anyString(), anyString());
    -    }
    -
    -    @Test
    -    void checkpoint_updatesCheckpointToken() throws Exception {
    -        when(client.checkpoint(anyString(), eq("token-1"), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .build());
    -
    -        when(client.checkpoint(anyString(), eq("token-2"), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-3")
    -                        .build());
    -
    -        batcher.checkpoint(OperationUpdate.builder()
    -                        .id("op-1")
    -                        .type(OperationType.STEP)
    -                        .action(OperationAction.SUCCEED)
    -                        .build())
    -                .get(200, TimeUnit.MILLISECONDS);
    -
    -        batcher.checkpoint(OperationUpdate.builder()
    -                        .id("op-2")
    -                        .type(OperationType.STEP)
    -                        .action(OperationAction.START)
    -                        .build())
    -                .get(200, TimeUnit.MILLISECONDS);
    -
    -        verify(client).checkpoint(eq("arn:test"), eq("token-1"), anyList());
    -        verify(client).checkpoint(eq("arn:test"), eq("token-2"), anyList());
    -    }
    -
    -    @Test
    -    void pollForUpdate_withCustomDelay() throws Exception {
    -        var operation =
    -                Operation.builder().id("op-1").status(OperationStatus.SUCCEEDED).build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = batcher.pollForUpdate("op-1", Instant.now().plusMillis(100));
    -
    -        var result = future.get(300, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -    }
    -
    -    @Test
    -    void checkpoint_filtersNullUpdates() throws Exception {
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .build());
    -
    -        // Submit null (from polling) and real update
    -        batcher.pollForUpdate("op-1");
    -        batcher.checkpoint(OperationUpdate.builder()
    -                        .id("op-2")
    -                        .type(OperationType.STEP)
    -                        .action(OperationAction.START)
    -                        .build())
    -                .get(200, TimeUnit.MILLISECONDS);
    -
    -        verify(client).checkpoint(eq("arn:test"), eq("token-1"), argThat(list -> {
    -            // Should only contain non-null update
    -            return list.stream().noneMatch(u -> u == null);
    -        }));
    -    }
    -
    -    // --- Polling backoff and jitter tests ---
    -
    -    @Test
    -    void pollForUpdate_withBackoffAndNoJitter_completesWhenOperationReturned() throws Exception {
    -        var backoffConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 2.0, JitterStrategy.NONE, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var backoffBatcher = new CheckpointManager(backoffConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = backoffBatcher.pollForUpdate("op-1");
    -        var result = future.get(500, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -    }
    -
    -    @Test
    -    void pollForUpdate_withBackoff_pollsMultipleTimesBeforeCompletion() throws Exception {
    -        var backoffConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 1.5, JitterStrategy.NONE, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var backoffBatcher = new CheckpointManager(backoffConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var callCount = new AtomicInteger(0);
    -        when(client.checkpoint(anyString(), anyString(), anyList())).thenAnswer(invocation -> {
    -            int count = callCount.incrementAndGet();
    -            // Return the operation on the 3rd call
    -            if (count >= 3) {
    -                return CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build();
    -            }
    -            return CheckpointDurableExecutionResponse.builder()
    -                    .checkpointToken("token-1")
    -                    .build();
    -        });
    -
    -        var future = backoffBatcher.pollForUpdate("op-1");
    -        var result = future.get(1000, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -        assertTrue(callCount.get() >= 3, "Expected at least 3 checkpoint calls, got " + callCount.get());
    -    }
    -
    -    @Test
    -    void pollForUpdate_withCustomDelay_ignoresBackoffConfig() throws Exception {
    -        var backoffConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 100.0, JitterStrategy.NONE, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var backoffBatcher = new CheckpointManager(backoffConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var callCount = new AtomicInteger(0);
    -        when(client.checkpoint(anyString(), anyString(), anyList())).thenAnswer(invocation -> {
    -            int count = callCount.incrementAndGet();
    -            if (count >= 3) {
    -                return CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build();
    -            }
    -            return CheckpointDurableExecutionResponse.builder()
    -                    .checkpointToken("token-1")
    -                    .build();
    -        });
    -
    -        // Use explicit delay (fixed interval) β€” should NOT apply backoff
    -        var future = backoffBatcher.pollForUpdate("op-1", Instant.now().plusMillis(20));
    -        var result = future.get(1000, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -        // With fixed interval of 20ms, should complete quickly despite backoffRate=100
    -        assertTrue(callCount.get() >= 3);
    -    }
    -
    -    @Test
    -    void pollForUpdate_withFullJitter_completesWhenOperationReturned() throws Exception {
    -        var jitterConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 2.0, JitterStrategy.FULL, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var jitterBatcher = new CheckpointManager(jitterConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = jitterBatcher.pollForUpdate("op-1");
    -        var result = future.get(500, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -    }
    -
    -    @Test
    -    void pollForUpdate_withHalfJitter_completesWhenOperationReturned() throws Exception {
    -        var jitterConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 2.0, JitterStrategy.HALF, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var jitterBatcher = new CheckpointManager(jitterConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        var future = jitterBatcher.pollForUpdate("op-1");
    -        var result = future.get(500, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -    }
    -
    -    @Test
    -    void pollForUpdate_defaultConfig_appliesBackoffAndJitter() throws Exception {
    -        // Default config: pollingInterval=1000ms, backoffRate=2.0, jitter=FULL
    -        // Use small interval to keep test fast
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        when(client.checkpoint(anyString(), anyString(), anyList()))
    -                .thenReturn(CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build());
    -
    -        // setUp() batcher uses pollingInterval=50ms, backoffRate=2.0 (default), jitter=FULL (default)
    -        var future = batcher.pollForUpdate("op-1");
    -        var result = future.get(500, TimeUnit.MILLISECONDS);
    -
    -        assertEquals(operation, result);
    -    }
    -
    -    @Test
    -    void pollForUpdate_withBackoff_delayGrowsAcrossAttempts() throws Exception {
    -        // Use NONE jitter so delays are deterministic: base * backoffRate^attempt
    -        // base=10ms, rate=2.0 β†’ attempt 0: 10ms, attempt 1: 20ms, attempt 2: 40ms
    -        var backoffConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(10), 2.0, JitterStrategy.NONE, Duration.ofSeconds(10)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var backoffBatcher = new CheckpointManager(backoffConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var callCount = new AtomicInteger(0);
    -        var callTimestamps = new ArrayList<Long>();
    -        when(client.checkpoint(anyString(), anyString(), anyList())).thenAnswer(invocation -> {
    -            callTimestamps.add(System.nanoTime());
    -            int count = callCount.incrementAndGet();
    -            if (count >= 4) {
    -                return CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build();
    -            }
    -            return CheckpointDurableExecutionResponse.builder()
    -                    .checkpointToken("token-1")
    -                    .build();
    -        });
    -
    -        var future = backoffBatcher.pollForUpdate("op-1");
    -        future.get(2000, TimeUnit.MILLISECONDS);
    -
    -        assertTrue(callCount.get() >= 4, "Expected at least 4 calls, got " + callCount.get());
    -        // Verify that later intervals are generally longer than earlier ones
    -        // (not exact due to scheduling, but the trend should hold)
    -        if (callTimestamps.size() >= 4) {
    -            var interval1 = callTimestamps.get(1) - callTimestamps.get(0);
    -            var interval3 = callTimestamps.get(3) - callTimestamps.get(2);
    -            assertTrue(
    -                    interval3 >= interval1,
    -                    "Later polling intervals should be >= earlier ones with backoff. "
    -                            + "interval1=" + Duration.ofNanos(interval1).toMillis()
    -                            + "ms, interval3=" + Duration.ofNanos(interval3).toMillis() + "ms");
    -        }
    -    }
    -
    -    @Test
    -    void pollForUpdate_withFixedDelay_intervalsAreConsistent() throws Exception {
    -        var fixedConfig = DurableConfig.builder()
    -                .withDurableExecutionClient(client)
    -                .withPollingStrategy(PollingStrategies.fixedDelay(Duration.ofMillis(50)))
    -                .withCheckpointDelay(Duration.ofMillis(50))
    -                .build();
    -        var fixedBatcher = new CheckpointManager(fixedConfig, "arn:test", "token-1", callbackOperations::addAll);
    -
    -        var operation = Operation.builder()
    -                .id("op-1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -
    -        var callCount = new AtomicInteger(0);
    -        var callTimestamps = new ArrayList<Long>();
    -        when(client.checkpoint(anyString(), anyString(), anyList())).thenAnswer(invocation -> {
    -            callTimestamps.add(System.nanoTime());
    -            int count = callCount.incrementAndGet();
    -            if (count >= 5) {
    -                return CheckpointDurableExecutionResponse.builder()
    -                        .checkpointToken("token-2")
    -                        .newExecutionState(CheckpointUpdatedExecutionState.builder()
    -                                .operations(List.of(operation))
    -                                .build())
    -                        .build();
    -            }
    -            return CheckpointDurableExecutionResponse.builder()
    -                    .checkpointToken("token-1")
    -                    .build();
    -        });
    -
    -        var future = fixedBatcher.pollForUpdate("op-1");
    -        future.get(2000, TimeUnit.MILLISECONDS);
    -
    -        assertTrue(callCount.get() >= 5, "Expected at least 5 calls, got " + callCount.get());
    -
    -        // Verify intervals are roughly consistent (no exponential growth)
    -        if (callTimestamps.size() >= 5) {
    -            var intervals = new ArrayList<Long>();
    -            for (int i = 1; i < callTimestamps.size(); i++) {
    -                intervals.add(TimeUnit.NANOSECONDS.toMillis(callTimestamps.get(i) - callTimestamps.get(i - 1)));
    -            }
    -            var maxInterval =
    -                    intervals.stream().mapToLong(Long::longValue).max().orElse(0);
    -            var minInterval =
    -                    intervals.stream().mapToLong(Long::longValue).min().orElse(0);
    -            // With fixed delay of 50ms, the spread between min and max should be small
    -            // (no exponential growth). Allow generous tolerance for scheduling jitter.
    -            assertTrue(
    -                    maxInterval - minInterval < 150,
    -                    "Fixed delay intervals should be roughly consistent. min=" + minInterval + "ms, max=" + maxInterval
    -                            + "ms, intervals=" + intervals);
    -        }
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionTest.java
    deleted file mode 100644
    index a4ad86d3b..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionTest.java
    +++ /dev/null
    @@ -1,304 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -import static software.amazon.lambda.durable.TypeToken.get;
    -
    -import java.util.List;
    -import java.util.concurrent.ExecutorService;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -
    -class DurableExecutionTest {
    -
    -    private static final String EXECUTION_OP_ID = "20dae574-53da-37a1-bfd5-b0e2e6ec715d";
    -    private static final String OPERATION_ID1 = TestUtils.hashOperationId("1");
    -    private static final String EXECUTION_NAME = "exec-name";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    private DurableConfig configWithMockClient() {
    -        return DurableConfig.builder()
    -                .withDurableExecutionClient(TestUtils.createMockClient())
    -                .build();
    -    }
    -
    -    @Test
    -    void testExecuteSuccess() {
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> ctx.step("test", String.class, stepCtx -> "Hello " + userInput),
    -                configWithMockClient());
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertNotNull(output.result());
    -        assertTrue(output.result().contains("Hello test-input"));
    -    }
    -
    -    @Test
    -    void testExecutePending() {
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> {
    -                    ctx.step("step1", String.class, stepCtx -> "Done");
    -                    ctx.wait(null, java.time.Duration.ofSeconds(60));
    -                    return "Should not reach here";
    -                },
    -                configWithMockClient());
    -
    -        assertEquals(ExecutionStatus.PENDING, output.status());
    -        assertNull(output.result());
    -    }
    -
    -    @Test
    -    void testExecuteFailure() {
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> {
    -                    throw new RuntimeException("Test error");
    -                },
    -                configWithMockClient());
    -
    -        assertEquals(ExecutionStatus.FAILED, output.status());
    -        assertNotNull(output.error());
    -        assertEquals("java.lang.RuntimeException", output.error().errorType());
    -        assertEquals("Test error", output.error().errorMessage());
    -    }
    -
    -    @Test
    -    void testExecuteReplay() {
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input\"")
    -                        .build())
    -                .build();
    -
    -        var completedStep = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .name("step1")
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"First\"").build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token2",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp, completedStep))
    -                        .build());
    -
    -        var output = DurableExecutor.execute(
    -                input,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> ctx.step("step1", String.class, stepCtx -> "Second"),
    -                configWithMockClient());
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertTrue(output.result().contains("First"));
    -    }
    -
    -    @Test
    -    void testValidationNoOperations() {
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder().operations(List.of()).build());
    -
    -        var exception = assertThrows(
    -                IllegalStateException.class,
    -                () -> DurableExecutor.execute(
    -                        input, null, get(String.class), (userInput, ctx) -> "result", configWithMockClient()));
    -
    -        assertEquals("EXECUTION operation not found", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testValidationWrongFirstOperation() {
    -        var stepOp = Operation.builder()
    -                .id(OPERATION_ID1)
    -                .type(OperationType.STEP)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"result\"").build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(stepOp))
    -                        .build());
    -
    -        var exception = assertThrows(
    -                IllegalStateException.class,
    -                () -> DurableExecutor.execute(
    -                        input, null, get(String.class), (userInput, ctx) -> "result", configWithMockClient()));
    -
    -        assertEquals("EXECUTION operation not found", exception.getMessage());
    -    }
    -
    -    @Test
    -    void testValidationMissingExecutionDetails() {
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var result = DurableExecutor.execute(
    -                input, null, get(String.class), (userInput, ctx) -> "result", configWithMockClient());
    -
    -        assertEquals(ExecutionStatus.FAILED, result.status());
    -        assertEquals(
    -                "EXECUTION operation missing executionDetails", result.error().errorMessage());
    -    }
    -
    -    @Test
    -    void testExecutorNotShutdownAfterMultipleHandlerInvocations() {
    -        // Create a config with a shared executor
    -        var config = configWithMockClient();
    -        ExecutorService sharedExecutor = config.getExecutorService();
    -
    -        // Verify executor is not shutdown initially
    -        assertFalse(sharedExecutor.isShutdown(), "Executor should not be shutdown initially");
    -
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input-1\"")
    -                        .build())
    -                .build();
    -
    -        var input1 = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        // Execute first handler
    -        var output1 = DurableExecutor.execute(
    -                input1,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> ctx.step("test1", String.class, stepCtx -> "Result 1: " + userInput),
    -                config);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output1.status());
    -        assertFalse(sharedExecutor.isShutdown(), "Executor should not be shutdown after first execution");
    -
    -        // Create second input with different execution operation
    -        var executionOp2 = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload("\"test-input-2\"")
    -                        .build())
    -                .build();
    -
    -        var input2 = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token2",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp2))
    -                        .build());
    -
    -        // Execute second handler using the same config (and thus same executor)
    -        var output2 = DurableExecutor.execute(
    -                input2,
    -                null,
    -                get(String.class),
    -                (userInput, ctx) -> ctx.step("test2", String.class, stepCtx -> "Result 2: " + userInput),
    -                config);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output2.status());
    -        assertFalse(sharedExecutor.isShutdown(), "Executor should not be shutdown after second execution");
    -
    -        // Verify both executions completed successfully and used the same executor
    -        assertTrue(output1.result().contains("Result 1: test-input-1"));
    -        assertTrue(output2.result().contains("Result 2: test-input-2"));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionWrapperTest.java b/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionWrapperTest.java
    deleted file mode 100644
    index a64a19232..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/execution/DurableExecutionWrapperTest.java
    +++ /dev/null
    @@ -1,134 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static software.amazon.lambda.durable.TypeToken.get;
    -
    -import com.amazonaws.services.lambda.runtime.RequestHandler;
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.DurableExecutionOutput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class DurableExecutionWrapperTest {
    -    private static final String EXECUTION_OP_ID = "f3d7b0c0-1234-5678-90ab-cdef12345678";
    -    private static final String EXECUTION_NAME = "exec-name";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    static class TestInput {
    -        public String value;
    -
    -        public TestInput() {}
    -
    -        public TestInput(String value) {
    -            this.value = value;
    -        }
    -    }
    -
    -    static class TestOutput {
    -        public String result;
    -
    -        public TestOutput() {}
    -
    -        public TestOutput(String result) {
    -            this.result = result;
    -        }
    -    }
    -
    -    private DurableExecutionClient mockClient() {
    -        return TestUtils.createMockClient();
    -    }
    -
    -    @Test
    -    void testWrapperPattern() {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient()).build();
    -        RequestHandler<DurableExecutionInput, DurableExecutionOutput> handler = DurableExecutor.wrap(
    -                get(TestInput.class),
    -                (input, context) -> {
    -                    var result = context.step("process", String.class, stepCtx -> "Wrapped: " + input.value);
    -                    return new TestOutput(result);
    -                },
    -                config);
    -
    -        var serDes = new JacksonSerDes();
    -
    -        // Create input with EXECUTION operation
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload(serDes.serialize(new TestInput("test")))
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token-1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        // Execute
    -        var output = handler.handleRequest(input, null);
    -
    -        // Verify
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertNotNull(output.result());
    -
    -        var result = serDes.deserialize(output.result(), get(TestOutput.class));
    -        assertEquals("Wrapped: test", result.result);
    -    }
    -
    -    @Test
    -    void testWrapperWithMethodReference() {
    -        var config =
    -                DurableConfig.builder().withDurableExecutionClient(mockClient()).build();
    -        RequestHandler<DurableExecutionInput, DurableExecutionOutput> handler =
    -                DurableExecutor.wrap(get(TestInput.class), DurableExecutionWrapperTest::handleRequest, config);
    -
    -        var serDes = new JacksonSerDes();
    -
    -        var executionOp = Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .executionDetails(ExecutionDetails.builder()
    -                        .inputPayload(serDes.serialize(new TestInput("method-ref")))
    -                        .build())
    -                .build();
    -
    -        var input = new DurableExecutionInput(
    -                EXECUTION_ARN,
    -                "token-1",
    -                CheckpointUpdatedExecutionState.builder()
    -                        .operations(List.of(executionOp))
    -                        .build());
    -
    -        var output = handler.handleRequest(input, null);
    -
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        var result = serDes.deserialize(output.result(), get(TestOutput.class));
    -        assertEquals("Method: method-ref", result.result);
    -    }
    -
    -    private static TestOutput handleRequest(TestInput input, DurableContext context) {
    -        var result = context.step("process", String.class, stepCtx -> "Method: " + input.value);
    -        return new TestOutput(result);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/execution/ExecutionManagerTest.java b/sdk/src/test/java/software/amazon/lambda/durable/execution/ExecutionManagerTest.java
    deleted file mode 100644
    index 511f4a38f..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/execution/ExecutionManagerTest.java
    +++ /dev/null
    @@ -1,142 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.execution;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.ArgumentMatchers.any;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.when;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.CheckpointUpdatedExecutionState;
    -import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.client.DurableExecutionClient;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -
    -class ExecutionManagerTest {
    -    private static final String EXECUTION_OP_ID = "01234567-0123-0123-0123-012345678901";
    -    private static final String EXECUTION_NAME = "exec-name";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    private DurableExecutionClient client;
    -
    -    private ExecutionManager createManager(List<Operation> operations) {
    -        client = TestUtils.createMockClient();
    -        var initialState =
    -                CheckpointUpdatedExecutionState.builder().operations(operations).build();
    -        return new ExecutionManager(
    -                new DurableExecutionInput(EXECUTION_ARN, "test-token", initialState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -    }
    -
    -    private Operation executionOp() {
    -        return Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .build();
    -    }
    -
    -    private Operation stepOp(String id, OperationStatus status) {
    -        return Operation.builder()
    -                .id(id)
    -                .type(OperationType.STEP)
    -                .status(status)
    -                .build();
    -    }
    -
    -    @Test
    -    void startsInReplayModeWhenOperationsExist() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.SUCCEEDED)));
    -
    -        assertTrue(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void startsInExecutionModeWhenOnlyExecutionOp() {
    -        var manager = createManager(List.of(executionOp()));
    -
    -        assertFalse(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void staysInReplayModeForTerminalOperation() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.SUCCEEDED)));
    -
    -        var op = manager.getOperationAndUpdateReplayState("1");
    -
    -        assertNotNull(op);
    -        assertTrue(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void transitionsToExecutionModeForNonTerminalOperation() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.STARTED)));
    -
    -        assertTrue(manager.isReplaying());
    -
    -        var op = manager.getOperationAndUpdateReplayState("1");
    -
    -        assertNotNull(op);
    -        assertFalse(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void transitionsToExecutionModeForMissingOperation() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.SUCCEEDED)));
    -
    -        assertTrue(manager.isReplaying());
    -
    -        var op = manager.getOperationAndUpdateReplayState("2");
    -
    -        assertNull(op);
    -        assertFalse(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void transitionsToExecutionModeForPendingOperation() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.PENDING)));
    -
    -        var op = manager.getOperationAndUpdateReplayState("1");
    -
    -        assertNotNull(op);
    -        assertFalse(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void staysInReplayModeForFailedOperation() {
    -        var manager = createManager(List.of(executionOp(), stepOp("1", OperationStatus.FAILED)));
    -
    -        var op = manager.getOperationAndUpdateReplayState("1");
    -
    -        assertNotNull(op);
    -        assertTrue(manager.isReplaying());
    -    }
    -
    -    @Test
    -    void emptyInitialState() {
    -        client = mock(DurableExecutionClient.class);
    -        when(client.getExecutionState(any(), any(), any()))
    -                .thenReturn(GetDurableExecutionStateResponse.builder()
    -                        .operations(List.of(executionOp()))
    -                        .nextMarker(null)
    -                        .build());
    -        var initialState = CheckpointUpdatedExecutionState.builder()
    -                .operations(List.of())
    -                .nextMarker("marker")
    -                .build();
    -        var executionManager = new ExecutionManager(
    -                new DurableExecutionInput(EXECUTION_ARN, "test-token", initialState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -
    -        assertNotNull(executionManager.getExecutionOperation());
    -        assertEquals(EXECUTION_OP_ID, executionManager.getExecutionOperation().id());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/logging/DurableLoggerTest.java b/sdk/src/test/java/software/amazon/lambda/durable/logging/DurableLoggerTest.java
    deleted file mode 100644
    index ad13ac825..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/logging/DurableLoggerTest.java
    +++ /dev/null
    @@ -1,176 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.logging;
    -
    -import static org.mockito.Mockito.*;
    -
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import org.mockito.MockedStatic;
    -import org.slf4j.Logger;
    -import org.slf4j.MDC;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestContext;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -
    -class DurableLoggerTest {
    -    private static final String EXECUTION_NAME = "exec-123";
    -    private static final String EXECUTION_OP_ID = "20dae574-53da-37a1-bfd5-b0e2e6ec715d";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -    private static final String REQUEST_ID = "req-456";
    -
    -    private enum Mode {
    -        REPLAYING,
    -        EXECUTING
    -    }
    -
    -    private enum Suppression {
    -        ENABLED,
    -        DISABLED
    -    }
    -
    -    private Logger mockLogger;
    -    private ExecutionManager mockExecutionManager;
    -
    -    @BeforeEach
    -    void setUp() {
    -        mockLogger = mock(Logger.class);
    -        mockExecutionManager = mock(ExecutionManager.class);
    -        when(mockExecutionManager.getDurableExecutionArn()).thenReturn(EXECUTION_ARN);
    -    }
    -
    -    private DurableLogger createLogger(Mode mode, Suppression suppression) {
    -        when(mockExecutionManager.isReplaying()).thenReturn(mode == Mode.REPLAYING);
    -        return new DurableLogger(mockLogger, createDurableContext(REQUEST_ID, suppression));
    -    }
    -
    -    private DurableContextImpl createDurableContext(String requestId, Suppression suppression) {
    -        return DurableContextImpl.createRootContext(
    -                mockExecutionManager,
    -                DurableConfig.builder()
    -                        .withLoggerConfig(new LoggerConfig(suppression == Suppression.ENABLED))
    -                        .build(),
    -                new TestContext(requestId));
    -    }
    -
    -    @Test
    -    void logsWhenNotReplaying() {
    -        var logger = createLogger(Mode.EXECUTING, Suppression.ENABLED);
    -
    -        logger.info("test message");
    -
    -        verify(mockLogger).info(eq("test message"), any(Object[].class));
    -    }
    -
    -    @Test
    -    void suppressesLogsWhenReplayingAndSuppressionEnabled() {
    -        var logger = createLogger(Mode.REPLAYING, Suppression.ENABLED);
    -
    -        logger.trace("suppressed");
    -        logger.info("should be suppressed");
    -        logger.debug("also suppressed");
    -        logger.warn("suppressed too");
    -        logger.error("even errors suppressed");
    -
    -        verify(mockLogger, never()).trace(anyString(), any(Object[].class));
    -        verify(mockLogger, never()).info(anyString(), any(Object[].class));
    -        verify(mockLogger, never()).debug(anyString(), any(Object[].class));
    -        verify(mockLogger, never()).warn(anyString(), any(Object[].class));
    -        verify(mockLogger, never()).error(anyString(), any(Object[].class));
    -    }
    -
    -    @Test
    -    void logsWhenReplayingButSuppressionDisabled() {
    -        var logger = createLogger(Mode.REPLAYING, Suppression.DISABLED);
    -
    -        logger.info("should log during replay");
    -
    -        verify(mockLogger).info(eq("should log during replay"), any(Object[].class));
    -    }
    -
    -    @Test
    -    void setsExecutionMdcInConstructor() {
    -        try (MockedStatic<MDC> mdcMock = mockStatic(MDC.class)) {
    -            createLogger(Mode.EXECUTING, Suppression.ENABLED);
    -
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_EXECUTION_ARN, EXECUTION_ARN));
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_REQUEST_ID, REQUEST_ID));
    -        }
    -    }
    -
    -    @Test
    -    void setStepThreadPropertiesSetsMdc() {
    -        try (MockedStatic<MDC> mdcMock = mockStatic(MDC.class)) {
    -            mdcMock.clearInvocations();
    -            when(mockExecutionManager.isReplaying()).thenReturn(false);
    -            var logger = new DurableLogger(
    -                    mockLogger,
    -                    createDurableContext(REQUEST_ID, Suppression.ENABLED)
    -                            .createStepContext("op-1", "validateOrder", 2));
    -
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_OPERATION_ID, "op-1"));
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_OPERATION_NAME, "validateOrder"));
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_ATTEMPT, "2"));
    -        }
    -    }
    -
    -    @Test
    -    void clearThreadPropertiesRemovesMdc() {
    -        try (MockedStatic<MDC> mdcMock = mockStatic(MDC.class)) {
    -            var logger = createLogger(Mode.EXECUTING, Suppression.ENABLED);
    -            mdcMock.clearInvocations();
    -
    -            logger.close();
    -
    -            mdcMock.verify(() -> MDC.clear());
    -        }
    -    }
    -
    -    @Test
    -    void replayModeTransitionAllowsSubsequentLogs() {
    -        when(mockExecutionManager.isReplaying()).thenReturn(true, false);
    -        var logger = new DurableLogger(mockLogger, createDurableContext(REQUEST_ID, Suppression.ENABLED));
    -
    -        // During replay - suppressed
    -        logger.info("suppressed");
    -        verify(mockLogger, never()).info(anyString(), any(Object[].class));
    -
    -        // After transition to execution mode - logged
    -        logger.info("logged after transition");
    -        verify(mockLogger).info(eq("logged after transition"), any(Object[].class));
    -    }
    -
    -    @Test
    -    void allLogLevelsDelegateCorrectly() {
    -        var logger = createLogger(Mode.EXECUTING, Suppression.ENABLED);
    -
    -        logger.trace("trace msg");
    -        logger.debug("debug msg");
    -        logger.info("info msg");
    -        logger.warn("warn msg");
    -        logger.error("error msg");
    -
    -        var exception = new RuntimeException("test");
    -        logger.error("error with exception", exception);
    -
    -        verify(mockLogger).trace(eq("trace msg"), any(Object[].class));
    -        verify(mockLogger).debug(eq("debug msg"), any(Object[].class));
    -        verify(mockLogger).info(eq("info msg"), any(Object[].class));
    -        verify(mockLogger).warn(eq("warn msg"), any(Object[].class));
    -        verify(mockLogger).error(eq("error msg"), any(Object[].class));
    -        verify(mockLogger).error("error with exception", exception);
    -    }
    -
    -    @Test
    -    void handlesNullRequestId() {
    -        try (MockedStatic<MDC> mdcMock = mockStatic(MDC.class)) {
    -            when(mockExecutionManager.isReplaying()).thenReturn(false);
    -            new DurableLogger(mockLogger, createDurableContext(null, Suppression.DISABLED));
    -
    -            mdcMock.verify(() -> MDC.put(DurableLogger.MDC_EXECUTION_ARN, EXECUTION_ARN));
    -            mdcMock.verify(() -> MDC.put(eq(DurableLogger.MDC_REQUEST_ID), anyString()), never());
    -        }
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/model/MapResultTest.java b/sdk/src/test/java/software/amazon/lambda/durable/model/MapResultTest.java
    deleted file mode 100644
    index ea8e49665..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/model/MapResultTest.java
    +++ /dev/null
    @@ -1,145 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -
    -class MapResultTest {
    -
    -    private static MapResult.MapError testError(String message) {
    -        return new MapResult.MapError("java.lang.RuntimeException", message, null);
    -    }
    -
    -    @Test
    -    void empty_returnsZeroSizeResult() {
    -        var result = MapResult.<String>empty();
    -
    -        assertEquals(0, result.size());
    -        assertTrue(result.allSucceeded());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionReason());
    -        assertTrue(result.results().isEmpty());
    -        assertTrue(result.succeeded().isEmpty());
    -        assertTrue(result.failed().isEmpty());
    -    }
    -
    -    @Test
    -    void allSucceeded_trueWhenNoErrors() {
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a"), MapResult.MapResultItem.succeeded("b")),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertTrue(result.allSucceeded());
    -        assertEquals(2, result.size());
    -        assertEquals("a", result.getResult(0));
    -        assertEquals("b", result.getResult(1));
    -        assertNull(result.getError(0));
    -        assertNull(result.getError(1));
    -    }
    -
    -    @Test
    -    void allSucceeded_falseWhenAnyError() {
    -        var error = testError("fail");
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a"), MapResult.MapResultItem.<String>failed(error)),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertFalse(result.allSucceeded());
    -    }
    -
    -    @Test
    -    void getResult_returnsNullForFailedItem() {
    -        var error = testError("fail");
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a"), MapResult.MapResultItem.<String>failed(error)),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertEquals("a", result.getResult(0));
    -        assertNull(result.getResult(1));
    -    }
    -
    -    @Test
    -    void getError_returnsNullForSucceededItem() {
    -        var error = testError("fail");
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a"), MapResult.MapResultItem.<String>failed(error)),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertNull(result.getError(0));
    -        assertSame(error, result.getError(1));
    -    }
    -
    -    @Test
    -    void succeeded_filtersNullResults() {
    -        var result = new MapResult<>(
    -                List.of(
    -                        MapResult.MapResultItem.succeeded("a"),
    -                        MapResult.MapResultItem.<String>failed(testError("fail")),
    -                        MapResult.MapResultItem.succeeded("c")),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertEquals(List.of("a", "c"), result.succeeded());
    -    }
    -
    -    @Test
    -    void failed_filtersNullErrors() {
    -        var error = testError("fail");
    -        var result = new MapResult<>(
    -                List.of(
    -                        MapResult.MapResultItem.succeeded("a"),
    -                        MapResult.MapResultItem.<String>failed(error),
    -                        MapResult.MapResultItem.succeeded("c")),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        var failures = result.failed();
    -        assertEquals(1, failures.size());
    -        assertSame(error, failures.get(0));
    -    }
    -
    -    @Test
    -    void completionReason_preserved() {
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a")), ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED);
    -
    -        assertEquals(ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED, result.completionReason());
    -    }
    -
    -    @Test
    -    void items_returnsUnmodifiableList() {
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a")), ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertThrows(
    -                UnsupportedOperationException.class, () -> result.items().add(MapResult.MapResultItem.succeeded("b")));
    -    }
    -
    -    @Test
    -    void getItem_returnsMapResultItem() {
    -        var result = new MapResult<>(
    -                List.of(
    -                        MapResult.MapResultItem.succeeded("a"),
    -                        MapResult.MapResultItem.<String>failed(testError("fail"))),
    -                ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertEquals(MapResult.MapResultItem.Status.SUCCEEDED, result.getItem(0).status());
    -        assertEquals("a", result.getItem(0).result());
    -        assertNull(result.getItem(0).error());
    -
    -        assertEquals(MapResult.MapResultItem.Status.FAILED, result.getItem(1).status());
    -        assertNull(result.getItem(1).result());
    -        assertNotNull(result.getItem(1).error());
    -    }
    -
    -    @Test
    -    void notStartedItems_haveNotStartedStatusAndNullResultAndError() {
    -        var result = new MapResult<>(
    -                List.of(MapResult.MapResultItem.succeeded("a"), MapResult.MapResultItem.<String>skipped()),
    -                ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED);
    -
    -        assertEquals(MapResult.MapResultItem.Status.SKIPPED, result.getItem(1).status());
    -        assertNull(result.getResult(1));
    -        assertNull(result.getError(1));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/model/ParallelResultTest.java b/sdk/src/test/java/software/amazon/lambda/durable/model/ParallelResultTest.java
    deleted file mode 100644
    index 328273111..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/model/ParallelResultTest.java
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.model;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class ParallelResultTest {
    -
    -    @Test
    -    void allBranchesSucceed_countsAreCorrect() {
    -        var result = new ParallelResult(3, 3, 0, ConcurrencyCompletionStatus.ALL_COMPLETED);
    -
    -        assertEquals(3, result.size());
    -        assertEquals(3, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/CallbackOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/CallbackOperationTest.java
    deleted file mode 100644
    index ebe2d7e99..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/CallbackOperationTest.java
    +++ /dev/null
    @@ -1,360 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.when;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.List;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.*;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CallbackConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.CallbackFailedException;
    -import software.amazon.lambda.durable.exception.CallbackTimeoutException;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class CallbackOperationTest {
    -
    -    private static final String OPERATION_ID = TestUtils.hashOperationId("1");
    -    private static final String OPERATION_NAME = "approval";
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of(OPERATION_ID, OPERATION_NAME, OperationType.CALLBACK);
    -    private static final String EXECUTION_NAME = "exec-name";
    -    private static final String EXECUTION_OP_ID = "123";
    -    private static final String EXECUTION_ARN = "arn:aws:lambda:us-east-1:123456789012:function:test/durable-execution/"
    -            + EXECUTION_NAME + "/" + EXECUTION_OP_ID;
    -
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        durableContext = mock(DurableContextImpl.class);
    -    }
    -
    -    /** Custom SerDes that tracks deserialization calls. */
    -    static class TrackingSerDes implements SerDes {
    -        private final JacksonSerDes delegate = new JacksonSerDes();
    -        private final AtomicInteger deserializeCount = new AtomicInteger(0);
    -
    -        @Override
    -        public String serialize(Object value) {
    -            return delegate.serialize(value);
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            deserializeCount.incrementAndGet();
    -            return delegate.deserialize(data, typeToken);
    -        }
    -
    -        public int getDeserializeCount() {
    -            return deserializeCount.get();
    -        }
    -    }
    -
    -    /** Custom SerDes that always throws SerDesException. */
    -    static class FailingSerDes implements SerDes {
    -        @Override
    -        public String serialize(Object value) {
    -            throw new SerDesException("Serialization failed");
    -        }
    -
    -        @Override
    -        public <T> T deserialize(String data, TypeToken<T> typeToken) {
    -            throw new SerDesException("Invalid base64 encoding");
    -        }
    -    }
    -
    -    private ExecutionManager createExecutionManager(List<Operation> initialOperations) {
    -        var client = TestUtils.createMockClient();
    -        var operations = new ArrayList<Operation>();
    -        operations.add(Operation.builder()
    -                .id(EXECUTION_OP_ID)
    -                .type(OperationType.EXECUTION)
    -                .status(OperationStatus.STARTED)
    -                .build());
    -        operations.addAll(initialOperations);
    -        var initialState =
    -                CheckpointUpdatedExecutionState.builder().operations(operations).build();
    -        var executionManager = new ExecutionManager(
    -                new DurableExecutionInput(EXECUTION_ARN, "test-token", initialState),
    -                DurableConfig.builder().withDurableExecutionClient(client).build());
    -        executionManager.setCurrentThreadContext(new ThreadContext("Root", ThreadType.CONTEXT));
    -        return executionManager;
    -    }
    -
    -    @Test
    -    void executeCreatesCheckpointAndGetsCallbackId() {
    -        var executionManager = createExecutionManager(List.of());
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        var serDes = new JacksonSerDes();
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -        operation.execute();
    -
    -        assertNotNull(operation.callbackId());
    -    }
    -
    -    @Test
    -    void executeWithConfigSetsOptions() {
    -        var executionManager = createExecutionManager(List.of());
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        var serDes = new JacksonSerDes();
    -        var config = CallbackConfig.builder()
    -                .timeout(Duration.ofMinutes(5))
    -                .heartbeatTimeout(Duration.ofSeconds(30))
    -                .serDes(serDes)
    -                .build();
    -
    -        var operation =
    -                new CallbackOperation<>(OPERATION_IDENTIFIER, TypeToken.get(String.class), config, durableContext);
    -        operation.execute();
    -
    -        assertNotNull(operation.callbackId());
    -    }
    -
    -    @Test
    -    void replayReturnsExistingCallbackIdWhenSucceeded() {
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("existing-callback-id")
    -                        .result("\"approved\"")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        var serDes = new JacksonSerDes();
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -        operation.execute();
    -
    -        assertEquals("existing-callback-id", operation.callbackId());
    -    }
    -
    -    @Test
    -    void getReturnsDeserializedResultWhenSucceeded() {
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("callback-id")
    -                        .result("\"approved\"")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var serDes = new JacksonSerDes();
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -        operation.execute();
    -        var result = operation.get();
    -
    -        assertEquals("approved", result);
    -    }
    -
    -    @Test
    -    void getThrowsCallbackExceptionWhenFailed() {
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.FAILED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("callback-id")
    -                        .error(ErrorObject.builder()
    -                                .errorType("ValidationError")
    -                                .errorMessage("Invalid input")
    -                                .build())
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var serDes = new JacksonSerDes();
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -        operation.execute();
    -
    -        var exception = assertThrows(CallbackFailedException.class, operation::get);
    -        assertTrue(exception.getMessage().contains("ValidationError"));
    -    }
    -
    -    @Test
    -    void getThrowsCallbackTimeoutExceptionWhenTimedOut() {
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.TIMED_OUT)
    -                .callbackDetails(
    -                        CallbackDetails.builder().callbackId("callback-id").build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var serDes = new JacksonSerDes();
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -        operation.execute();
    -
    -        var exception = assertThrows(CallbackTimeoutException.class, operation::get);
    -        assertTrue(exception.getMessage().contains("callback-id"));
    -    }
    -
    -    @Test
    -    void operationUsesCustomSerDesWhenConfigContainsOne() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("callback-id")
    -                        .result("\"approved\"")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var config = CallbackConfig.builder().serDes(customSerDes).build();
    -        var operation =
    -                new CallbackOperation<>(OPERATION_IDENTIFIER, TypeToken.get(String.class), config, durableContext);
    -        operation.execute();
    -        var result = operation.get();
    -
    -        assertEquals("approved", result);
    -        // Custom SerDes should have been used for deserialization
    -        assertEquals(1, customSerDes.getDeserializeCount(), "Custom SerDes should have been used");
    -    }
    -
    -    @Test
    -    void operationUsesDefaultSerDesWhenConfigIsNull() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("callback-id")
    -                        .result("\"approved\"")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(customSerDes).build(),
    -                durableContext);
    -        operation.execute();
    -        var result = operation.get();
    -
    -        assertEquals("approved", result);
    -        // Custom SerDes (passed as default) should have been used
    -        assertEquals(1, customSerDes.getDeserializeCount(), "Default SerDes should have been used");
    -    }
    -
    -    @Test
    -    void operationUsesDefaultSerDesWhenConfigSerDesIsNull() {
    -        var customSerDes = new TrackingSerDes();
    -
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("callback-id")
    -                        .result("\"approved\"")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var config = CallbackConfig.builder().serDes(customSerDes).build();
    -        var operation =
    -                new CallbackOperation<>(OPERATION_IDENTIFIER, TypeToken.get(String.class), config, durableContext);
    -        operation.execute();
    -        var result = operation.get();
    -
    -        assertEquals("approved", result);
    -        // Custom SerDes (passed as default) should have been used
    -        assertEquals(1, customSerDes.getDeserializeCount(), "Default SerDes should have been used");
    -    }
    -
    -    @Test
    -    void getThrowsSerDesExceptionWithHelpfulMessageWhenDeserializationFails() {
    -        var failingSerDes = new FailingSerDes();
    -
    -        var existingCallback = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.CALLBACK)
    -                .status(OperationStatus.SUCCEEDED)
    -                .callbackDetails(CallbackDetails.builder()
    -                        .callbackId("test-callback-123")
    -                        .result("data")
    -                        .build())
    -                .build();
    -        var executionManager = createExecutionManager(List.of(existingCallback));
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -
    -        var operation = new CallbackOperation<>(
    -                OPERATION_IDENTIFIER,
    -                TypeToken.get(String.class),
    -                CallbackConfig.builder().serDes(failingSerDes).build(),
    -                durableContext);
    -        operation.execute();
    -
    -        var exception = assertThrows(SerDesException.class, operation::get);
    -        assertEquals("Invalid base64 encoding", exception.getMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/ChildContextOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/ChildContextOperationTest.java
    deleted file mode 100644
    index 92be2e3ef..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/ChildContextOperationTest.java
    +++ /dev/null
    @@ -1,309 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.util.List;
    -import java.util.concurrent.Executors;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import java.util.function.Function;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ContextDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.DurableContext;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.RunInChildContextConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.ChildContextFailedException;
    -import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -/** Unit tests for ChildContextOperation. */
    -class ChildContextOperationTest {
    -
    -    private static final JacksonSerDes SERDES = new JacksonSerDes();
    -
    -    private DurableContextImpl durableContext;
    -    private ExecutionManager executionManager;
    -
    -    @BeforeEach
    -    void setUp() {
    -        durableContext = mock(DurableContextImpl.class);
    -        executionManager = mock(ExecutionManager.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("Root", ThreadType.CONTEXT));
    -        when(durableContext.getDurableConfig()).thenReturn(createConfig());
    -    }
    -
    -    private DurableConfig createConfig() {
    -        return DurableConfig.builder()
    -                .withExecutorService(Executors.newCachedThreadPool())
    -                .build();
    -    }
    -
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of("1", "test-context", OperationType.CONTEXT, OperationSubType.RUN_IN_CHILD_CONTEXT);
    -
    -    private ChildContextOperation<String> createOperation(Function<DurableContext, String> func) {
    -        return new ChildContextOperation<>(
    -                OPERATION_IDENTIFIER,
    -                func,
    -                TypeToken.get(String.class),
    -                RunInChildContextConfig.builder().serDes(SERDES).build(),
    -                durableContext);
    -    }
    -
    -    private ChildContextOperation<String> createOperationWithParent(
    -            Function<DurableContext, String> func, ConcurrencyOperation<?> parent) {
    -        return new ChildContextOperation<>(
    -                OPERATION_IDENTIFIER,
    -                func,
    -                TypeToken.get(String.class),
    -                RunInChildContextConfig.builder().serDes(SERDES).build(),
    -                durableContext,
    -                parent);
    -    }
    -
    -    // ===== SUCCEEDED replay =====
    -
    -    /** SUCCEEDED replay returns cached result without re-executing the function. */
    -    @Test
    -    void replaySucceededReturnsCachedResult() {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.RUN_IN_CHILD_CONTEXT.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(ContextDetails.builder()
    -                                .result("\"cached-value\"")
    -                                .build())
    -                        .build());
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var operation = createOperation(ctx -> {
    -            functionCalled.set(true);
    -            return "should-not-execute";
    -        });
    -
    -        operation.execute();
    -        var result = operation.get();
    -
    -        assertEquals("cached-value", result);
    -        assertFalse(functionCalled.get(), "Function should not be called during SUCCEEDED replay");
    -    }
    -
    -    // ===== FAILED replay =====
    -
    -    /** FAILED replay throws the original exception without re-executing. */
    -    @Test
    -    void replayFailedThrowsOriginalException() {
    -        var originalException = new IllegalArgumentException("bad input");
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.RUN_IN_CHILD_CONTEXT.getValue())
    -                        .status(OperationStatus.FAILED)
    -                        .contextDetails(ContextDetails.builder()
    -                                .error(ErrorObject.builder()
    -                                        .errorType("java.lang.IllegalArgumentException")
    -                                        .errorMessage("bad input")
    -                                        .errorData(SERDES.serialize(originalException))
    -                                        .stackTrace(stackTrace)
    -                                        .build())
    -                                .build())
    -                        .build());
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var operation = createOperation(ctx -> {
    -            functionCalled.set(true);
    -            return "should-not-execute";
    -        });
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(IllegalArgumentException.class, operation::get);
    -        assertEquals("bad input", thrown.getMessage());
    -        assertFalse(functionCalled.get(), "Function should not be called during FAILED replay");
    -    }
    -
    -    /** FAILED replay falls back to ChildContextFailedException when original cannot be reconstructed. */
    -    @Test
    -    void replayFailedFallsBackToChildContextFailedException() {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.RUN_IN_CHILD_CONTEXT.getValue())
    -                        .status(OperationStatus.FAILED)
    -                        .contextDetails(ContextDetails.builder()
    -                                .error(ErrorObject.builder()
    -                                        .errorType("com.nonexistent.SomeException")
    -                                        .errorMessage("unknown error")
    -                                        .stackTrace(List.of("com.example.Test|method|Test.java|1"))
    -                                        .build())
    -                                .build())
    -                        .build());
    -
    -        var operation = createOperation(ctx -> "unused");
    -        operation.execute();
    -
    -        var thrown = assertThrows(ChildContextFailedException.class, operation::get);
    -        assertTrue(thrown.getMessage().contains("com.nonexistent.SomeException"));
    -        assertTrue(thrown.getMessage().contains("unknown error"));
    -    }
    -
    -    // ===== Replay STARTED =====
    -
    -    /** STARTED replay re-executes the child context (interrupted mid-execution). */
    -    @Test
    -    void replayStartedReExecutesChildContext() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.RUN_IN_CHILD_CONTEXT.getValue())
    -                        .status(OperationStatus.STARTED)
    -                        .build());
    -        // hasOperationsForContext for the child context ID "1"
    -        when(executionManager.hasOperationsForContext("1")).thenReturn(false);
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var operation = createOperation(ctx -> {
    -            functionCalled.set(true);
    -            return "re-executed";
    -        });
    -
    -        operation.execute();
    -
    -        // Give the executor thread time to run
    -        Thread.sleep(100);
    -        assertTrue(functionCalled.get(), "Function should be re-executed for STARTED replay");
    -    }
    -
    -    // ===== ReplayChildren path =====
    -
    -    /** SUCCEEDED with replayChildren=true re-executes to reconstruct the result. */
    -    @Test
    -    void replayChildrenReExecutesToReconstructResult() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.RUN_IN_CHILD_CONTEXT.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().replayChildren(true).build())
    -                        .build());
    -        when(executionManager.hasOperationsForContext("1")).thenReturn(false);
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var operation = createOperation(ctx -> {
    -            functionCalled.set(true);
    -            return "reconstructed-value";
    -        });
    -
    -        operation.execute();
    -
    -        // Give the executor thread time to run
    -        Thread.sleep(100);
    -        assertTrue(functionCalled.get(), "Function should be re-executed for replayChildren path");
    -    }
    -
    -    // ===== Non-deterministic detection =====
    -
    -    /** Type mismatch during replay terminates execution. */
    -    @Test
    -    void replayWithTypeMismatchTerminatesExecution() {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("test-context")
    -                        .type(OperationType.STEP) // Wrong type β€” should be CONTEXT
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .build());
    -
    -        var operation = createOperation(ctx -> "unused");
    -
    -        assertThrows(NonDeterministicExecutionException.class, operation::execute);
    -    }
    -
    -    /** Name mismatch during replay terminates execution. */
    -    @Test
    -    void replayWithNameMismatchTerminatesExecution() {
    -        when(executionManager.getOperationAndUpdateReplayState("1"))
    -                .thenReturn(Operation.builder()
    -                        .id("1")
    -                        .name("different-name") // Wrong name
    -                        .type(OperationType.CONTEXT)
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"value\"").build())
    -                        .build());
    -
    -        var operation = createOperation(ctx -> "unused");
    -
    -        assertThrows(NonDeterministicExecutionException.class, operation::execute);
    -    }
    -
    -    // ===== Parent ConcurrencyOperation support =====
    -
    -    /** Child skips success checkpoint when parent operation has already completed. */
    -    @Test
    -    void childSkipsSuccessCheckpointWhenParentAlreadyCompleted() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState("1")).thenReturn(null);
    -
    -        var parent = mock(ConcurrencyOperation.class);
    -        when(parent.isOperationCompleted()).thenReturn(true);
    -
    -        var operation = createOperationWithParent(ctx -> "result", parent);
    -        operation.execute();
    -        Thread.sleep(200);
    -
    -        // sendOperationUpdate should only be called once for START, not for SUCCEED
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -    }
    -
    -    /** Child skips failure checkpoint when parent operation has already completed. */
    -    @Test
    -    void childSkipsFailureCheckpointWhenParentAlreadyCompleted() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState("1")).thenReturn(null);
    -
    -        var parent = mock(ConcurrencyOperation.class);
    -        when(parent.isOperationCompleted()).thenReturn(true);
    -
    -        var operation = createOperationWithParent(
    -                ctx -> {
    -                    throw new RuntimeException("branch failed");
    -                },
    -                parent);
    -        operation.execute();
    -        Thread.sleep(200);
    -
    -        // sendOperationUpdate should not be called with FAIL action
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.FAIL));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/ConcurrencyOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/ConcurrencyOperationTest.java
    deleted file mode 100644
    index a81ad22b5..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/ConcurrencyOperationTest.java
    +++ /dev/null
    @@ -1,266 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.ArgumentMatchers.any;
    -import static org.mockito.ArgumentMatchers.anyString;
    -import static org.mockito.Mockito.*;
    -
    -import java.lang.reflect.Field;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.Executors;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import java.util.concurrent.atomic.AtomicInteger;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ContextDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.OperationIdGenerator;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class ConcurrencyOperationTest {
    -
    -    private static final SerDes SER_DES = new JacksonSerDes();
    -    private static final String OPERATION_ID = "op-1";
    -    private static final String CHILD_OP_1 = TestUtils.hashOperationId(OPERATION_ID + "-1");
    -    private static final String CHILD_OP_2 = TestUtils.hashOperationId(OPERATION_ID + "-2");
    -    private static final TypeToken<Void> RESULT_TYPE = TypeToken.get(Void.class);
    -
    -    private DurableContextImpl durableContext;
    -    private DurableContextImpl childContext;
    -    private ExecutionManager executionManager;
    -
    -    @BeforeEach
    -    void setUp() {
    -        durableContext = mock(DurableContextImpl.class);
    -        executionManager = mock(ExecutionManager.class);
    -
    -        var childContext = mock(DurableContextImpl.class);
    -        this.childContext = childContext;
    -        when(childContext.getExecutionManager()).thenReturn(executionManager);
    -        when(childContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(durableContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -        when(durableContext.createChildContext(anyString(), anyString())).thenReturn(childContext);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("Root", ThreadType.CONTEXT));
    -        // All child operations are NOT in replay
    -        when(executionManager.getOperationAndUpdateReplayState(anyString())).thenReturn(null);
    -        // Simulate the real backend: the parent concurrency operation is available in storage after completion
    -        // so that waitForOperationCompletion() can find it. TestConcurrencyOperation.handleSuccess/Failure are no-ops
    -        // (no checkpoint sent), so we stub this unconditionally for OPERATION_ID.
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name("test-concurrency")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .build());
    -        when(executionManager.sendOperationUpdate(any())).thenReturn(CompletableFuture.completedFuture(null));
    -    }
    -
    -    private TestConcurrencyOperation createOperation(CompletionConfig completionConfig) throws Exception {
    -        return new TestConcurrencyOperation(
    -                OperationIdentifier.of(
    -                        OPERATION_ID, "test-concurrency", OperationType.CONTEXT, OperationSubType.PARALLEL),
    -                RESULT_TYPE,
    -                SER_DES,
    -                durableContext,
    -                Integer.MAX_VALUE,
    -                completionConfig);
    -    }
    -
    -    private void setOperationIdGenerator(ConcurrencyOperation<?> op, OperationIdGenerator mockGenerator)
    -            throws Exception {
    -        Field field = ConcurrencyOperation.class.getDeclaredField("operationIdGenerator");
    -        field.setAccessible(true);
    -        field.set(op, mockGenerator);
    -    }
    -
    -    // ===== Callback cycle tests =====
    -
    -    @Test
    -    void allChildrenAlreadySucceed_callsHandleSuccess() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"result-1\"").build())
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_2))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_2)
    -                        .name("branch-2")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"result-2\"").build())
    -                        .build());
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -        op.execute();
    -        op.enqueueItem(
    -                "branch-1",
    -                ctx1 -> {
    -                    functionCalled.set(true);
    -                    return "result-1";
    -                },
    -                TypeToken.get(String.class),
    -                SER_DES,
    -                OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem(
    -                "branch-2",
    -                ctx -> {
    -                    functionCalled.set(true);
    -                    return "result-2";
    -                },
    -                TypeToken.get(String.class),
    -                SER_DES,
    -                OperationSubType.PARALLEL_BRANCH);
    -
    -        op.exposedJoin();
    -
    -        assertTrue(op.isSuccessHandled());
    -        assertFalse(op.isFailureHandled());
    -        var items = op.getBranches();
    -        assertEquals(2, items.size());
    -        assertTrue(items.stream().allMatch(b -> b.getOperation().status().equals(OperationStatus.SUCCEEDED)));
    -        assertFalse(functionCalled.get(), "Functions should not be called during SUCCEEDED replay");
    -    }
    -
    -    @Test
    -    void singleChildAlreadySucceeds_fullCycle() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("only-branch")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"done\"").build())
    -                        .build());
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var op = createOperation(CompletionConfig.minSuccessful(1));
    -        op.enqueueItem(
    -                "only-branch",
    -                ctx -> {
    -                    functionCalled.set(true);
    -                    return "done";
    -                },
    -                TypeToken.get(String.class),
    -                SER_DES,
    -                OperationSubType.PARALLEL_BRANCH);
    -
    -        op.execute();
    -        op.exposedJoin();
    -
    -        assertTrue(op.isSuccessHandled());
    -        var items = op.getBranches();
    -        assertEquals(1, items.size());
    -        assertEquals(OperationStatus.SUCCEEDED, items.get(0).getOperation().status());
    -        assertFalse(functionCalled.get(), "Function should not be called during SUCCEEDED replay");
    -    }
    -
    -    // ===== Test subclass =====
    -
    -    static class TestConcurrencyOperation extends ConcurrencyOperation<Void> {
    -
    -        private boolean successHandled = false;
    -        private boolean failureHandled = false;
    -        private final AtomicInteger executingCount = new AtomicInteger(0);
    -        private DurableContextImpl lastParentContext;
    -
    -        TestConcurrencyOperation(
    -                OperationIdentifier operationIdentifier,
    -                TypeToken<Void> resultTypeToken,
    -                SerDes resultSerDes,
    -                DurableContextImpl durableContext,
    -                int maxConcurrency,
    -                CompletionConfig completionConfig) {
    -            super(
    -                    operationIdentifier,
    -                    resultTypeToken,
    -                    resultSerDes,
    -                    durableContext,
    -                    maxConcurrency,
    -                    completionConfig.minSuccessful(),
    -                    completionConfig.toleratedFailureCount());
    -        }
    -
    -        @Override
    -        protected void handleCompletion(ConcurrencyCompletionStatus completionStatus) {
    -            successHandled = true;
    -            // Simulate the checkpoint ACK that a real subclass would receive after sendOperationUpdate.
    -            // This drives completionFuture to completion so waitForOperationCompletion() unblocks.
    -            onCheckpointComplete(Operation.builder()
    -                    .id(getOperationId())
    -                    .status(OperationStatus.SUCCEEDED)
    -                    .build());
    -        }
    -
    -        @Override
    -        protected void start() {
    -            executeItems();
    -        }
    -
    -        @Override
    -        protected void replay(Operation existing) {
    -            executeItems();
    -        }
    -
    -        @Override
    -        public Void get() {
    -            return null;
    -        }
    -
    -        void exposedJoin() {
    -            join();
    -        }
    -
    -        int getExecutingCount() {
    -            return executingCount.get();
    -        }
    -
    -        boolean isSuccessHandled() {
    -            return successHandled;
    -        }
    -
    -        boolean isFailureHandled() {
    -            return failureHandled;
    -        }
    -
    -        DurableContextImpl getLastParentContext() {
    -            return lastParentContext;
    -        }
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/InvokeOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/InvokeOperationTest.java
    deleted file mode 100644
    index daa75056c..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/InvokeOperationTest.java
    +++ /dev/null
    @@ -1,192 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.when;
    -
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.InvokeConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.InvokeException;
    -import software.amazon.lambda.durable.exception.InvokeFailedException;
    -import software.amazon.lambda.durable.exception.InvokeStoppedException;
    -import software.amazon.lambda.durable.exception.InvokeTimedOutException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class InvokeOperationTest {
    -    private static final String OPERATION_ID = "2";
    -    private static final String OPERATION_NAME = "test-invoke";
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of(OPERATION_ID, OPERATION_NAME, OperationType.CHAINED_INVOKE);
    -
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        executionManager = mock(ExecutionManager.class);
    -        durableContext = mock(DurableContextImpl.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("root", ThreadType.CONTEXT));
    -    }
    -
    -    @Test
    -    void getDoesNotThrowWhenCalledFromHandlerContext() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.SUCCEEDED)
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                        .result("\"cached-result\"")
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new InvokeOperation<>(
    -                OPERATION_IDENTIFIER,
    -                "test-function",
    -                "{}",
    -                TypeToken.get(String.class),
    -                InvokeConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        var result = operation.get();
    -        assertEquals("cached-result", result);
    -    }
    -
    -    @Test
    -    void getInvokeFailedExceptionWhenInvocationFailed() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.FAILED)
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("errorType")
    -                                .errorMessage("errorMessage")
    -                                .errorData("errorData")
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new InvokeOperation<>(
    -                OPERATION_IDENTIFIER,
    -                "test-function",
    -                "{}",
    -                TypeToken.get(String.class),
    -                InvokeConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        InvokeFailedException ex = assertThrows(InvokeFailedException.class, () -> operation.get());
    -        assertEquals("errorData", ex.getErrorObject().errorData());
    -        assertEquals("errorType", ex.getErrorObject().errorType());
    -        assertEquals("errorMessage", ex.getMessage());
    -    }
    -
    -    @Test
    -    void getInvokeTimedOutExceptionWhenInvocationTimedOut() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.TIMED_OUT)
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("errorType")
    -                                .errorMessage("errorMessage")
    -                                .errorData("errorData")
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new InvokeOperation<>(
    -                OPERATION_IDENTIFIER,
    -                "test-function",
    -                "{}",
    -                TypeToken.get(String.class),
    -                InvokeConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        InvokeTimedOutException ex = assertThrows(InvokeTimedOutException.class, () -> operation.get());
    -        assertEquals("errorData", ex.getErrorObject().errorData());
    -        assertEquals("errorType", ex.getErrorObject().errorType());
    -        assertEquals("errorMessage", ex.getMessage());
    -    }
    -
    -    @Test
    -    void getInvokeStoppedExceptionWhenInvocationTimedOut() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.STOPPED)
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("errorType")
    -                                .errorMessage("errorMessage")
    -                                .errorData("errorData")
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new InvokeOperation<>(
    -                OPERATION_IDENTIFIER,
    -                "test-function",
    -                "{}",
    -                TypeToken.get(String.class),
    -                InvokeConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        InvokeStoppedException ex = assertThrows(InvokeStoppedException.class, () -> operation.get());
    -        assertEquals("errorData", ex.getErrorObject().errorData());
    -        assertEquals("errorType", ex.getErrorObject().errorType());
    -        assertEquals("errorMessage", ex.getMessage());
    -    }
    -
    -    @Test
    -    void getInvokeFailedExceptionWhenInvocationEndedUnexpectedly() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.CANCELLED)
    -                .chainedInvokeDetails(ChainedInvokeDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("errorType")
    -                                .errorMessage("errorMessage")
    -                                .errorData("errorData")
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new InvokeOperation<>(
    -                OPERATION_IDENTIFIER,
    -                "test-function",
    -                "{}",
    -                TypeToken.get(String.class),
    -                InvokeConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        assertThrows(InvokeException.class, () -> operation.get());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/ParallelOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/ParallelOperationTest.java
    deleted file mode 100644
    index 4aa32d60c..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/ParallelOperationTest.java
    +++ /dev/null
    @@ -1,445 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.ArgumentMatchers.any;
    -import static org.mockito.ArgumentMatchers.anyString;
    -import static org.mockito.ArgumentMatchers.argThat;
    -import static org.mockito.Mockito.*;
    -
    -import java.lang.reflect.Field;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.ConcurrentHashMap;
    -import java.util.concurrent.Executors;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ContextDetails;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationAction;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TestUtils;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.CompletionConfig;
    -import software.amazon.lambda.durable.config.ParallelConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.OperationIdGenerator;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.ConcurrencyCompletionStatus;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.model.OperationSubType;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class ParallelOperationTest {
    -
    -    private static final SerDes SER_DES = new JacksonSerDes();
    -    private static final String OPERATION_ID = "parallel-op-1";
    -    private static final String CHILD_OP_1 = TestUtils.hashOperationId(OPERATION_ID + "-1");
    -    private static final String CHILD_OP_2 = TestUtils.hashOperationId(OPERATION_ID + "-2");
    -
    -    private DurableContextImpl durableContext;
    -    private ExecutionManager executionManager;
    -    // Thread-safe backing store for getOperationAndUpdateReplayState.
    -    // Tests pre-populate this; doAnswer writes here before firing onCheckpointComplete,
    -    // guaranteeing visibility to any thread that reads after the future unblocks.
    -    private ConcurrentHashMap<String, Operation> operationStore;
    -
    -    @BeforeEach
    -    void setUp() {
    -        durableContext = mock(DurableContextImpl.class);
    -        executionManager = mock(ExecutionManager.class);
    -        operationStore = new ConcurrentHashMap<>();
    -
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext(null, ThreadType.CONTEXT));
    -        // Delegate to operationStore so all reads see the latest write, regardless of thread.
    -        when(executionManager.getOperationAndUpdateReplayState(anyString()))
    -                .thenAnswer(inv -> operationStore.get(inv.getArgument(0)));
    -
    -        var childContext = mock(DurableContextImpl.class);
    -        when(childContext.getExecutionManager()).thenReturn(executionManager);
    -        when(childContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(durableContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -        when(durableContext.createChildContext(anyString(), anyString())).thenReturn(childContext);
    -
    -        // Capture registered operations so we can drive onCheckpointComplete callbacks.
    -        var registeredOps = new ConcurrentHashMap<String, BaseDurableOperation>();
    -        doAnswer(inv -> {
    -                    BaseDurableOperation op = inv.getArgument(0);
    -                    registeredOps.put(op.getOperationId(), op);
    -                    return null;
    -                })
    -                .when(executionManager)
    -                .registerOperation(any());
    -
    -        // Simulate the real backend for all sendOperationUpdate calls.
    -        // For SUCCEED on the parallel op: write to operationStore first (establishes happens-before
    -        // via ConcurrentHashMap's volatile semantics), then fire onCheckpointComplete to unblock join().
    -        // This ordering guarantees getOperationAndUpdateReplayState() never returns null after unblocking.
    -        var succeededParallelOp = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name("test-parallel")
    -                .type(OperationType.CONTEXT)
    -                .subType(OperationSubType.PARALLEL.getValue())
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -        doAnswer(inv -> {
    -                    var update = (OperationUpdate) inv.getArgument(0);
    -
    -                    if (OPERATION_ID.equals(update.id()) && update.action() == OperationAction.SUCCEED) {
    -                        // Write before completing the future β€” ConcurrentHashMap guarantees visibility.
    -                        operationStore.put(OPERATION_ID, succeededParallelOp);
    -                        var op = registeredOps.get(OPERATION_ID);
    -                        if (op != null) {
    -                            op.onCheckpointComplete(succeededParallelOp);
    -                        }
    -                    }
    -                    return CompletableFuture.completedFuture(null);
    -                })
    -                .when(executionManager)
    -                .sendOperationUpdate(any());
    -    }
    -
    -    private ParallelOperation createOperation(CompletionConfig completionConfig) {
    -        var op = new ParallelOperation(
    -                OperationIdentifier.of(OPERATION_ID, "test-parallel", OperationType.CONTEXT, OperationSubType.PARALLEL),
    -                SER_DES,
    -                durableContext,
    -                ParallelConfig.builder().completionConfig(completionConfig).build());
    -
    -        op.execute();
    -        return op;
    -    }
    -
    -    private void setOperationIdGenerator(ConcurrencyOperation<?> op, OperationIdGenerator mockGenerator)
    -            throws Exception {
    -        Field field = ConcurrencyOperation.class.getDeclaredField("operationIdGenerator");
    -        field.setAccessible(true);
    -        field.set(op, mockGenerator);
    -    }
    -
    -    // ===== Branch creation delegates to ConcurrencyOperation =====
    -
    -    @Test
    -    void branchCreation_createsBranchWithParallelBranchSubType() {
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -
    -        var childOp = op.enqueueItem(
    -                "branch-1", ctx -> "result", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        assertNotNull(childOp);
    -        assertEquals(OperationSubType.PARALLEL_BRANCH, childOp.getSubType());
    -    }
    -
    -    @Test
    -    void branchCreation_multipleBranchesAllCreated() {
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -
    -        op.enqueueItem(
    -                "branch-1", ctx2 -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem(
    -                "branch-2", ctx1 -> "r2", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem("branch-3", ctx -> "r3", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        assertEquals(3, op.getBranches().size());
    -    }
    -
    -    @Test
    -    void branchCreation_childOperationHasParentReference() throws Exception {
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -
    -        // The child operation should be a ChildContextOperation with this op as parent
    -        var childOp = op.enqueueItem(
    -                "branch-1", ctx -> "result", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        assertNotNull(childOp);
    -        // Verify it's a ChildContextOperation (the concrete type returned by createItem)
    -        assertInstanceOf(ChildContextOperation.class, childOp);
    -    }
    -
    -    // ===== All branches succeed =====
    -
    -    @Test
    -    void allBranchesSucceed_sendsSucceedCheckpointAndReturnsCorrectResult() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r1\"").build())
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_2))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_2)
    -                        .name("branch-2")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r2\"").build())
    -                        .build());
    -
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -        op.enqueueItem(
    -                "branch-1", ctx1 -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem("branch-2", ctx -> "r2", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = op.get();
    -
    -        verify(executionManager).sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        assertEquals(2, result.size());
    -        assertEquals(2, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -        assertTrue(result.completionStatus().isSucceeded());
    -    }
    -
    -    // ===== MinSuccessful satisfaction =====
    -
    -    @Test
    -    void minSuccessful_completesWhenThresholdMetAndReturnsResult() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r1\"").build())
    -                        .build());
    -
    -        var op = createOperation(CompletionConfig.minSuccessful(1));
    -        op.enqueueItem("branch-1", ctx -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = op.get();
    -
    -        verify(executionManager).sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        assertEquals(1, result.size());
    -        assertEquals(1, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.MIN_SUCCESSFUL_REACHED, result.completionStatus());
    -        assertTrue(result.completionStatus().isSucceeded());
    -    }
    -
    -    // ===== Context hierarchy =====
    -
    -    @Test
    -    void contextHierarchy_branchesUseParallelContextAsParent() throws Exception {
    -        // Verify that branches are created with the parallel operation's context (durableContext)
    -        // as their parent β€” not some other context
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -
    -        var childOp = op.enqueueItem(
    -                "branch-1", ctx -> "result", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        // The child operation should be registered in the execution manager
    -        // (BaseDurableOperation constructor calls executionManager.registerOperation)
    -        verify(executionManager, atLeastOnce()).registerOperation(any());
    -        assertNotNull(childOp);
    -    }
    -
    -    // ===== Replay =====
    -
    -    @Test
    -    void replay_fromStartedState_sendsSucceedCheckpointAndReturnsResult() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name("test-parallel")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL.getValue())
    -                        .status(OperationStatus.STARTED)
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r1\"").build())
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_2))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_2)
    -                        .name("branch-2")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r2\"").build())
    -                        .build());
    -
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -        op.enqueueItem(
    -                "branch-1", ctx1 -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem("branch-2", ctx -> "r2", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = op.get();
    -
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.START));
    -        verify(executionManager, times(1))
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        assertEquals(2, result.size());
    -        assertEquals(2, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -    }
    -
    -    @Test
    -    void replay_fromSucceededState_skipsCheckpointAndReturnsResult() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name("test-parallel")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r1\"").build())
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_2))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_2)
    -                        .name("branch-2")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r2\"").build())
    -                        .build());
    -
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -        op.enqueueItem(
    -                "branch-1", ctx1 -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem("branch-2", ctx -> "r2", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = op.get();
    -
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.START));
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        assertEquals(2, result.size());
    -        assertEquals(2, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -    }
    -
    -    // ===== Branch failure sends SUCCEED checkpoint and returns result =====
    -
    -    @Test
    -    void branchFailure_sendsSucceedCheckpointAndReturnsFailureCounts() {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.FAILED)
    -                        .build());
    -
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -        op.enqueueItem(
    -                "branch-1",
    -                ctx -> {
    -                    throw new RuntimeException("branch failed");
    -                },
    -                TypeToken.get(String.class),
    -                SER_DES,
    -                OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = assertDoesNotThrow(op::get);
    -
    -        verify(executionManager).sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        verify(executionManager, never())
    -                .sendOperationUpdate(argThat(update -> update.action() == OperationAction.FAIL));
    -        assertEquals(1, result.size());
    -        assertEquals(0, result.succeeded());
    -        assertEquals(1, result.failed());
    -        assertFalse(result.completionStatus().isSucceeded());
    -    }
    -
    -    @Test
    -    void get_someBranchesFail_returnsCorrectCountsAndFailureStatus() throws Exception {
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_1))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_1)
    -                        .name("branch-1")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .contextDetails(
    -                                ContextDetails.builder().result("\"r1\"").build())
    -                        .build());
    -        when(executionManager.getOperationAndUpdateReplayState(CHILD_OP_2))
    -                .thenReturn(Operation.builder()
    -                        .id(CHILD_OP_2)
    -                        .name("branch-2")
    -                        .type(OperationType.CONTEXT)
    -                        .subType(OperationSubType.PARALLEL_BRANCH.getValue())
    -                        .status(OperationStatus.FAILED)
    -                        .build());
    -
    -        // toleratedFailureCount=1 so the operation completes after both branches finish
    -        var op = createOperation(CompletionConfig.toleratedFailureCount(1));
    -        op.enqueueItem(
    -                "branch-1", ctx1 -> "r1", TypeToken.get(String.class), SER_DES, OperationSubType.PARALLEL_BRANCH);
    -        op.enqueueItem(
    -                "branch-2",
    -                ctx -> {
    -                    throw new RuntimeException("branch failed");
    -                },
    -                TypeToken.get(String.class),
    -                SER_DES,
    -                OperationSubType.PARALLEL_BRANCH);
    -
    -        var result = op.get();
    -
    -        verify(executionManager).sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -        assertEquals(2, result.size());
    -        assertEquals(1, result.succeeded());
    -        assertEquals(1, result.failed());
    -        assertTrue(result.completionStatus().isSucceeded());
    -    }
    -
    -    @Test
    -    void get_zeroBranches_returnsAllZerosAndAllCompletedStatus() throws Exception {
    -        var op = createOperation(CompletionConfig.allSuccessful());
    -
    -        var result = op.get();
    -
    -        assertEquals(0, result.size());
    -        assertEquals(0, result.succeeded());
    -        assertEquals(0, result.failed());
    -        assertEquals(ConcurrencyCompletionStatus.ALL_COMPLETED, result.completionStatus());
    -        verify(executionManager).sendOperationUpdate(argThat(update -> update.action() == OperationAction.SUCCEED));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/SerializableDurableOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/SerializableDurableOperationTest.java
    deleted file mode 100644
    index 6ae8cc890..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/SerializableDurableOperationTest.java
    +++ /dev/null
    @@ -1,387 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertInstanceOf;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -import static org.junit.jupiter.api.Assertions.fail;
    -import static org.mockito.ArgumentMatchers.any;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.never;
    -import static org.mockito.Mockito.times;
    -import static org.mockito.Mockito.verify;
    -import static org.mockito.Mockito.when;
    -
    -import java.util.concurrent.ExecutionException;
    -import java.util.concurrent.ExecutorService;
    -import java.util.concurrent.Executors;
    -import java.util.concurrent.TimeUnit;
    -import java.util.concurrent.TimeoutException;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.OperationUpdate;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
    -import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -import software.amazon.lambda.durable.serde.SerDes;
    -
    -class SerializableDurableOperationTest {
    -
    -    private static final String OPERATION_ID = "1";
    -    private static final String CONTEXT_ID = "1-step";
    -    private static final String OPERATION_NAME = "name";
    -    private static final Operation OPERATION = Operation.builder().build();
    -    private static final OperationType OPERATION_TYPE = OperationType.STEP;
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of(OPERATION_ID, OPERATION_NAME, OPERATION_TYPE);
    -    private static final TypeToken<String> RESULT_TYPE = TypeToken.get(String.class);
    -    private static final SerDes SER_DES = new JacksonSerDes();
    -    private static final String RESULT = "name";
    -    private final ExecutorService internalExecutor = Executors.newFixedThreadPool(2);
    -
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        executionManager = mock(ExecutionManager.class);
    -        durableContext = mock(DurableContextImpl.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext(CONTEXT_ID, ThreadType.CONTEXT));
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(OPERATION);
    -    }
    -
    -    @Test
    -    void getOperation() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        assertEquals(OPERATION_ID, op.getOperationId());
    -        assertEquals(OPERATION_NAME, op.getName());
    -        assertEquals(OPERATION_TYPE, op.getType());
    -        assertEquals(RESULT, op.get());
    -        assertEquals(OPERATION, op.getOperation());
    -    }
    -
    -    @Test
    -    void waitForOperationCompletionThrowsIfOperationMissing() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(null);
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        markAlreadyCompleted();
    -                        assertThrows(IllegalDurableOperationException.class, this::waitForOperationCompletion);
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.execute();
    -        verify(executionManager).terminateExecution(any(IllegalDurableOperationException.class));
    -    }
    -
    -    @Test
    -    void waitForOperationCompletionWhenRunningAndReadyToComplete()
    -            throws InterruptedException, ExecutionException, TimeoutException {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        waitForOperationCompletion();
    -                        return RESULT;
    -                    }
    -                };
    -
    -        // call get in a separate thread which will be blocked
    -        var future = internalExecutor.submit(op::get);
    -        // wait for execute to be blocked by the completionFuture and then feed the completion event
    -        try {
    -            future.get(500, TimeUnit.MILLISECONDS);
    -            fail();
    -        } catch (TimeoutException e) {
    -            op.onCheckpointComplete(
    -                    Operation.builder().status(OperationStatus.SUCCEEDED).build());
    -            assertEquals(RESULT, future.get());
    -            verify(executionManager).deregisterActiveThread(CONTEXT_ID);
    -            verify(executionManager).registerActiveThread(CONTEXT_ID);
    -        }
    -    }
    -
    -    @Test
    -    void waitForOperationCompletionWhenAlreadyCompleted() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        markAlreadyCompleted();
    -                        waitForOperationCompletion();
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.execute();
    -        verify(executionManager, never()).deregisterActiveThread(CONTEXT_ID);
    -        verify(executionManager, never()).registerActiveThread(CONTEXT_ID);
    -    }
    -
    -    @Test
    -    void markAlreadyCompleted() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        markAlreadyCompleted();
    -                        // completion future should be complete
    -                        assertTrue(this.isOperationCompleted());
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.execute();
    -    }
    -
    -    @Test
    -    void validateReplayThrowsWhenTypeMismatch() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(
    -                        Operation.builder().type(OperationType.CHAINED_INVOKE).build());
    -
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        validateReplay(getOperation());
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        assertThrows(NonDeterministicExecutionException.class, op::execute);
    -    }
    -
    -    @Test
    -    void validateReplayThrowsWhenNameMismatch() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .name("another name")
    -                        .type(OPERATION_TYPE)
    -                        .build());
    -
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        validateReplay(getOperation());
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        assertThrows(NonDeterministicExecutionException.class, op::execute);
    -    }
    -
    -    @Test
    -    void validateReplayDoesNotThrowWhenNoOperation() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(null);
    -
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        validateReplay(getOperation());
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -        op.execute();
    -    }
    -
    -    @Test
    -    void validateReplayDoesNotThrowWhenNameAndTypeMatch() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .name(OPERATION_NAME)
    -                        .type(OPERATION_TYPE)
    -                        .build());
    -
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {
    -                        validateReplay(getOperation());
    -                    }
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -        op.execute();
    -    }
    -
    -    @Test
    -    void deserializeResult() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        assertEquals("abc", deserializeResult(serializeResult("abc")));
    -                        assertEquals("", deserializeResult("\"\""));
    -                        assertThrows(SerDesException.class, () -> deserializeResult("x"));
    -                        return RESULT;
    -                    }
    -                };
    -        op.get();
    -    }
    -
    -    @Test
    -    void deserializeException() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {}
    -
    -                    @Override
    -                    public String get() {
    -                        assertNull(deserializeException(ErrorObject.builder().build()));
    -                        assertNull(deserializeException(ErrorObject.builder()
    -                                .errorType("UnknownExceptionType")
    -                                .build()));
    -                        Throwable ex = deserializeException(serializeException(new RuntimeException("test exception")));
    -                        assertInstanceOf(RuntimeException.class, ex);
    -                        assertEquals("test exception", ex.getMessage());
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.get();
    -    }
    -
    -    @Test
    -    void polling() {
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {
    -                        pollForOperationUpdates();
    -                    }
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.execute();
    -        verify(executionManager).pollForOperationUpdates(OPERATION_ID);
    -    }
    -
    -    @Test
    -    void sendOperationUpdate() {
    -        var update = OperationUpdate.builder();
    -
    -        SerializableDurableOperation<String> op =
    -                new SerializableDurableOperation<>(OPERATION_IDENTIFIER, RESULT_TYPE, SER_DES, durableContext) {
    -                    @Override
    -                    protected void start() {}
    -
    -                    @Override
    -                    protected void replay(Operation existing) {
    -                        sendOperationUpdate(update);
    -                    }
    -
    -                    @Override
    -                    public String get() {
    -                        return RESULT;
    -                    }
    -                };
    -
    -        op.execute();
    -        verify(executionManager, times(1)).sendOperationUpdate(update.build());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/StepOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/StepOperationTest.java
    deleted file mode 100644
    index 2eae32f0c..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/StepOperationTest.java
    +++ /dev/null
    @@ -1,247 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.util.List;
    -import java.util.concurrent.Executors;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.StepConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.StepFailedException;
    -import software.amazon.lambda.durable.exception.StepInterruptedException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class StepOperationTest {
    -
    -    private static final String OPERATION_ID = "1";
    -    private static final String OPERATION_NAME = "test-step";
    -    private static final String RESULT = "result";
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of(OPERATION_ID, OPERATION_NAME, OperationType.STEP);
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        executionManager = mock(ExecutionManager.class);
    -        durableContext = mock(DurableContextImpl.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("handler", ThreadType.CONTEXT));
    -        when(durableContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -    }
    -
    -    private void mockFailedOperation(
    -            ExecutionManager executionManager,
    -            String errorType,
    -            String errorMessage,
    -            String errorData,
    -            List<String> stackTrace) {
    -        var operation = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.FAILED)
    -                .stepDetails(StepDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType(errorType)
    -                                .errorMessage(errorMessage)
    -                                .errorData(errorData)
    -                                .stackTrace(stackTrace)
    -                                .build())
    -                        .build())
    -                .build();
    -
    -        when(executionManager.getOperationAndUpdateReplayState("1")).thenReturn(operation);
    -    }
    -
    -    @Test
    -    void getDoesNotThrowWhenCalledFromHandlerContext() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("\"cached-result\"").build())
    -                .build();
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("handler", ThreadType.CONTEXT));
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        var result = operation.get();
    -        assertEquals("cached-result", result);
    -    }
    -
    -    @Test
    -    void getThrowsOriginalExceptionWhenClassIsAvailable() {
    -        var serDes = new JacksonSerDes();
    -        var originalException = new IllegalArgumentException("Invalid input");
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        mockFailedOperation(
    -                executionManager,
    -                "java.lang.IllegalArgumentException",
    -                "Invalid input",
    -                serDes.serialize(originalException),
    -                stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(IllegalArgumentException.class, operation::get);
    -        assertEquals("Invalid input", thrown.getMessage());
    -        assertEquals("com.example.Test", thrown.getStackTrace()[0].getClassName());
    -        assertEquals("method", thrown.getStackTrace()[0].getMethodName());
    -        assertEquals(42, thrown.getStackTrace()[0].getLineNumber());
    -    }
    -
    -    @Test
    -    void getThrowsOriginalCustomExceptionWhenClassIsAvailable() {
    -        var serDes = new JacksonSerDes();
    -        var originalException = new CustomTestException("Custom error");
    -        var stackTrace = List.of("com.example.Handler|process|Handler.java|100");
    -
    -        mockFailedOperation(
    -                executionManager,
    -                CustomTestException.class.getName(),
    -                "Custom error",
    -                serDes.serialize(originalException),
    -                stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(serDes).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(CustomTestException.class, operation::get);
    -        assertEquals("Custom error", thrown.getMessage());
    -        assertEquals("com.example.Handler", thrown.getStackTrace()[0].getClassName());
    -    }
    -
    -    @Test
    -    void getFallsBackToStepFailedExceptionWhenClassNotFound() {
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        mockFailedOperation(executionManager, "NonExistentException", "This class doesn't exist", "{}", stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(StepFailedException.class, operation::get);
    -        assertTrue(thrown.getMessage().contains("NonExistentException"));
    -        assertTrue(thrown.getMessage().contains("This class doesn't exist"));
    -        assertEquals("com.example.Test", thrown.getStackTrace()[0].getClassName());
    -    }
    -
    -    @Test
    -    void getFallsBackToStepFailedExceptionWhenDeserializationFails() {
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        mockFailedOperation(
    -                executionManager,
    -                IllegalArgumentException.class.getName(),
    -                "Invalid input",
    -                "invalid-json-{{{",
    -                stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(StepFailedException.class, operation::get);
    -        assertTrue(thrown.getMessage().contains("IllegalArgumentException"));
    -        assertTrue(thrown.getMessage().contains("Invalid input"));
    -    }
    -
    -    @Test
    -    void getFallsBackToStepFailedExceptionWhenErrorDataIsNull() {
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        mockFailedOperation(
    -                executionManager, RuntimeException.class.getName(), "Something went wrong", null, stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(StepFailedException.class, operation::get);
    -        assertTrue(thrown.getMessage().contains("RuntimeException"));
    -        assertTrue(thrown.getMessage().contains("Something went wrong"));
    -    }
    -
    -    @Test
    -    void getThrowsStepInterruptedExceptionDirectly() {
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        mockFailedOperation(
    -                executionManager, StepInterruptedException.class.getName(), "Step was interrupted", null, stackTrace);
    -
    -        var operation = new StepOperation<>(
    -                OPERATION_IDENTIFIER,
    -                (ctx) -> RESULT,
    -                TypeToken.get(String.class),
    -                StepConfig.builder().serDes(new JacksonSerDes()).build(),
    -                durableContext);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(StepInterruptedException.class, operation::get);
    -        assertEquals(OPERATION_ID, thrown.getOperation().id());
    -        assertEquals(OPERATION_NAME, thrown.getOperation().name());
    -    }
    -
    -    // Custom exception for testing
    -    public static class CustomTestException extends RuntimeException {
    -        public CustomTestException(String message) {
    -            super(message);
    -        }
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitForConditionOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitForConditionOperationTest.java
    deleted file mode 100644
    index 7705b0a17..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitForConditionOperationTest.java
    +++ /dev/null
    @@ -1,386 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -import static org.mockito.Mockito.*;
    -
    -import java.util.List;
    -import java.util.concurrent.CompletableFuture;
    -import java.util.concurrent.Executors;
    -import java.util.concurrent.atomic.AtomicBoolean;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.StepDetails;
    -import software.amazon.lambda.durable.DurableConfig;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.config.WaitForConditionConfig;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.exception.IllegalDurableOperationException;
    -import software.amazon.lambda.durable.exception.NonDeterministicExecutionException;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.WaitForConditionResult;
    -import software.amazon.lambda.durable.serde.JacksonSerDes;
    -
    -class WaitForConditionOperationTest {
    -
    -    private static final String OPERATION_ID = "1";
    -    private static final String OPERATION_NAME = "test-wait-for-condition";
    -    private static final JacksonSerDes SERDES = new JacksonSerDes();
    -
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        executionManager = mock(ExecutionManager.class);
    -        durableContext = mock(DurableContextImpl.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext("handler", ThreadType.CONTEXT));
    -        when(durableContext.getDurableConfig())
    -                .thenReturn(DurableConfig.builder()
    -                        .withExecutorService(Executors.newCachedThreadPool())
    -                        .build());
    -    }
    -
    -    private WaitForConditionOperation<Integer> createOperation(
    -            java.util.function.BiFunction<
    -                            Integer, software.amazon.lambda.durable.StepContext, WaitForConditionResult<Integer>>
    -                    checkFunc,
    -            WaitForConditionConfig<Integer> config) {
    -        return new WaitForConditionOperation<>(
    -                OPERATION_ID, OPERATION_NAME, checkFunc, TypeToken.get(Integer.class), config, durableContext);
    -    }
    -
    -    // ===== Replay SUCCEEDED =====
    -
    -    @Test
    -    void replaySucceededReturnsCachedResult() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.SUCCEEDED)
    -                .stepDetails(StepDetails.builder().result("42").build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation(
    -                (state, ctx) -> {
    -                    functionCalled.set(true);
    -                    return WaitForConditionResult.stopPolling(state);
    -                },
    -                config);
    -
    -        operation.execute();
    -
    -        var result = operation.get();
    -        assertEquals(42, result);
    -        assertFalse(functionCalled.get(), "Check function should not be called during SUCCEEDED replay");
    -    }
    -
    -    // ===== Replay FAILED =====
    -
    -    @Test
    -    void replayFailedThrowsOriginalException() {
    -        var originalException = new IllegalArgumentException("bad state");
    -        var stackTrace = List.of("com.example.Test|method|Test.java|42");
    -
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.FAILED)
    -                .stepDetails(StepDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("java.lang.IllegalArgumentException")
    -                                .errorMessage("bad state")
    -                                .errorData(SERDES.serialize(originalException))
    -                                .stackTrace(stackTrace)
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        operation.execute();
    -
    -        var thrown = assertThrows(IllegalArgumentException.class, operation::get);
    -        assertEquals("bad state", thrown.getMessage());
    -    }
    -
    -    @Test
    -    void replayFailedFallsBackToStepFailedException() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.FAILED)
    -                .stepDetails(StepDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType("com.nonexistent.SomeException")
    -                                .errorMessage("unknown error")
    -                                .stackTrace(List.of("com.example.Test|method|Test.java|1"))
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        operation.execute();
    -
    -        assertThrows(WaitForConditionFailedException.class, operation::get);
    -    }
    -
    -    // ===== Replay STARTED =====
    -
    -    @Test
    -    void replayStartedResumesCheckLoop() throws Exception {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.STARTED)
    -                .stepDetails(StepDetails.builder().attempt(2).result("10").build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation(
    -                (state, ctx) -> {
    -                    functionCalled.set(true);
    -                    return WaitForConditionResult.stopPolling(state + 1);
    -                },
    -                config);
    -
    -        operation.execute();
    -
    -        // Give the executor thread time to run
    -        Thread.sleep(200);
    -        assertTrue(functionCalled.get(), "Check function should be re-executed for STARTED replay");
    -    }
    -
    -    // ===== Replay READY =====
    -
    -    @Test
    -    void replayReadyResumesCheckLoop() throws Exception {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.READY)
    -                .stepDetails(StepDetails.builder().attempt(1).result("5").build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation(
    -                (state, ctx) -> {
    -                    functionCalled.set(true);
    -                    return WaitForConditionResult.stopPolling(state);
    -                },
    -                config);
    -
    -        operation.execute();
    -
    -        Thread.sleep(200);
    -        assertTrue(functionCalled.get(), "Check function should be re-executed for READY replay");
    -    }
    -
    -    // ===== Non-deterministic detection =====
    -
    -    @Test
    -    void replayWithTypeMismatchTerminatesExecution() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name(OPERATION_NAME)
    -                        .type(OperationType.WAIT) // Wrong type β€” should be STEP
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .build());
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        assertThrows(NonDeterministicExecutionException.class, operation::execute);
    -    }
    -
    -    @Test
    -    void replayWithNameMismatchTerminatesExecution() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name("different-name")
    -                        .type(OperationType.STEP)
    -                        .status(OperationStatus.SUCCEEDED)
    -                        .build());
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        assertThrows(NonDeterministicExecutionException.class, operation::execute);
    -    }
    -
    -    // ===== get() with null error data =====
    -
    -    @Test
    -    void getFailedWithNullErrorDataThrowsStepFailedException() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.FAILED)
    -                .stepDetails(StepDetails.builder()
    -                        .error(ErrorObject.builder()
    -                                .errorType(RuntimeException.class.getName())
    -                                .errorMessage("Something went wrong")
    -                                .stackTrace(List.of("com.example.Test|method|Test.java|42"))
    -                                .build())
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        operation.execute();
    -
    -        assertThrows(WaitForConditionFailedException.class, operation::get);
    -    }
    -
    -    // ===== Replay PENDING =====
    -
    -    @Test
    -    void replayPendingPollsAndResumesCheckLoop() throws Exception {
    -        var pendingOp = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.PENDING)
    -                .stepDetails(StepDetails.builder().attempt(1).result("5").build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(pendingOp);
    -
    -        var readyOp = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.READY)
    -                .stepDetails(StepDetails.builder().attempt(1).result("5").build())
    -                .build();
    -        when(executionManager.pollForOperationUpdates(OPERATION_ID))
    -                .thenReturn(CompletableFuture.completedFuture(readyOp));
    -
    -        var functionCalled = new AtomicBoolean(false);
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation(
    -                (state, ctx) -> {
    -                    functionCalled.set(true);
    -                    return WaitForConditionResult.stopPolling(state);
    -                },
    -                config);
    -
    -        operation.execute();
    -
    -        Thread.sleep(200);
    -        assertTrue(functionCalled.get(), "Check function should be called after PENDING β†’ READY transition");
    -    }
    -
    -    // ===== Replay unexpected status =====
    -
    -    @Test
    -    void replayWithUnexpectedStatusTerminatesExecution() {
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID))
    -                .thenReturn(Operation.builder()
    -                        .id(OPERATION_ID)
    -                        .name(OPERATION_NAME)
    -                        .type(OperationType.STEP)
    -                        .subType("WaitForCondition")
    -                        .status(OperationStatus.UNKNOWN_TO_SDK_VERSION)
    -                        .build());
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        assertThrows(IllegalDurableOperationException.class, operation::execute);
    -    }
    -
    -    // ===== resumeCheckLoop with null checkpoint data =====
    -
    -    @Test
    -    void replayStartedWithNullCheckpointDataUsesInitialState() throws Exception {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.STARTED)
    -                .stepDetails(StepDetails.builder().attempt(0).build()) // no result set
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var receivedState = new java.util.concurrent.atomic.AtomicInteger(-1);
    -        var config = WaitForConditionConfig.<Integer>builder()
    -                .serDes(SERDES)
    -                .initialState(42)
    -                .build();
    -        var operation = createOperation(
    -                (state, ctx) -> {
    -                    receivedState.set(state);
    -                    return WaitForConditionResult.stopPolling(state);
    -                },
    -                config);
    -
    -        operation.execute();
    -
    -        Thread.sleep(200);
    -        assertEquals(42, receivedState.get(), "Should use initialState when checkpoint data is null");
    -    }
    -
    -    // ===== resumeCheckLoop checkpoint deserialize exception =====
    -
    -    @Test
    -    void replayStartedWithCorruptCheckpointDataThrowsSerDesException() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .type(OperationType.STEP)
    -                .subType("WaitForCondition")
    -                .status(OperationStatus.STARTED)
    -                .stepDetails(StepDetails.builder()
    -                        .attempt(1)
    -                        .result("not-valid-json!!!")
    -                        .build())
    -                .build();
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var config = WaitForConditionConfig.<Integer>builder().serDes(SERDES).build();
    -        var operation = createOperation((state, ctx) -> WaitForConditionResult.stopPolling(state), config);
    -
    -        assertThrows(SerDesException.class, operation::execute);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitOperationTest.java b/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitOperationTest.java
    deleted file mode 100644
    index d07501dbb..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/operation/WaitOperationTest.java
    +++ /dev/null
    @@ -1,80 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.operation;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -import static org.mockito.Mockito.mock;
    -import static org.mockito.Mockito.when;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.awssdk.services.lambda.model.WaitDetails;
    -import software.amazon.lambda.durable.context.DurableContextImpl;
    -import software.amazon.lambda.durable.execution.ExecutionManager;
    -import software.amazon.lambda.durable.execution.ThreadContext;
    -import software.amazon.lambda.durable.execution.ThreadType;
    -import software.amazon.lambda.durable.model.OperationIdentifier;
    -
    -class WaitOperationTest {
    -    private static final String OPERATION_ID = "2";
    -    private static final String CONTEXT_ID = "handler";
    -    private static final String OPERATION_NAME = "test-wait";
    -    private static final OperationIdentifier OPERATION_IDENTIFIER =
    -            OperationIdentifier.of(OPERATION_ID, OPERATION_NAME, OperationType.WAIT);
    -    private ExecutionManager executionManager;
    -    private DurableContextImpl durableContext;
    -
    -    @BeforeEach
    -    void setUp() {
    -        executionManager = mock(ExecutionManager.class);
    -        durableContext = mock(DurableContextImpl.class);
    -        when(durableContext.getExecutionManager()).thenReturn(executionManager);
    -    }
    -
    -    @Test
    -    void constructor_withValidDuration_shouldPass() {
    -        var operation = new WaitOperation(OPERATION_IDENTIFIER, Duration.ofSeconds(10), durableContext);
    -
    -        assertEquals(OPERATION_ID, operation.getOperationId());
    -    }
    -
    -    @Test
    -    void getDoesNotThrowWhenCalledFromHandlerContext() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.SUCCEEDED)
    -                .waitDetails(WaitDetails.builder().build())
    -                .build();
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext(CONTEXT_ID, ThreadType.CONTEXT));
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new WaitOperation(OPERATION_IDENTIFIER, Duration.ofSeconds(10), durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        var result = operation.get();
    -        assertNull(result);
    -    }
    -
    -    @Test
    -    void getSucceededWhenStarted() {
    -        var op = Operation.builder()
    -                .id(OPERATION_ID)
    -                .name(OPERATION_NAME)
    -                .status(OperationStatus.SUCCEEDED)
    -                .build();
    -        when(executionManager.getCurrentThreadContext()).thenReturn(new ThreadContext(CONTEXT_ID, ThreadType.CONTEXT));
    -        when(executionManager.getOperationAndUpdateReplayState(OPERATION_ID)).thenReturn(op);
    -
    -        var operation = new WaitOperation(OPERATION_IDENTIFIER, Duration.ofSeconds(10), durableContext);
    -        operation.onCheckpointComplete(op);
    -
    -        // we currently don't check the operation status at all, so it's not blocked or failed
    -        assertNull(operation.get());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/retry/JitterStrategyTest.java b/sdk/src/test/java/software/amazon/lambda/durable/retry/JitterStrategyTest.java
    deleted file mode 100644
    index fde9b1cd4..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/retry/JitterStrategyTest.java
    +++ /dev/null
    @@ -1,96 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import org.junit.jupiter.api.Test;
    -
    -class JitterStrategyTest {
    -
    -    private static final int ITERATIONS = 100;
    -
    -    @Test
    -    void none_returnsExactBaseDelay() {
    -        assertEquals(100.0, JitterStrategy.NONE.apply(100.0));
    -        assertEquals(0.0, JitterStrategy.NONE.apply(0.0));
    -        assertEquals(1.5, JitterStrategy.NONE.apply(1.5));
    -    }
    -
    -    @Test
    -    void full_returnsBetweenZeroAndBaseDelay() {
    -        double baseDelay = 1000.0;
    -        for (int i = 0; i < ITERATIONS; i++) {
    -            double result = JitterStrategy.FULL.apply(baseDelay);
    -            assertTrue(result >= 0, "FULL jitter should be >= 0, got: " + result);
    -            assertTrue(result <= baseDelay, "FULL jitter should be <= baseDelay, got: " + result);
    -        }
    -    }
    -
    -    @Test
    -    void half_returnsBetweenHalfAndBaseDelay() {
    -        double baseDelay = 1000.0;
    -        for (int i = 0; i < ITERATIONS; i++) {
    -            double result = JitterStrategy.HALF.apply(baseDelay);
    -            assertTrue(result >= baseDelay / 2, "HALF jitter should be >= baseDelay/2, got: " + result);
    -            assertTrue(result <= baseDelay, "HALF jitter should be <= baseDelay, got: " + result);
    -        }
    -    }
    -
    -    @Test
    -    void full_withZeroBaseDelay_returnsZero() {
    -        assertEquals(0.0, JitterStrategy.FULL.apply(0.0));
    -    }
    -
    -    @Test
    -    void half_withZeroBaseDelay_returnsZero() {
    -        assertEquals(0.0, JitterStrategy.HALF.apply(0.0));
    -    }
    -
    -    @Test
    -    void full_producesVariation() {
    -        double baseDelay = 1000.0;
    -        boolean sawDifferentValues = false;
    -        double firstResult = JitterStrategy.FULL.apply(baseDelay);
    -        for (int i = 0; i < ITERATIONS; i++) {
    -            if (JitterStrategy.FULL.apply(baseDelay) != firstResult) {
    -                sawDifferentValues = true;
    -                break;
    -            }
    -        }
    -        assertTrue(sawDifferentValues, "FULL jitter should produce varying results");
    -    }
    -
    -    @Test
    -    void half_producesVariation() {
    -        double baseDelay = 1000.0;
    -        boolean sawDifferentValues = false;
    -        double firstResult = JitterStrategy.HALF.apply(baseDelay);
    -        for (int i = 0; i < ITERATIONS; i++) {
    -            if (JitterStrategy.HALF.apply(baseDelay) != firstResult) {
    -                sawDifferentValues = true;
    -                break;
    -            }
    -        }
    -        assertTrue(sawDifferentValues, "HALF jitter should produce varying results");
    -    }
    -
    -    @Test
    -    void allStrategies_withSmallBaseDelay_returnNonNegative() {
    -        double baseDelay = 0.001;
    -        for (int i = 0; i < ITERATIONS; i++) {
    -            assertTrue(JitterStrategy.NONE.apply(baseDelay) >= 0);
    -            assertTrue(JitterStrategy.FULL.apply(baseDelay) >= 0);
    -            assertTrue(JitterStrategy.HALF.apply(baseDelay) >= 0);
    -        }
    -    }
    -
    -    @Test
    -    void enumValues_containsAllStrategies() {
    -        var values = JitterStrategy.values();
    -        assertEquals(3, values.length);
    -        assertEquals(JitterStrategy.NONE, JitterStrategy.valueOf("NONE"));
    -        assertEquals(JitterStrategy.FULL, JitterStrategy.valueOf("FULL"));
    -        assertEquals(JitterStrategy.HALF, JitterStrategy.valueOf("HALF"));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/retry/PollingStrategiesTest.java b/sdk/src/test/java/software/amazon/lambda/durable/retry/PollingStrategiesTest.java
    deleted file mode 100644
    index 59635da25..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/retry/PollingStrategiesTest.java
    +++ /dev/null
    @@ -1,241 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -
    -class PollingStrategiesTest {
    -
    -    private static final Duration DEFAULT_MAX = Duration.ofSeconds(10);
    -
    -    @Test
    -    void defaultPreset_usesExpectedConfiguration() {
    -        var strategy = PollingStrategies.Presets.DEFAULT;
    -
    -        // Default: base=1000ms, rate=2.0, jitter=FULL, maxInterval=10s
    -        // With FULL jitter, delay should be between 0 and base*rate^attempt
    -        for (int i = 0; i < 10; i++) {
    -            var delay = strategy.computeDelay(1);
    -            assertTrue(
    -                    delay.toMillis() >= 0 && delay.toMillis() <= 1000,
    -                    "Attempt 0 delay should be in [0, 1000]ms, got " + delay.toMillis());
    -        }
    -    }
    -
    -    @Test
    -    void fixedDelay_computesFixedDelay() {
    -        var strategy = PollingStrategies.fixedDelay(Duration.ofMillis(500));
    -
    -        assertEquals(Duration.ofMillis(500), strategy.computeDelay(1));
    -        assertEquals(Duration.ofMillis(500), strategy.computeDelay(2));
    -        assertEquals(Duration.ofMillis(500), strategy.computeDelay(3));
    -        assertEquals(Duration.ofMillis(500), strategy.computeDelay(4));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withNoJitter_computesDeterministicDelays() {
    -        var strategy =
    -                PollingStrategies.exponentialBackoff(Duration.ofMillis(100), 2.0, JitterStrategy.NONE, DEFAULT_MAX);
    -
    -        // delay = base * rate^attempt
    -        assertEquals(100, strategy.computeDelay(1).toMillis()); // 100 * 2^0
    -        assertEquals(200, strategy.computeDelay(2).toMillis()); // 100 * 2^1
    -        assertEquals(400, strategy.computeDelay(3).toMillis()); // 100 * 2^2
    -        assertEquals(800, strategy.computeDelay(4).toMillis()); // 100 * 2^3
    -        assertEquals(1600, strategy.computeDelay(5).toMillis()); // 100 * 2^4
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withNoJitter_differentBackoffRates() {
    -        var strategy =
    -                PollingStrategies.exponentialBackoff(Duration.ofMillis(50), 3.0, JitterStrategy.NONE, DEFAULT_MAX);
    -
    -        assertEquals(50, strategy.computeDelay(1).toMillis()); // 50 * 3^0
    -        assertEquals(150, strategy.computeDelay(2).toMillis()); // 50 * 3^1
    -        assertEquals(450, strategy.computeDelay(3).toMillis()); // 50 * 3^2
    -        assertEquals(1350, strategy.computeDelay(4).toMillis()); // 50 * 3^3
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withFullJitter_delayInExpectedRange() {
    -        var strategy =
    -                PollingStrategies.exponentialBackoff(Duration.ofMillis(100), 2.0, JitterStrategy.FULL, DEFAULT_MAX);
    -
    -        for (int i = 0; i < 20; i++) {
    -            var delay0 = strategy.computeDelay(1).toMillis();
    -            assertTrue(
    -                    delay0 >= 0 && delay0 <= 100, "Attempt 0 with FULL jitter should be in [0, 100]ms, got " + delay0);
    -
    -            var delay2 = strategy.computeDelay(3).toMillis();
    -            assertTrue(
    -                    delay2 >= 0 && delay2 <= 400, "Attempt 2 with FULL jitter should be in [0, 400]ms, got " + delay2);
    -        }
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withHalfJitter_delayInExpectedRange() {
    -        var strategy =
    -                PollingStrategies.exponentialBackoff(Duration.ofMillis(100), 2.0, JitterStrategy.HALF, DEFAULT_MAX);
    -
    -        for (int i = 0; i < 20; i++) {
    -            var delay0 = strategy.computeDelay(1).toMillis();
    -            assertTrue(
    -                    delay0 >= 50 && delay0 <= 100,
    -                    "Attempt 0 with HALF jitter should be in [50, 100]ms, got " + delay0);
    -
    -            var delay2 = strategy.computeDelay(3).toMillis();
    -            assertTrue(
    -                    delay2 >= 200 && delay2 <= 400,
    -                    "Attempt 2 with HALF jitter should be in [200, 400]ms, got " + delay2);
    -        }
    -    }
    -
    -    // --- maxInterval tests ---
    -
    -    @Test
    -    void exponentialBackoff_withMaxInterval_capsDelay() {
    -        // base=100ms, rate=2.0, NONE jitter β†’ deterministic: 100, 200, 400, 800, 1600...
    -        // maxInterval=500ms β†’ should cap at 500
    -        var strategy = PollingStrategies.exponentialBackoff(
    -                Duration.ofMillis(100), 2.0, JitterStrategy.NONE, Duration.ofMillis(500));
    -
    -        assertEquals(100, strategy.computeDelay(1).toMillis()); // 100 < 500
    -        assertEquals(200, strategy.computeDelay(2).toMillis()); // 200 < 500
    -        assertEquals(400, strategy.computeDelay(3).toMillis()); // 400 < 500
    -        assertEquals(500, strategy.computeDelay(4).toMillis()); // 800 β†’ capped to 500
    -        assertEquals(500, strategy.computeDelay(5).toMillis()); // 1600 β†’ capped to 500
    -        assertEquals(500, strategy.computeDelay(11).toMillis()); // huge β†’ capped to 500
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withMaxInterval_capsAfterJitter() {
    -        // With FULL jitter, delay = random(0, base*rate^attempt), then capped by maxInterval
    -        // base=100ms, rate=2.0, maxInterval=300ms
    -        var strategy = PollingStrategies.exponentialBackoff(
    -                Duration.ofMillis(100), 2.0, JitterStrategy.FULL, Duration.ofMillis(300));
    -
    -        for (int i = 0; i < 50; i++) {
    -            // At attempt 5, uncapped range would be [0, 3200]ms
    -            // After maxInterval cap, should never exceed 300ms
    -            var delay = strategy.computeDelay(i + 1).toMillis();
    -            assertTrue(delay >= 0 && delay <= 300, "Delay should be capped at maxInterval=300ms, got " + delay + "ms");
    -        }
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withMaxInterval_defaultPresetCapsAt10Seconds() {
    -        var strategy = PollingStrategies.Presets.DEFAULT;
    -
    -        // Default: base=1000ms, rate=2.0, FULL jitter, maxInterval=10s
    -        // At high attempts, uncapped delay would be huge, but should cap at 10s
    -        for (int i = 0; i < 20; i++) {
    -            var delay = strategy.computeDelay(i + 1).toMillis();
    -            assertTrue(delay <= 10_000, "Default preset should cap at 10s maxInterval, got " + delay + "ms");
    -        }
    -    }
    -
    -    // --- Parameter validation tests ---
    -
    -    @Test
    -    void exponentialBackoff_nullBaseInterval_throwsNullPointerException() {
    -        assertThrows(
    -                NullPointerException.class,
    -                () -> PollingStrategies.exponentialBackoff(null, 2.0, JitterStrategy.NONE, DEFAULT_MAX));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_nullJitter_throwsNullPointerException() {
    -        assertThrows(
    -                NullPointerException.class,
    -                () -> PollingStrategies.exponentialBackoff(Duration.ofMillis(100), 2.0, null, DEFAULT_MAX));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_nullMaxInterval_throwsNullPointerException() {
    -        assertThrows(
    -                NullPointerException.class,
    -                () -> PollingStrategies.exponentialBackoff(Duration.ofMillis(100), 2.0, JitterStrategy.NONE, null));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_zeroBackoffRate_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(100), 0.0, JitterStrategy.NONE, DEFAULT_MAX));
    -
    -        assertEquals("backoffRate must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void exponentialBackoff_negativeBackoffRate_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(100), -1.0, JitterStrategy.NONE, DEFAULT_MAX));
    -
    -        assertEquals("backoffRate must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void exponentialBackoff_zeroBaseInterval_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(Duration.ZERO, 2.0, JitterStrategy.NONE, DEFAULT_MAX));
    -
    -        assertEquals("baseInterval must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void exponentialBackoff_negativeBaseInterval_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(-100), 2.0, JitterStrategy.NONE, DEFAULT_MAX));
    -
    -        assertEquals("baseInterval must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void exponentialBackoff_zeroMaxInterval_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(100), 2.0, JitterStrategy.NONE, Duration.ZERO));
    -
    -        assertEquals("maxInterval must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void exponentialBackoff_negativeMaxInterval_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> PollingStrategies.exponentialBackoff(
    -                        Duration.ofMillis(100), 2.0, JitterStrategy.NONE, Duration.ofMillis(-500)));
    -
    -        assertEquals("maxInterval must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void fixedDelay_nullInterval_throwsNullPointerException() {
    -        assertThrows(NullPointerException.class, () -> PollingStrategies.fixedDelay(null));
    -    }
    -
    -    @Test
    -    void fixedDelay_zeroInterval_throwsException() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> PollingStrategies.fixedDelay(Duration.ZERO));
    -
    -        assertEquals("interval must be positive", exception.getMessage());
    -    }
    -
    -    @Test
    -    void fixedDelay_negativeInterval_throwsException() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> PollingStrategies.fixedDelay(Duration.ofMillis(-100)));
    -
    -        assertEquals("interval must be positive", exception.getMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryDecisionTest.java b/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryDecisionTest.java
    deleted file mode 100644
    index 8a08ac27d..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryDecisionTest.java
    +++ /dev/null
    @@ -1,48 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -
    -class RetryDecisionTest {
    -
    -    @Test
    -    void testRetryDecision() {
    -        var delay = Duration.ofSeconds(5);
    -        var decision = RetryDecision.retry(delay);
    -
    -        assertTrue(decision.shouldRetry());
    -        assertEquals(delay, decision.delay());
    -    }
    -
    -    @Test
    -    void testFailDecision() {
    -        var decision = RetryDecision.fail();
    -
    -        assertFalse(decision.shouldRetry());
    -        assertEquals(Duration.ZERO, decision.delay());
    -    }
    -
    -    @Test
    -    void testRetryWithNullDelay() {
    -        var decision = RetryDecision.retry(null);
    -
    -        assertTrue(decision.shouldRetry());
    -        assertEquals(Duration.ZERO, decision.delay());
    -    }
    -
    -    @Test
    -    void testToString() {
    -        var retry = RetryDecision.retry(Duration.ofSeconds(10));
    -        var fail = RetryDecision.fail();
    -
    -        assertTrue(retry.toString().contains("retry after"));
    -        assertTrue(retry.toString().contains("10"));
    -        assertTrue(fail.toString().contains("fail"));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryStrategiesTest.java b/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryStrategiesTest.java
    deleted file mode 100644
    index 1a9606092..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/retry/RetryStrategiesTest.java
    +++ /dev/null
    @@ -1,280 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.config.StepConfig;
    -
    -class RetryStrategiesTest {
    -
    -    @Test
    -    void testNoRetryPreset() {
    -        var strategy = RetryStrategies.Presets.NO_RETRY;
    -
    -        // Should never retry regardless of attempt number
    -        var decision1 = strategy.makeRetryDecision(new RuntimeException("test"), 1);
    -        var decision2 = strategy.makeRetryDecision(new RuntimeException("test"), 2);
    -        var decision3 = strategy.makeRetryDecision(new RuntimeException("test"), 6);
    -
    -        assertFalse(decision1.shouldRetry());
    -        assertFalse(decision2.shouldRetry());
    -        assertFalse(decision3.shouldRetry());
    -    }
    -
    -    @Test
    -    void testDefaultPresetConfiguration() {
    -        var strategy = RetryStrategies.Presets.DEFAULT;
    -
    -        // Should retry for first 5 attempts (0-4), fail on 6th (5)
    -        for (int attempt = 1; attempt <= 5; attempt++) {
    -            var decision = strategy.makeRetryDecision(new RuntimeException("test"), attempt);
    -            assertTrue(decision.shouldRetry(), "Should retry on attempt " + attempt);
    -            assertTrue(decision.delay().toSeconds() >= 1, "Delay should be at least 1 second");
    -        }
    -
    -        // Should not retry on 6th attempt (attempt number 5)
    -        var finalDecision = strategy.makeRetryDecision(new RuntimeException("test"), 6);
    -        assertFalse(finalDecision.shouldRetry());
    -    }
    -
    -    @Test
    -    void testExponentialBackoffDelayCalculation() {
    -        // Test with no jitter to verify exact calculation
    -        var strategy = RetryStrategies.exponentialBackoff(
    -                5, // maxAttempts
    -                Duration.ofSeconds(2), // initialDelay
    -                Duration.ofSeconds(60), // maxDelay
    -                2.0, // backoffRate
    -                JitterStrategy.NONE // no jitter for predictable testing
    -                );
    -
    -        // Verify delay calculation: initialDelay * backoffRate^attemptNumber
    -        var decision0 = strategy.makeRetryDecision(new RuntimeException("test"), 1);
    -        assertEquals(2, decision0.delay().toSeconds()); // 2 * 2^0 = 2
    -
    -        var decision1 = strategy.makeRetryDecision(new RuntimeException("test"), 2);
    -        assertEquals(4, decision1.delay().toSeconds()); // 2 * 2^1 = 4
    -
    -        var decision2 = strategy.makeRetryDecision(new RuntimeException("test"), 3);
    -        assertEquals(8, decision2.delay().toSeconds()); // 2 * 2^2 = 8
    -
    -        var decision3 = strategy.makeRetryDecision(new RuntimeException("test"), 4);
    -        assertEquals(16, decision3.delay().toSeconds()); // 2 * 2^3 = 16
    -    }
    -
    -    @Test
    -    void testMaxDelayCapping() {
    -        var strategy = RetryStrategies.exponentialBackoff(
    -                10, // maxAttempts
    -                Duration.ofSeconds(5), // initialDelay
    -                Duration.ofSeconds(20), // maxDelay (cap at 20 seconds)
    -                2.0, // backoffRate
    -                JitterStrategy.NONE // no jitter
    -                );
    -
    -        // Should be capped at maxDelay
    -        var decision = strategy.makeRetryDecision(new RuntimeException("test"), 6);
    -        assertEquals(20, decision.delay().toSeconds()); // Would be 5 * 2^5 = 160, but capped at 20
    -    }
    -
    -    @Test
    -    void testJitterStrategies() {
    -        var noneStrategy = RetryStrategies.exponentialBackoff(
    -                5, Duration.ofSeconds(10), Duration.ofSeconds(60), 2.0, JitterStrategy.NONE);
    -
    -        var fullStrategy = RetryStrategies.exponentialBackoff(
    -                5, Duration.ofSeconds(10), Duration.ofSeconds(60), 2.0, JitterStrategy.FULL);
    -
    -        var halfStrategy = RetryStrategies.exponentialBackoff(
    -                5, Duration.ofSeconds(10), Duration.ofSeconds(60), 2.0, JitterStrategy.HALF);
    -
    -        // Test multiple times due to randomness
    -        for (int i = 0; i < 10; i++) {
    -            var noneDecision = noneStrategy.makeRetryDecision(new RuntimeException("test"), 2);
    -            var fullDecision = fullStrategy.makeRetryDecision(new RuntimeException("test"), 2);
    -            var halfDecision = halfStrategy.makeRetryDecision(new RuntimeException("test"), 2);
    -
    -            // NONE should always be exactly 20 (10 * 2^1)
    -            assertEquals(20, noneDecision.delay().toSeconds());
    -
    -            // FULL should be between 1 and 20 (0 to baseDelay, minimum 1)
    -            var fullDelay = fullDecision.delay().toSeconds();
    -            assertTrue(fullDelay >= 1 && fullDelay <= 20);
    -
    -            // HALF should be between 10 and 20 (baseDelay/2 to baseDelay)
    -            var halfDelay = halfDecision.delay().toSeconds();
    -            assertTrue(halfDelay >= 10 && halfDelay <= 20);
    -        }
    -    }
    -
    -    @Test
    -    void testMinimumDelayOfOneSecond() {
    -        // Test that delays are properly calculated with 1-second minimum
    -        var strategy = RetryStrategies.exponentialBackoff(
    -                5, Duration.ofSeconds(1), Duration.ofSeconds(60), 1.0, JitterStrategy.FULL);
    -
    -        var decision = strategy.makeRetryDecision(new RuntimeException("test"), 1);
    -        assertTrue(decision.delay().toSeconds() >= 1, "Delay should be at least 1 second");
    -    }
    -
    -    @Test
    -    void testFixedDelayStrategy() {
    -        var strategy = RetryStrategies.fixedDelay(3, Duration.ofSeconds(5));
    -
    -        // Should retry with fixed delay for first 2 attempts
    -        var decision1 = strategy.makeRetryDecision(new RuntimeException("test"), 1);
    -        var decision2 = strategy.makeRetryDecision(new RuntimeException("test"), 2);
    -
    -        assertTrue(decision1.shouldRetry());
    -        assertTrue(decision2.shouldRetry());
    -        assertEquals(5, decision1.delay().toSeconds());
    -        assertEquals(5, decision2.delay().toSeconds());
    -
    -        // Should not retry on 3rd attempt
    -        var decision3 = strategy.makeRetryDecision(new RuntimeException("test"), 3);
    -        assertFalse(decision3.shouldRetry());
    -    }
    -
    -    @Test
    -    void testInvalidParameters() {
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        0, Duration.ofSeconds(1), Duration.ofSeconds(10), 2.0, JitterStrategy.NONE));
    -
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        5, Duration.ofSeconds(-1), Duration.ofSeconds(10), 2.0, JitterStrategy.NONE));
    -
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        5, Duration.ofSeconds(1), Duration.ofSeconds(-1), 2.0, JitterStrategy.NONE));
    -
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        5, Duration.ofSeconds(1), Duration.ofSeconds(10), 0, JitterStrategy.NONE));
    -
    -        assertThrows(IllegalArgumentException.class, () -> RetryStrategies.fixedDelay(0, Duration.ofSeconds(1)));
    -
    -        assertThrows(IllegalArgumentException.class, () -> RetryStrategies.fixedDelay(5, Duration.ofSeconds(-1)));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withSubSecondInitialDelay_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        3, Duration.ofMillis(500), Duration.ofSeconds(60), 2.0, JitterStrategy.NONE));
    -
    -        assertTrue(exception.getMessage().contains("initialDelay"));
    -        assertTrue(exception.getMessage().contains("at least 1 second"));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withSubSecondMaxDelay_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(
    -                        3, Duration.ofSeconds(5), Duration.ofMillis(999), 2.0, JitterStrategy.NONE));
    -
    -        assertTrue(exception.getMessage().contains("maxDelay"));
    -        assertTrue(exception.getMessage().contains("at least 1 second"));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withNullInitialDelay_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(3, null, Duration.ofSeconds(60), 2.0, JitterStrategy.NONE));
    -
    -        assertTrue(exception.getMessage().contains("initialDelay"));
    -        assertTrue(exception.getMessage().contains("cannot be null"));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withNullMaxDelay_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> RetryStrategies.exponentialBackoff(3, Duration.ofSeconds(5), null, 2.0, JitterStrategy.NONE));
    -
    -        assertTrue(exception.getMessage().contains("maxDelay"));
    -        assertTrue(exception.getMessage().contains("cannot be null"));
    -    }
    -
    -    @Test
    -    void fixedDelay_withSubSecondDelay_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> RetryStrategies.fixedDelay(3, Duration.ofMillis(500)));
    -
    -        assertTrue(exception.getMessage().contains("fixedDelay"));
    -        assertTrue(exception.getMessage().contains("at least 1 second"));
    -    }
    -
    -    @Test
    -    void fixedDelay_withNullDelay_shouldThrow() {
    -        var exception = assertThrows(IllegalArgumentException.class, () -> RetryStrategies.fixedDelay(3, null));
    -
    -        assertTrue(exception.getMessage().contains("fixedDelay"));
    -        assertTrue(exception.getMessage().contains("cannot be null"));
    -    }
    -
    -    @Test
    -    void testStepConfigWithRetryStrategy() {
    -        var config1 = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.DEFAULT)
    -                .build();
    -
    -        var config2 = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.Presets.NO_RETRY)
    -                .build();
    -
    -        var config3 = StepConfig.builder()
    -                .retryStrategy(RetryStrategies.exponentialBackoff(
    -                        3, Duration.ofSeconds(1), Duration.ofSeconds(10), 2.0, JitterStrategy.NONE))
    -                .build();
    -
    -        assertNotNull(config1.retryStrategy());
    -        assertNotNull(config2.retryStrategy());
    -        assertNotNull(config3.retryStrategy());
    -
    -        var decision1 = config1.retryStrategy().makeRetryDecision(new RuntimeException("test"), 1);
    -        var decision2 = config2.retryStrategy().makeRetryDecision(new RuntimeException("test"), 1);
    -        var decision3 = config3.retryStrategy().makeRetryDecision(new RuntimeException("test"), 1);
    -
    -        assertTrue(decision1.shouldRetry());
    -        assertFalse(decision2.shouldRetry());
    -        assertTrue(decision3.shouldRetry());
    -    }
    -
    -    @Test
    -    void testRetryStrategyDelayProgression() {
    -        var strategy = RetryStrategies.exponentialBackoff(
    -                5, Duration.ofSeconds(2), Duration.ofSeconds(60), 2.0, JitterStrategy.NONE);
    -
    -        var decision0 = strategy.makeRetryDecision(new RuntimeException("test"), 1);
    -        var decision1 = strategy.makeRetryDecision(new RuntimeException("test"), 2);
    -        var decision2 = strategy.makeRetryDecision(new RuntimeException("test"), 3);
    -        var decision3 = strategy.makeRetryDecision(new RuntimeException("test"), 4);
    -        var decision4 = strategy.makeRetryDecision(new RuntimeException("test"), 5);
    -
    -        assertTrue(decision0.shouldRetry());
    -        assertEquals(2, decision0.delay().toSeconds());
    -
    -        assertTrue(decision1.shouldRetry());
    -        assertEquals(4, decision1.delay().toSeconds());
    -
    -        assertTrue(decision2.shouldRetry());
    -        assertEquals(8, decision2.delay().toSeconds());
    -
    -        assertTrue(decision3.shouldRetry());
    -        assertEquals(16, decision3.delay().toSeconds());
    -
    -        assertFalse(decision4.shouldRetry());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/retry/WaitStrategiesTest.java b/sdk/src/test/java/software/amazon/lambda/durable/retry/WaitStrategiesTest.java
    deleted file mode 100644
    index 0bb57cd71..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/retry/WaitStrategiesTest.java
    +++ /dev/null
    @@ -1,225 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.retry;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import java.time.Duration;
    -import java.util.Random;
    -import org.junit.jupiter.api.RepeatedTest;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.exception.WaitForConditionFailedException;
    -
    -class WaitStrategiesTest {
    -
    -    // ---- Presets ----
    -
    -    @Test
    -    void presets_default_isNotNull() {
    -        assertNotNull(WaitStrategies.Presets.DEFAULT);
    -    }
    -
    -    @Test
    -    void defaultStrategy_usesExpectedDefaults() {
    -        var strategy = WaitStrategies.<Integer>defaultStrategy();
    -        // With FULL jitter, delay at attempt 0 should be in [1, 5]
    -        var delay = strategy.evaluate(42, 0).toSeconds();
    -        assertTrue(delay >= 1 && delay <= 5, "Default delay at attempt 0 should be in [1, 5], got: " + delay);
    -    }
    -
    -    // ---- exponentialBackoff factory method ----
    -
    -    @Test
    -    void exponentialBackoff_withNoJitter_calculatesExactBackoff() {
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                60, Duration.ofSeconds(2), Duration.ofSeconds(60), 2.0, JitterStrategy.NONE);
    -
    -        assertEquals(Duration.ofSeconds(2), strategy.evaluate("x", 1));
    -        assertEquals(Duration.ofSeconds(4), strategy.evaluate("x", 2));
    -        assertEquals(Duration.ofSeconds(8), strategy.evaluate("x", 3));
    -        assertEquals(Duration.ofSeconds(16), strategy.evaluate("x", 4));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_capsAtMaxDelay() {
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                60, Duration.ofSeconds(5), Duration.ofSeconds(20), 2.0, JitterStrategy.NONE);
    -
    -        // attempt 4: min(5 * 2^4 = 80, 20) = 20
    -        assertEquals(Duration.ofSeconds(20), strategy.evaluate("x", 4));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_maxAttemptsExceeded_throwsException() {
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                3, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -        assertEquals(Duration.ofSeconds(5), strategy.evaluate("x", 1));
    -        assertEquals(Duration.ofSeconds(8), strategy.evaluate("x", 2));
    -
    -        var exception = assertThrows(WaitForConditionFailedException.class, () -> strategy.evaluate("x", 3));
    -        assertTrue(exception.getMessage().contains("maximum attempts"));
    -        assertTrue(exception.getMessage().contains("3"));
    -    }
    -
    -    @RepeatedTest(10)
    -    void exponentialBackoff_fullJitter_producesDelayInExpectedRange() {
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                60, Duration.ofSeconds(10), Duration.ofSeconds(60), 2.0, JitterStrategy.FULL);
    -
    -        // attempt 1: base = min(10 * 2^1, 60) = 20, FULL jitter -> [1, 20]
    -        var delay = strategy.evaluate("x", 1).toSeconds();
    -        assertTrue(delay >= 1 && delay <= 20, "FULL jitter delay should be in [1, 20], got: " + delay);
    -    }
    -
    -    @RepeatedTest(10)
    -    void exponentialBackoff_halfJitter_producesDelayInExpectedRange() {
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                60, Duration.ofSeconds(10), Duration.ofSeconds(60), 2.0, JitterStrategy.HALF);
    -
    -        // attempt 1: base = 20, HALF jitter -> [10, 20]
    -        var delay = strategy.evaluate("x", 2).toSeconds();
    -        assertTrue(delay >= 10 && delay <= 20, "HALF jitter delay should be in [10, 20], got: " + delay);
    -    }
    -
    -    // ---- fixedDelay factory method ----
    -
    -    @Test
    -    void fixedDelay_returnsConstantDelay() {
    -        var strategy = WaitStrategies.<String>fixedDelay(10, Duration.ofSeconds(5));
    -        assertEquals(Duration.ofSeconds(5), strategy.evaluate("x", 0));
    -        assertEquals(Duration.ofSeconds(5), strategy.evaluate("y", 5));
    -    }
    -
    -    @Test
    -    void fixedDelay_maxAttemptsExceeded_throwsException() {
    -        var strategy = WaitStrategies.<String>fixedDelay(3, Duration.ofSeconds(5));
    -        assertThrows(WaitForConditionFailedException.class, () -> strategy.evaluate("x", 3));
    -    }
    -
    -    // ---- Validation ----
    -
    -    @Test
    -    void exponentialBackoff_withInvalidBackoffRate_throwsIllegalArgumentException() {
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> WaitStrategies.<String>exponentialBackoff(
    -                        60, Duration.ofSeconds(5), Duration.ofSeconds(300), 0.5, JitterStrategy.NONE));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withInvalidMaxAttempts_throwsIllegalArgumentException() {
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> WaitStrategies.<String>exponentialBackoff(
    -                        0, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE));
    -    }
    -
    -    @Test
    -    void exponentialBackoff_withNullJitter_throwsIllegalArgumentException() {
    -        assertThrows(
    -                IllegalArgumentException.class,
    -                () -> WaitStrategies.<String>exponentialBackoff(
    -                        60, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, null));
    -    }
    -
    -    // ---- Exponential backoff calculation with jitter=NONE ----
    -
    -    @RepeatedTest(100)
    -    void exponentialBackoffCalculation_noJitter() {
    -        var random = new Random();
    -
    -        long initialDelaySeconds = 1 + random.nextInt(30);
    -        double backoffRate = 1.0 + random.nextDouble() * 4.0;
    -        long maxDelaySeconds = initialDelaySeconds + random.nextInt(600);
    -        int attempt = random.nextInt(20) + 1;
    -
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                100,
    -                Duration.ofSeconds(initialDelaySeconds),
    -                Duration.ofSeconds(maxDelaySeconds),
    -                backoffRate,
    -                JitterStrategy.NONE);
    -
    -        var delay = strategy.evaluate("x", attempt);
    -        var actualDelay = delay.toSeconds();
    -        double expectedRaw = Math.min(initialDelaySeconds * Math.pow(backoffRate, attempt - 1), maxDelaySeconds);
    -        long expectedDelay = Math.max(1, Math.round(expectedRaw));
    -
    -        assertEquals(
    -                expectedDelay,
    -                actualDelay,
    -                String.format(
    -                        "initialDelay=%d, backoffRate=%.2f, maxDelay=%d, attempt=%d",
    -                        initialDelaySeconds, backoffRate, maxDelaySeconds, attempt));
    -    }
    -
    -    // ---- Max attempts enforcement ----
    -
    -    @RepeatedTest(100)
    -    void maxAttemptsEnforcement_throwsWhenExceeded() {
    -        var random = new Random();
    -
    -        int maxAttempts = 1 + random.nextInt(50);
    -        int attemptOverMax = maxAttempts + random.nextInt(20);
    -
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                maxAttempts, Duration.ofSeconds(5), Duration.ofSeconds(300), 1.5, JitterStrategy.NONE);
    -
    -        var exception = assertThrows(
    -                WaitForConditionFailedException.class,
    -                () -> strategy.evaluate("any-state", attemptOverMax),
    -                String.format("maxAttempts=%d, attempt=%d should throw", maxAttempts, attemptOverMax));
    -
    -        assertTrue(exception.getMessage().contains("maximum attempts"));
    -    }
    -
    -    // ---- Jitter bounds ----
    -
    -    @RepeatedTest(100)
    -    void jitterBounds_noneProducesExactDelay() {
    -        var random = new Random();
    -        long delaySeconds = 1 + random.nextInt(300);
    -
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                100, Duration.ofSeconds(delaySeconds), Duration.ofSeconds(300), 1.0, JitterStrategy.NONE);
    -
    -        var delay = strategy.evaluate("x", 1);
    -        assertEquals(delaySeconds, delay.toSeconds(), "NONE jitter should produce exact delay");
    -    }
    -
    -    @RepeatedTest(100)
    -    void jitterBounds_fullProducesDelayInRange() {
    -        var random = new Random();
    -        long delaySeconds = 2 + random.nextInt(299);
    -
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                100, Duration.ofSeconds(delaySeconds), Duration.ofSeconds(300), 1.0, JitterStrategy.FULL);
    -
    -        var delay = strategy.evaluate("x", 1);
    -        var actualDelay = delay.toSeconds();
    -        assertTrue(
    -                actualDelay >= 1 && actualDelay <= delaySeconds,
    -                String.format("FULL jitter delay should be in [1, %d], got: %d", delaySeconds, actualDelay));
    -    }
    -
    -    @RepeatedTest(100)
    -    void jitterBounds_halfProducesDelayInRange() {
    -        var random = new Random();
    -        long delaySeconds = 2 + random.nextInt(299);
    -
    -        var strategy = WaitStrategies.<String>exponentialBackoff(
    -                100, Duration.ofSeconds(delaySeconds), Duration.ofSeconds(300), 1.0, JitterStrategy.HALF);
    -
    -        var delay = strategy.evaluate("x", 1);
    -        var actualDelay = delay.toSeconds();
    -        long minExpected = Math.max(1, Math.round(delaySeconds / 2.0));
    -        assertTrue(
    -                actualDelay >= minExpected && actualDelay <= delaySeconds,
    -                String.format(
    -                        "HALF jitter delay should be in [%d, %d], got: %d", minExpected, delaySeconds, actualDelay));
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/serde/AwsSdkV2ModuleTest.java b/sdk/src/test/java/software/amazon/lambda/durable/serde/AwsSdkV2ModuleTest.java
    deleted file mode 100644
    index 8d0362733..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/serde/AwsSdkV2ModuleTest.java
    +++ /dev/null
    @@ -1,220 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -
    -import com.fasterxml.jackson.databind.ObjectMapper;
    -import java.time.Instant;
    -import java.util.List;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.awssdk.services.lambda.model.Operation;
    -import software.amazon.awssdk.services.lambda.model.OperationStatus;
    -import software.amazon.awssdk.services.lambda.model.OperationType;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.DurableExecutionOutput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -
    -class AwsSdkV2ModuleTest {
    -
    -    @Test
    -    void testDurableExecutionInputDeserializationIncludingSdkV2Operation() throws Exception {
    -        ObjectMapper mapper = DurableInputOutputSerDes.createObjectMapper();
    -
    -        String json = """
    -                {
    -                    "DurableExecutionArn": "c581e164-d7da-4108-8b35-109facaf1cc7",
    -                    "CheckpointToken": "eyJhcm4iOiJjNTgxZTE2NC1kN2RhLTQxMDgtOGIzNS0xMDlmYWNhZjFjYzciLCJzZXEiOjZ9",
    -                    "InitialExecutionState": {
    -                        "Operations": [
    -                            {
    -                                "Id": "bab0be0f-1c09-4a45-9a93-2e0579b9f81e",
    -                                "Type": "EXECUTION",
    -                                "Status": "STARTED",
    -                                "StartTimestamp": "2025-12-18 10:53:45.863776+00:00",
    -                                "ExecutionDetails": {
    -                                    "InputPayload": "{\\"name\\": \\"Alice\\"}"
    -                                }
    -                            },
    -                            {
    -                                "Id": "1",
    -                                "Type": "STEP",
    -                                "Status": "SUCCEEDED",
    -                                "Name": "async-operation",
    -                                "StartTimestamp": "2025-12-18 10:53:55.057877+00:00",
    -                                "EndTimestamp": "2025-12-18 10:53:57.413501+00:00",
    -                                "StepDetails": {
    -                                    "Attempt": 1,
    -                                    "Result": "\\"Processed: Alice\\""
    -                                }
    -                            },
    -                            {
    -                                "Id": "2",
    -                                "Type": "WAIT",
    -                                "Status": "SUCCEEDED",
    -                                "Name": "wait-3-seconds",
    -                                "StartTimestamp": "2025-12-18 10:53:55.374042+00:00",
    -                                "EndTimestamp": "2025-12-18 10:54:00.553627+00:00",
    -                                "WaitDetails": {
    -                                    "ScheduledEndTimestamp": "2025-12-18 10:53:58.374035+00:00"
    -                                }
    -                            }
    -                        ],
    -                        "NextMarker": ""
    -                    }
    -                }
    -                """;
    -
    -        DurableExecutionInput input = mapper.readValue(json, DurableExecutionInput.class);
    -
    -        // Verify top-level fields
    -        assertNotNull(input);
    -        assertEquals("c581e164-d7da-4108-8b35-109facaf1cc7", input.durableExecutionArn());
    -        assertEquals(
    -                "eyJhcm4iOiJjNTgxZTE2NC1kN2RhLTQxMDgtOGIzNS0xMDlmYWNhZjFjYzciLCJzZXEiOjZ9", input.checkpointToken());
    -
    -        // Verify initial execution state
    -        assertNotNull(input.initialExecutionState());
    -        assertEquals("", input.initialExecutionState().nextMarker());
    -
    -        // Verify operations list
    -        var operations = input.initialExecutionState().operations();
    -        assertNotNull(operations);
    -        assertEquals(3, operations.size());
    -
    -        // Verify EXECUTION operation
    -        Operation executionOp = operations.get(0);
    -        assertEquals("bab0be0f-1c09-4a45-9a93-2e0579b9f81e", executionOp.id());
    -        assertEquals(OperationType.EXECUTION, executionOp.type());
    -        assertEquals(OperationStatus.STARTED, executionOp.status());
    -        assertNotNull(executionOp.startTimestamp());
    -        assertEquals(Instant.parse("2025-12-18T10:53:45.863776Z"), executionOp.startTimestamp());
    -        assertNotNull(executionOp.executionDetails());
    -        assertEquals("{\"name\": \"Alice\"}", executionOp.executionDetails().inputPayload());
    -
    -        // Verify STEP operation
    -        Operation stepOp = operations.get(1);
    -        assertEquals("1", stepOp.id());
    -        assertEquals(OperationType.STEP, stepOp.type());
    -        assertEquals(OperationStatus.SUCCEEDED, stepOp.status());
    -        assertEquals("async-operation", stepOp.name());
    -        assertNotNull(stepOp.startTimestamp());
    -        assertNotNull(stepOp.endTimestamp());
    -        assertEquals(Instant.parse("2025-12-18T10:53:55.057877Z"), stepOp.startTimestamp());
    -        assertEquals(Instant.parse("2025-12-18T10:53:57.413501Z"), stepOp.endTimestamp());
    -        assertNotNull(stepOp.stepDetails());
    -        assertEquals(1, stepOp.stepDetails().attempt());
    -        assertEquals("\"Processed: Alice\"", stepOp.stepDetails().result());
    -
    -        // Verify WAIT operation
    -        Operation waitOp = operations.get(2);
    -        assertEquals("2", waitOp.id());
    -        assertEquals(OperationType.WAIT, waitOp.type());
    -        assertEquals(OperationStatus.SUCCEEDED, waitOp.status());
    -        assertEquals("wait-3-seconds", waitOp.name());
    -        assertNotNull(waitOp.startTimestamp());
    -        assertNotNull(waitOp.endTimestamp());
    -        assertEquals(Instant.parse("2025-12-18T10:53:55.374042Z"), waitOp.startTimestamp());
    -        assertEquals(Instant.parse("2025-12-18T10:54:00.553627Z"), waitOp.endTimestamp());
    -        assertNotNull(waitOp.waitDetails());
    -        assertEquals(
    -                Instant.parse("2025-12-18T10:53:58.374035Z"),
    -                waitOp.waitDetails().scheduledEndTimestamp());
    -    }
    -
    -    @Test
    -    void testErrorObjectSerializationAndDeserialization() throws Exception {
    -        ObjectMapper mapper = DurableInputOutputSerDes.createObjectMapper();
    -
    -        // Create an ErrorObject using the builder
    -        var errorObject = ErrorObject.builder()
    -                .errorType("StepFailedException")
    -                .errorMessage("Step execution failed")
    -                .stackTrace(List.of(
    -                        "com.example.MyClass|myMethod|MyClass.java|123",
    -                        "com.example.OtherClass|otherMethod|OtherClass.java|456"))
    -                .build();
    -
    -        var output = new DurableExecutionOutput(ExecutionStatus.FAILED, null, errorObject);
    -
    -        // Serialize to JSON
    -        var json = mapper.writeValueAsString(output);
    -
    -        // Verify serialization contains expected fields
    -        assertNotNull(json);
    -
    -        // Deserialize back
    -        var deserialized = mapper.readValue(json, DurableExecutionOutput.class);
    -
    -        // Verify deserialization
    -        assertNotNull(deserialized);
    -        assertEquals(ExecutionStatus.FAILED, deserialized.status());
    -        assertNotNull(deserialized.error());
    -        assertEquals("StepFailedException", deserialized.error().errorType());
    -        assertEquals("Step execution failed", deserialized.error().errorMessage());
    -        assertNotNull(deserialized.error().stackTrace());
    -        assertEquals(2, deserialized.error().stackTrace().size());
    -        assertEquals(
    -                "com.example.MyClass|myMethod|MyClass.java|123",
    -                deserialized.error().stackTrace().get(0));
    -        assertEquals(
    -                "com.example.OtherClass|otherMethod|OtherClass.java|456",
    -                deserialized.error().stackTrace().get(1));
    -    }
    -
    -    @Test
    -    void testActualAWSLambdaPayload() throws Exception {
    -        var mapper = DurableInputOutputSerDes.createObjectMapper();
    -        var json = """
    -                {
    -                    "DurableExecutionArn": "c581e164-d7da-4108-8b35-109facaf1cc7",
    -                    "CheckpointToken": "eyJhcm4iOiJjNTgxZTX2NCFkNXRhLTQxMDgtOGIzNS0xMDlmYXNhZjFjYzciLCJzZXEiOjZ9",
    -                    "InitialExecutionState": {
    -                           "Operations": [
    -                               {
    -                                   "Id": "f9074738-95c0-as3-982a-e82af4ddbb5c",
    -                                   "Name": "a10a88cd-6eb5-asd4-afb3-e893ac72ad25",
    -                                   "Type": "EXECUTION",
    -                                   "StartTimestamp": 1767356934930,
    -                                   "Status": "STARTED",
    -                                   "ExecutionDetails": {
    -                                       "InputPayload": "{\\n  \\"name\\": \\"Alice\\"\\n}\\n"
    -                                   }
    -                               }
    -                           ]
    -                       }
    -                }
    -                """;
    -
    -        var input = mapper.readValue(json, DurableExecutionInput.class);
    -
    -        var operations = input.initialExecutionState().operations();
    -        assertEquals(1, operations.size());
    -        assertEquals(
    -                Instant.parse("2026-01-02T12:28:54.930Z"), operations.get(0).startTimestamp());
    -    }
    -
    -    @Test
    -    void testErrorObjectRoundTripWithNullFields() throws Exception {
    -        ObjectMapper mapper = DurableInputOutputSerDes.createObjectMapper();
    -
    -        // Create an ErrorObject with minimal fields
    -        var errorObject = ErrorObject.builder()
    -                .errorType("CustomError")
    -                .errorMessage("Something went wrong")
    -                .build();
    -
    -        var output = new DurableExecutionOutput(ExecutionStatus.FAILED, null, errorObject);
    -
    -        // Serialize and deserialize
    -        var json = mapper.writeValueAsString(output);
    -        var deserialized = mapper.readValue(json, DurableExecutionOutput.class);
    -
    -        // Verify
    -        assertNotNull(deserialized.error());
    -        assertEquals("CustomError", deserialized.error().errorType());
    -        assertEquals("Something went wrong", deserialized.error().errorMessage());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDesTest.java b/sdk/src/test/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDesTest.java
    deleted file mode 100644
    index d64a88665..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/serde/DurableInputOutputSerDesTest.java
    +++ /dev/null
    @@ -1,128 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.awssdk.services.lambda.model.ErrorObject;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.model.DurableExecutionInput;
    -import software.amazon.lambda.durable.model.DurableExecutionOutput;
    -import software.amazon.lambda.durable.model.ExecutionStatus;
    -
    -class DurableInputOutputSerDesTest {
    -
    -    DurableInputOutputSerDes serDes;
    -
    -    @BeforeEach
    -    void setUp() {
    -        serDes = new DurableInputOutputSerDes();
    -    }
    -
    -    @Test
    -    void testObjectMapperSerializesPendingOutput() {
    -        var output = DurableExecutionOutput.pending();
    -
    -        var json = serDes.serialize(output);
    -
    -        assertTrue(json.contains("\"Status\":\"PENDING\""));
    -    }
    -
    -    @Test
    -    void testObjectMapperDeserializesDurableExecutionInput() {
    -        var json = """
    -                {
    -                    "DurableExecutionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
    -                    "CheckpointToken": "token-123",
    -                    "InitialExecutionState": {
    -                        "Operations": [],
    -                        "NextMarker": null
    -                    }
    -                }
    -                """;
    -
    -        var input = serDes.deserialize(json, TypeToken.get(DurableExecutionInput.class));
    -
    -        assertNotNull(input);
    -        assertEquals("arn:aws:lambda:us-east-1:123456789012:function:my-function", input.durableExecutionArn());
    -        assertEquals("token-123", input.checkpointToken());
    -        assertNotNull(input.initialExecutionState());
    -    }
    -
    -    @Test
    -    void testObjectMapperSerializesSuccessOutput() {
    -        var output = DurableExecutionOutput.success("test-result");
    -
    -        var json = serDes.serialize(output);
    -
    -        assertTrue(json.contains("\"Status\":\"SUCCEEDED\""));
    -        assertTrue(json.contains("\"Result\":\"test-result\""));
    -        assertTrue(json.contains("\"Error\":null"));
    -    }
    -
    -    @Test
    -    void testObjectMapperSerializesFailureOutputWithErrorObject() {
    -        var output = DurableExecutionOutput.failure(ErrorObject.builder()
    -                .errorType("myErrorType")
    -                .errorMessage("myErrorMessage")
    -                .errorData("myErrorData")
    -                .stackTrace(List.of("s1", "s2"))
    -                .build());
    -
    -        var json = serDes.serialize(output);
    -
    -        assertTrue(json.contains("\"Status\":\"FAILED\""));
    -        assertTrue(json.contains("\"ErrorType\":\"myErrorType\""));
    -        assertTrue(json.contains("\"ErrorMessage\":\"myErrorMessage\""));
    -        assertTrue(json.contains("\"StackTrace\":["));
    -        assertTrue(json.contains("\"ErrorData\":\"myErrorData\""));
    -    }
    -
    -    @Test
    -    void testObjectMapperHandlesErrorObjectFromAwsSdk() {
    -        var errorObject = ErrorObject.builder()
    -                .errorType("CustomError")
    -                .errorMessage("Something went wrong")
    -                .stackTrace(List.of("line1|method1|file1.java|10", "line2|method2|file2.java|20"))
    -                .build();
    -
    -        var output = new DurableExecutionOutput(ExecutionStatus.FAILED, null, errorObject);
    -        var json = serDes.serialize(output);
    -
    -        // Verify serialization with custom ErrorObjectSerializer
    -        assertTrue(json.contains("\"ErrorType\":\"CustomError\""));
    -        assertTrue(json.contains("\"ErrorMessage\":\"Something went wrong\""));
    -        assertTrue(json.contains("\"StackTrace\":["));
    -        assertTrue(json.contains("\"Status\":\"FAILED\""));
    -
    -        // Verify deserialization round-trip
    -        var deserialized = serDes.deserialize(json, TypeToken.get(DurableExecutionOutput.class));
    -        assertEquals(ExecutionStatus.FAILED, deserialized.status());
    -        assertNotNull(deserialized.error());
    -        assertEquals("CustomError", deserialized.error().errorType());
    -        assertEquals("Something went wrong", deserialized.error().errorMessage());
    -        assertEquals(2, deserialized.error().stackTrace().size());
    -    }
    -
    -    @Test
    -    void testObjectMapperIgnoresUnknownProperties() {
    -        var json = """
    -                {
    -                    "Status": "SUCCEEDED",
    -                    "Result": "test",
    -                    "Error": null,
    -                    "UnknownProperty": "should be ignored"
    -                }
    -                """;
    -
    -        // Should not fail on unknown properties
    -        var output = serDes.deserialize(json, TypeToken.get(DurableExecutionOutput.class));
    -
    -        assertNotNull(output);
    -        assertEquals(ExecutionStatus.SUCCEEDED, output.status());
    -        assertEquals("test", output.result());
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTest.java b/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTest.java
    deleted file mode 100644
    index 9c8b20445..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTest.java
    +++ /dev/null
    @@ -1,86 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import static org.junit.jupiter.api.Assertions.assertEquals;
    -import static org.junit.jupiter.api.Assertions.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertNull;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
    -import static org.junit.jupiter.api.Assertions.assertTrue;
    -
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -
    -class JacksonSerDesTest {
    -
    -    record TestData(String name, int value) {}
    -
    -    @Test
    -    void testRoundTrip() {
    -        var serDes = new JacksonSerDes();
    -        var original = new TestData("test", 42);
    -
    -        var json = serDes.serialize(original);
    -        var deserialized = serDes.deserialize(json, TypeToken.get(TestData.class));
    -
    -        assertEquals(original, deserialized);
    -    }
    -
    -    @Test
    -    void testNullHandling() {
    -        var serDes = new JacksonSerDes();
    -
    -        assertNull(serDes.serialize(null));
    -        assertNull(serDes.deserialize(null, TypeToken.get(String.class)));
    -    }
    -
    -    @Test
    -    void testDeserializationThrowsSerDesException() {
    -        var serDes = new JacksonSerDes();
    -        var invalidJson = "{invalid json}";
    -
    -        var exception = assertThrows(SerDesException.class, () -> {
    -            serDes.deserialize(invalidJson, TypeToken.get(TestData.class));
    -        });
    -
    -        assertTrue(exception.getMessage().contains("Deserialization failed"));
    -        assertTrue(exception.getMessage().contains("TestData"));
    -        assertNotNull(exception.getCause());
    -    }
    -
    -    @Test
    -    void testSerializationThrowsSerDesException() {
    -        var serDes = new JacksonSerDes();
    -
    -        // Create an object that cannot be serialized (circular reference)
    -        class CircularReference {
    -            CircularReference self;
    -
    -            CircularReference() {
    -                this.self = this;
    -            }
    -        }
    -
    -        var circular = new CircularReference();
    -
    -        var exception = assertThrows(SerDesException.class, () -> {
    -            serDes.serialize(circular);
    -        });
    -
    -        assertTrue(exception.getMessage().contains("Serialization failed"));
    -        assertTrue(exception.getMessage().contains("CircularReference"));
    -        assertNotNull(exception.getCause());
    -    }
    -
    -    @Test
    -    void testSerDesExceptionExtendsRuntimeException() {
    -        var serDes = new JacksonSerDes();
    -        var invalidJson = "not json";
    -
    -        // Verify SerDesException is a RuntimeException (unchecked)
    -        assertThrows(RuntimeException.class, () -> {
    -            serDes.deserialize(invalidJson, TypeToken.get(TestData.class));
    -        });
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTypeTokenTest.java b/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTypeTokenTest.java
    deleted file mode 100644
    index 4e95e3acd..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/serde/JacksonSerDesTypeTokenTest.java
    +++ /dev/null
    @@ -1,191 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.serde;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.util.List;
    -import java.util.Map;
    -import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.TypeToken;
    -import software.amazon.lambda.durable.exception.SerDesException;
    -
    -class JacksonSerDesTypeTokenTest {
    -
    -    private JacksonSerDes serDes;
    -
    -    @BeforeEach
    -    void setUp() {
    -        serDes = new JacksonSerDes();
    -    }
    -
    -    @Test
    -    void testDeserializeListOfStrings() {
    -        var json = "[\"apple\",\"banana\",\"cherry\"]";
    -        var token = new TypeToken<List<String>>() {};
    -
    -        List<String> result = serDes.deserialize(json, token);
    -
    -        assertNotNull(result);
    -        assertEquals(3, result.size());
    -        assertEquals("apple", result.get(0));
    -        assertEquals("banana", result.get(1));
    -        assertEquals("cherry", result.get(2));
    -    }
    -
    -    @Test
    -    void testDeserializeMapOfStringToInteger() {
    -        var json = "{\"one\":1,\"two\":2,\"three\":3}";
    -        var token = new TypeToken<Map<String, Integer>>() {};
    -
    -        Map<String, Integer> result = serDes.deserialize(json, token);
    -
    -        assertNotNull(result);
    -        assertEquals(3, result.size());
    -        assertEquals(1, result.get("one"));
    -        assertEquals(2, result.get("two"));
    -        assertEquals(3, result.get("three"));
    -    }
    -
    -    @Test
    -    void testDeserializeNestedGeneric() {
    -        var json = "{\"items\":[\"a\",\"b\"],\"counts\":[1,2,3]}";
    -        var token = new TypeToken<Map<String, List<Object>>>() {};
    -
    -        Map<String, List<Object>> result = serDes.deserialize(json, token);
    -
    -        assertNotNull(result);
    -        assertEquals(2, result.size());
    -        assertTrue(result.get("items") instanceof List);
    -        assertTrue(result.get("counts") instanceof List);
    -    }
    -
    -    @Test
    -    void testDeserializeListOfMaps() {
    -        var json = "[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]";
    -        var token = new TypeToken<List<Map<String, Object>>>() {};
    -
    -        List<Map<String, Object>> result = serDes.deserialize(json, token);
    -
    -        assertNotNull(result);
    -        assertEquals(2, result.size());
    -        assertEquals("Alice", result.get(0).get("name"));
    -        assertEquals(30, result.get(0).get("age"));
    -        assertEquals("Bob", result.get(1).get("name"));
    -        assertEquals(25, result.get(1).get("age"));
    -    }
    -
    -    @Test
    -    void testDeserializeNull() {
    -        var token = new TypeToken<List<String>>() {};
    -        List<String> result = serDes.deserialize(null, token);
    -        assertNull(result);
    -    }
    -
    -    @Test
    -    void testDeserializeInvalidJson() {
    -        var json = "invalid json";
    -        var token = new TypeToken<List<String>>() {};
    -
    -        assertThrows(SerDesException.class, () -> serDes.deserialize(json, token));
    -    }
    -
    -    @Test
    -    void testTypeCaching() {
    -        // Deserialize multiple times with same TypeToken to verify caching works correctly
    -        var json1 = "[1,2,3]";
    -        var json2 = "[4,5,6]";
    -        var token = new TypeToken<List<Integer>>() {};
    -
    -        // First deserialization - should populate cache
    -        List<Integer> result1 = serDes.deserialize(json1, token);
    -        assertNotNull(result1);
    -        assertEquals(3, result1.size());
    -        assertEquals(1, result1.get(0));
    -
    -        // Second deserialization with same TypeToken - should use cached JavaType
    -        List<Integer> result2 = serDes.deserialize(json2, token);
    -        assertNotNull(result2);
    -        assertEquals(3, result2.size());
    -        assertEquals(4, result2.get(0));
    -
    -        // Third deserialization with different data but same TypeToken
    -        var json3 = "[7,8,9,10]";
    -        List<Integer> result3 = serDes.deserialize(json3, token);
    -        assertNotNull(result3);
    -        assertEquals(4, result3.size());
    -        assertEquals(7, result3.get(0));
    -
    -        // Verify all results are different instances but correctly deserialized
    -        assertNotEquals(result1, result2);
    -        assertNotEquals(result2, result3);
    -    }
    -
    -    @Test
    -    void testTypeCachingWithDifferentTypeTokens() {
    -        // Test that different TypeTokens with same generic type work correctly
    -        var jsonInts = "[1,2,3]";
    -        var jsonStrings = "[\"a\",\"b\",\"c\"]";
    -
    -        var intToken = new TypeToken<List<Integer>>() {};
    -        var stringToken = new TypeToken<List<String>>() {};
    -
    -        // Deserialize with integer token
    -        List<Integer> intResult = serDes.deserialize(jsonInts, intToken);
    -        assertNotNull(intResult);
    -        assertEquals(3, intResult.size());
    -        assertEquals(1, intResult.get(0));
    -
    -        // Deserialize with string token - should use different cached type
    -        List<String> stringResult = serDes.deserialize(jsonStrings, stringToken);
    -        assertNotNull(stringResult);
    -        assertEquals(3, stringResult.size());
    -        assertEquals("a", stringResult.get(0));
    -
    -        // Reuse integer token - should use cached type
    -        var jsonInts2 = "[10,20,30]";
    -        List<Integer> intResult2 = serDes.deserialize(jsonInts2, intToken);
    -        assertNotNull(intResult2);
    -        assertEquals(3, intResult2.size());
    -        assertEquals(10, intResult2.get(0));
    -    }
    -
    -    @Test
    -    void testSerializeAndDeserializeRoundTrip() {
    -        var original = List.of("one", "two", "three");
    -        var json = serDes.serialize(original);
    -        var token = new TypeToken<List<String>>() {};
    -
    -        List<String> result = serDes.deserialize(json, token);
    -
    -        assertEquals(original, result);
    -    }
    -
    -    static class TestObject {
    -        public String name;
    -        public int value;
    -
    -        public TestObject() {}
    -
    -        public TestObject(String name, int value) {
    -            this.name = name;
    -            this.value = value;
    -        }
    -    }
    -
    -    @Test
    -    void testDeserializeListOfCustomObjects() {
    -        var json = "[{\"name\":\"test1\",\"value\":10},{\"name\":\"test2\",\"value\":20}]";
    -        var token = new TypeToken<List<TestObject>>() {};
    -
    -        List<TestObject> result = serDes.deserialize(json, token);
    -
    -        assertNotNull(result);
    -        assertEquals(2, result.size());
    -        assertEquals("test1", result.get(0).name);
    -        assertEquals(10, result.get(0).value);
    -        assertEquals("test2", result.get(1).name);
    -        assertEquals(20, result.get(1).value);
    -    }
    -}
    diff --git a/sdk/src/test/java/software/amazon/lambda/durable/validation/ParameterValidatorTest.java b/sdk/src/test/java/software/amazon/lambda/durable/validation/ParameterValidatorTest.java
    deleted file mode 100644
    index 8387fbdf6..000000000
    --- a/sdk/src/test/java/software/amazon/lambda/durable/validation/ParameterValidatorTest.java
    +++ /dev/null
    @@ -1,372 +0,0 @@
    -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    -// SPDX-License-Identifier: Apache-2.0
    -package software.amazon.lambda.durable.validation;
    -
    -import static org.junit.jupiter.api.Assertions.*;
    -
    -import java.time.Duration;
    -import java.util.ArrayList;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.LinkedHashSet;
    -import java.util.LinkedList;
    -import java.util.List;
    -import java.util.TreeSet;
    -import java.util.concurrent.ConcurrentHashMap;
    -import java.util.concurrent.CopyOnWriteArrayList;
    -import org.junit.jupiter.api.Test;
    -import software.amazon.lambda.durable.util.ParameterValidator;
    -
    -class ParameterValidatorTest {
    -
    -    @Test
    -    void validateDuration_withValidDuration_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateDuration(Duration.ofSeconds(1), "test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateDuration(Duration.ofSeconds(10), "test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateDuration(Duration.ofMinutes(5), "test"));
    -    }
    -
    -    @Test
    -    void validateDuration_withNullDuration_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateDuration(null, "testParam"));
    -
    -        assertEquals("testParam cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateDuration_withZeroDuration_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateDuration(Duration.ofSeconds(0), "testParam"));
    -
    -        assertEquals("testParam must be at least 1 second, got: PT0S", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateDuration_withSubSecondDuration_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateDuration(Duration.ofMillis(500), "testParam"));
    -
    -        assertEquals("testParam must be at least 1 second, got: PT0.5S", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateDuration_withNegativeDuration_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateDuration(Duration.ofSeconds(-5), "testParam"));
    -
    -        assertEquals("testParam must be at least 1 second, got: PT-5S", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOptionalDuration_withNull_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalDuration(null, "test"));
    -    }
    -
    -    @Test
    -    void validateOptionalDuration_withValidDuration_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalDuration(Duration.ofSeconds(1), "test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalDuration(Duration.ofMinutes(5), "test"));
    -    }
    -
    -    @Test
    -    void validateOptionalDuration_withInvalidDuration_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateOptionalDuration(Duration.ofMillis(999), "testParam"));
    -
    -        assertEquals("testParam must be at least 1 second, got: PT0.999S", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validatePositiveInteger_withValidValue_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validatePositiveInteger(1, "test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validatePositiveInteger(100, "test"));
    -    }
    -
    -    @Test
    -    void validatePositiveInteger_withNull_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validatePositiveInteger(null, "testParam"));
    -
    -        assertEquals("testParam cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validatePositiveInteger_withZero_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validatePositiveInteger(0, "testParam"));
    -
    -        assertEquals("testParam must be positive, got: 0", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validatePositiveInteger_withNegative_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validatePositiveInteger(-5, "testParam"));
    -
    -        assertEquals("testParam must be positive, got: -5", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOptionalPositiveInteger_withNull_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalPositiveInteger(null, "test"));
    -    }
    -
    -    @Test
    -    void validateOptionalPositiveInteger_withValidValue_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalPositiveInteger(1, "test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOptionalPositiveInteger(100, "test"));
    -    }
    -
    -    @Test
    -    void validateOptionalPositiveInteger_withInvalidValue_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateOptionalPositiveInteger(0, "testParam"));
    -
    -        assertEquals("testParam must be positive, got: 0", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withNull_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(null));
    -    }
    -
    -    @Test
    -    void validateOperationName_withValidName_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("test"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("my-operation"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation_123"));
    -    }
    -
    -    @Test
    -    void validateOperationName_withEmptyString_shouldThrow() {
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOperationName(""));
    -
    -        assertEquals("Operation name cannot be empty", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withMaxLength_shouldPass() {
    -        var name = "a".repeat(ParameterValidator.MAX_OPERATION_NAME_LENGTH);
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(name));
    -    }
    -
    -    @Test
    -    void validateOperationName_exceedingMaxLength_shouldThrow() {
    -        var name = "a".repeat(ParameterValidator.MAX_OPERATION_NAME_LENGTH + 1);
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOperationName(name));
    -
    -        assertEquals(
    -                "Operation name must be less than " + ParameterValidator.MAX_OPERATION_NAME_LENGTH
    -                        + " characters, got: " + name,
    -                exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withCustomMaxLength_withNull_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(null, 100));
    -    }
    -
    -    @Test
    -    void validateOperationName_withCustomMaxLength_withValidName_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("test", 100));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("a".repeat(100), 100));
    -    }
    -
    -    @Test
    -    void validateOperationName_withCustomMaxLength_withEmptyString_shouldThrow() {
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("", 100));
    -
    -        assertEquals("Operation name cannot be empty", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withCustomMaxLength_exceedingLimit_shouldThrow() {
    -        var customMaxLength = 50;
    -        var name = "a".repeat(customMaxLength + 1);
    -        var exception = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName(name, customMaxLength));
    -
    -        assertEquals(
    -                "Operation name must be less than " + customMaxLength + " characters, got: " + name,
    -                exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withCustomMaxLength_atExactLimit_shouldPass() {
    -        var customMaxLength = 50;
    -        var name = "a".repeat(customMaxLength);
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(name, customMaxLength));
    -    }
    -
    -    @Test
    -    void validateOperationName_withSpecialCharacters_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation-name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation_name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation.name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation:name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation/name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation@name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation#name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation$name"));
    -    }
    -
    -    @Test
    -    void validateOperationName_withUnicodeCharacters_shouldThrow() {
    -        var exception1 =
    -                assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("ζ“δ½œεη§°"));
    -        assertEquals("Operation name must contain only printable ASCII characters, got: ζ“δ½œεη§°", exception1.getMessage());
    -
    -        var exception2 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("opΓ©ration"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: opΓ©ration", exception2.getMessage());
    -
    -        var exception3 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("опСрация"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: опСрация", exception3.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withWhitespace_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation name"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(" operation"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("operation "));
    -    }
    -
    -    @Test
    -    void validateOperationName_withControlCharacters_shouldThrow() {
    -        var exception1 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("operation\nname"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: operation\nname",
    -                exception1.getMessage());
    -
    -        var exception2 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("operation\tname"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: operation\tname",
    -                exception2.getMessage());
    -
    -        var exception3 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("operation\rname"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: operation\rname",
    -                exception3.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withNonPrintableASCII_shouldThrow() {
    -        // Test character below printable range (0x1F)
    -        var exception1 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("test\u001Fname"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: test\u001Fname",
    -                exception1.getMessage());
    -
    -        // Test character above printable range (0x7F - DEL)
    -        var exception2 = assertThrows(
    -                IllegalArgumentException.class, () -> ParameterValidator.validateOperationName("test\u007Fname"));
    -        assertEquals(
    -                "Operation name must contain only printable ASCII characters, got: test\u007Fname",
    -                exception2.getMessage());
    -    }
    -
    -    @Test
    -    void validateOperationName_withPrintableASCIIBoundaries_shouldPass() {
    -        // Test lower boundary (0x20 - space)
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(" "));
    -
    -        // Test upper boundary (0x7E - tilde)
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("~"));
    -
    -        // Test all printable ASCII characters
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName(
    -                "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"));
    -    }
    -
    -    @Test
    -    void validateOperationName_withSingleCharacter_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("a"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("1"));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOperationName("-"));
    -    }
    -
    -    // ========== validateOrderedCollection ==========
    -
    -    @Test
    -    void validateOrderedCollection_withNull_shouldThrow() {
    -        var exception =
    -                assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOrderedCollection(null));
    -
    -        assertEquals("items cannot be null", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withList_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(List.of("a", "b")));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new ArrayList<>(List.of(1, 2))));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new LinkedList<>(List.of("x"))));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new CopyOnWriteArrayList<>(List.of(1))));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withEmptyList_shouldPass() {
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(List.of()));
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new ArrayList<>()));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withOrderedSet_shouldPass() {
    -        // TreeSet has deterministic order and does not extend HashSet
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new TreeSet<>(List.of("a", "b"))));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withLinkedHashSet_shouldPass() {
    -        // LinkedHashSet extends HashSet but has stable insertion-order iteration β€” allowed
    -        assertDoesNotThrow(() -> ParameterValidator.validateOrderedCollection(new LinkedHashSet<>(List.of("a", "b"))));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withHashSet_shouldThrow() {
    -        var exception = assertThrows(
    -                IllegalArgumentException.class,
    -                () -> ParameterValidator.validateOrderedCollection(new HashSet<>(List.of("a"))));
    -
    -        assertEquals("items must have deterministic iteration order", exception.getMessage());
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withHashMapKeySet_shouldThrow() {
    -        var map = new HashMap<String, String>();
    -        map.put("key", "value");
    -
    -        assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOrderedCollection(map.keySet()));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withHashMapValues_shouldThrow() {
    -        var map = new HashMap<String, String>();
    -        map.put("key", "value");
    -
    -        assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOrderedCollection(map.values()));
    -    }
    -
    -    @Test
    -    void validateOrderedCollection_withConcurrentHashMapKeySet_shouldThrow() {
    -        var map = new ConcurrentHashMap<String, String>();
    -        map.put("key", "value");
    -
    -        assertThrows(IllegalArgumentException.class, () -> ParameterValidator.validateOrderedCollection(map.keySet()));
    -    }
    -}